-
如果系统负载过高,就要找到大量占用资源的非系统进程,当硬件环境较低的情况下,这是作为系统管理员要关注的事。有些挂起的进程可以通过命令让其回复运行,而有些进程可能会一直占用CPU而不释放内存资源,长时间的占用CPU会耗尽内存使系统崩溃,对于这样的进程就要采用终止其运行的方式使其释放占用的资源。作为系统管理员要知道何时要终止和如何终止一个进程。
-
Linux系统提供了和进程间交互或通信的kill命令,通过kill命令可以使挂起的进程重新运行或强行终止占用资源的进程。可以通过kill命令向运行中的进程发送信号,让进程挂起或中断,这些信号在下面的表中。
-
向进程发送的信号:
编号 信号名称 描述 默认状态 1 SIGHUP 终止终端或进程 进程终止 2 SIGINT 来自键盘的中断,【Ctrl+C】 进程终止 3 SIGQUIT 来自键盘的退出,【Ctrl+\】 进程流产 9 SIGKILL 强迫进程终止,不可以屏蔽 进程终止 15 SIGTERM 使进程终止 进程终止 17 SIGCHLD 使子进程停止或终止 忽略 18 SIGCONT 进程继续运行,与SIGSTOP结合使用 忽略 19 SIGSTOP 进程暂停执行 进程暂停 20 SIGTSTP 来自键盘的进程挂起,【Ctrl+Z】 进程暂停
kill [-s signal|-p] [--] pid...
kill -l [signal]
·····································
signal是信号的意思,pid代表进程ID。
PID可以使用ps命令 或者 top等命令获取。
-l 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-a 当处理当前进程时,不限制命令名和进程号的对应关系
-p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s 指定发送信号
-u 指定用户
- 1、查看 kill命令 所有信号:
- 2、杀死进程号为 123456789 的进程
- 3、杀死指定用户的所有进程
- 4、强制杀死某进程
- 5、搭配 ps命令 使用
- 6、init进程不可杀
-
7、向进程发出信号的方法有kill和killall命令,kill命令可以通过进程号给进程发送信号,但是需要注意的是,执行kill命令的用户必须是进程的属主或root用户。如下所示。
$ ps PID TTY TIME CMD 3647 pts/0 00:00:00 bash 3664 pts/0 00:00:00 ps $ kill 3647
-
8、默认情况下kill命令向进程发出的是15,尽可能终止信号,也可以通过参数-s指定其他信号,如下所示。
$ ps PID TTY TIME CMD 3647 pts/0 00:00:00 bash 3664 pts/0 00:00:00 ps $ kill -s 9 3647
- 有时候向进程发送的信号会被进程忽略,可以采用参数-s指定其他信号,如9。这里需要注意的是强制终止进程可能会损坏文件。
-
9、killall命令比kill命令强大,可以指定命令名或程序名称向进程发送信号,如下。
$ ps PID TTY TIME CMD 3740 pts/0 00:00:00 bash 3761 pts/0 00:00:00 ps $ killall -s 9 bash
- 在使用kill命令或killall命令时要注意,如果操作的进程是系统重要的进程可能会破坏文件系统,这一点要注意。