Control+Z is used for suspending a process by sending it the signal SIGSTOP
, which cannot be intercepted by the program. While Control+C is used to kill a process with the signal SIGINT
, and can be intercepted by a program so it can clean its self up before exiting, or not exit at all.
If you suspend a process, this will show up in the shell to tell you it has been suspended:
[1]+ Stopped yes
However, if you kill one, you won't see any confirmation other than being dropped back to a shell prompt. When you suspend a process, you can do fancy things with it, too. For instance, running this:
fg
With a program suspended will bring it back to the foreground.
And running the command
bg
With a program suspended will allow it to run in the background (the program's output will still go to the TTY, though).
If you want to kill a suspended program, you don't have to bring it back with fg
first, you can simply do the command:
kill %1
If you have multiple suspended commands, running
jobs
will list them, like this:
[1]- Stopped pianobar
[2]+ Stopped yes
Using %#
, where #
is the job number (the one in square brackets from the jobs
output) with bg
, fg
, or kill
, can be used to do the action on that job.
2@adityamenon Find the executable name, for example
amarok
and runkillall amarok
, or runps aux
and find the process id next to the executable name and runkill {process id}
. – Bruno Finger – 2016-03-10T11:12:53.4203You can change which keys do which job by using the
stty
command. For examplestty susp ^Z
orstty intr ^C
. – RedGrittyBrick – 2011-03-27T12:08:22.3877Actually, it sends SIGTSTP, which can be intercepted. – Simon Richter – 2011-03-28T07:28:21.263
2Cool! So if a program is refusing to die with Ctrl+C how do you force kill it? – Aditya M P – 2013-10-05T07:05:50.457