Here https://unix.stackexchange.com/a/104825/109539 man says that to stop background process kill + PID must be used. However I can't stop background process using kill +PID, only kill + JOB ID [KPE@home Temp]$ jobs[KPE@home Temp]$ ps  PID TTY          TIME CMD13270 pts/0    00:00:00 bash23257 pts/0    00:00:00 ps[KPE@home Temp]$ mc &[1] 23258[KPE@home Temp]$ ps                             PID TTY          TIME CMD13270 pts/0    00:00:00 bash23258 pts/0    00:00:00 bash23262 pts/0    00:00:00 mc23264 pts/0    00:00:00 ps[1]+  Stopped                 . /usr/libexec/mc/mc-wrapper.sh[KPE@home Temp]$ kill -s 15 23262[KPE@home Temp]$ ps  PID TTY          TIME CMD13270 pts/0    00:00:00 bash23258 pts/0    00:00:00 bash23262 pts/0    00:00:00 mc23266 pts/0    00:00:00 ps[KPE@home Temp]$ kill %1[1]+  Terminated              . /usr/libexec/mc/mc-wrapper.sh[KPE@home Temp]$ ps  PID TTY          TIME CMD13270 pts/0    00:00:00 bash23267 pts/0    00:00:00 ps[KPE@home Temp]$ So the question - how to stop bg process via kill by pid
Linux stop background process via kill + PID
background process;job control
If you C-Z the mc program (=send it a SIGSTP or SIGSTOP = suspend it (will show as Stopped in the shell)), it won't be immediately receptive to  any more signals (other than SIGKILL, but using that one isn't very nice) until it is resumed. Once you resume it with SIGCONT, it will accept your SIGTERM signal (and the signals that queued up for it while it was suspended).kill -CONT $!; kill -TERM $! # $! refers to the pid of the last-spawned jobkill %1 works because shell's built-in kill probably does these two steps under the hood.