在管理进程,特别是终止进程时,正确确定 PID 是非常重要。此外,如果以这种方式使用 top ,每当这些进程中的一个停止或一个新进程开始时,top 都需要被告知有新的进程。
终止进程
KILL
有趣的是,没有 stop 命令。在 Linux 中,有 kill 命令。kill 用于向进程发送信号。最常用的信号是“终止”(SIGTERM )或“杀死”(SIGKILL )。然而,还有更多。下面是一些例子。完整的列表可以用 kill -L 显示。
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
注意第 9 号信号是 SIGKILL ,通常,我们会发出比如 kill -9 20896 这样的命令。默认信号是 15,这是 SIGTERM 。请记住,许多应用程序都有自己的停止方法。Nginx 使用 -s 选项传递信号,如 stop 或 reload 。通常,我更喜欢使用应用程序的特定方法来停止操作。然而,我将演示用 kill 命令来停止 Nginx 进程 20896,然后用 pgrep 确认它已经停止。PID 20896 就不再出现。
alan@workstation:~$ kill -9 20896 alan@workstation:~$ pgrep nginx 20881 20882 20895 22123
PKILL
命令 pkill 类似于 pgrep ,因为它可以按名称搜索。这意味着在使用 pkill 时必须非常小心。在我的 Nginx 示例中,如果我只想杀死一个 Nginx 实例,我可能不会选择使用它。我可以将 Nginx 选项 -s stop 传递给特定的实例来消除它,或者我需要使用 grep 来过滤整个 ps 输出。
/home/alan/web/prod/nginx/sbin/nginx -s stop /home/alan/web/prod/nginxsec/sbin/nginx -s stop
如果我想使用 pkill ,我可以包括 -f 选项,让 pkill 过滤整个命令行参数。这当然也适用于 pgrep 。所以,在执行 pkill -f 之前,首先我可以用 pgrep -a 确认一下。
alan@workstation:~$ pgrep -a nginx 20881 nginx: master process ./nginx -p /home/alan/web/prod/nginxsec 20882 nginx: worker process 20895 nginx: master process nginx 20896 nginx: worker process
我也可以用 pgrep -f 缩小我的结果。pkill 使用相同参数会停止该进程。
alan@workstation:~$ pgrep -f nginxsec 20881 alan@workstation:~$ pkill -f nginxsec
pgrep (尤其是 pkill )要记住的关键点是,您必须始终确保搜索结果准确性,这样您就不会无意中影响到错误的进程。
大多数这些命令都有许多命令行选项,所以我总是建议阅读每一个命令的 man 手册页。虽然大多数这些命令都存在于 Linux、Solaris 和 BSD 等平台上,但也有一些不同之处。在命令行工作或编写脚本时,始终测试并随时准备根据需要进行更正。
【编辑推荐】
- Linux的10个最危险的命令
- Linux中find命令用法全汇总,看完就没有不会用的!
- 如何在Linux中压缩和解压缩文件
- Filelight:可视化查看Linux系统上的磁盘使用情况
- 如何从Linux的文件管理器中加密文件
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0
(编辑:ASP站长网)
|