I always use some new release of Linux distribution, so some software froze from time to time. In order to restart it, kill command can be very handy to use for it so fast and saves lot of time compared with UI prompt.
So today, we learn how to kill effectively.
Kill
First, we should understand how to use kill
. But we are surprised to find the man kill
only tell us the common format:
$ kill [signal or option] PID(s)
But what’s the signal? Which one should I choose?
Signal is a kind of inter-process communication which we can take it as a message sent between processes.
And we usually use the following three signals:
Signal Name Signal Value Behaviour
SIGHUP 1 Hangup
SIGKILL 9 Kill Signal
SIGTERM 15 Terminate
Some kinds of signal can be ignored, like SIGTERM
; but some can’t, like SIGKILL
. So what we commonly use is the following:
kill -9 pid
Find the PID
Now, we know the basic about kill. So how to get the pid?
We can try the following three commands:
$ps aux | grep 'NAME'
...
$pidof NAME
...
$pgrep NAME
...
Kill By Name
Besides to kill by pid, we can also kill be name.
$pkill -9 NAME
And if we don’t know the name of a process, but we know the process id by viewing the result of ps
(which seems not so common and convenient though).
ps -p 1337 -o command=
Here, the process is selected by its PID with -p. The -o option specifies the output format, comm meaning the command name.
It seems more convenient to use process name to kill. But sometimes, we don’t know the name exactly, if we choose the wrong process, we may screw our work. And in some other cases, the named process has many other siblings or child process, we may prefer kill just one of them (e.g. the names process is Java, and we just want to kill one of instances of jvm)
Last Word
Now we are ready to kill. But before we step ahead and really execute a kill command, we should understand that a process is like a file, it belongs to some user and have permission control:
- A user can kill all his process.
- A user can not kill another user’s process.
- A user can not kill processes System is using.
- A root user can kill System-level-process and the process of any user.
Ref
Written with StackEdit.
评论
发表评论