当Linux系统中的进程开始表现得很异常时,你需要为了整个系统的运行状况而停止它,以下实用程序将帮助你找到该过程并将其停止。在我们开始之前,正如我们所知,每个Linux进程都有一个进程标识(PID),我们将不得不寻找感兴趣的特定PID,为此,我们可以使用以下工具。
使用ps命令 此命令报告当前进程的快照。 要列出所有进程,只需运行即可: $ ps -A 例如,要过滤输出,可以使用管道来获得所需的确切过程: $ ps aux | grep apa 这将列出其进程名称中包含上述字母的所有进程,从那里,你可以缩小范围并获得罪魁祸首的确切PID。 作为命令库中的替代品,还可以使用pidof或pgrep,如下所示: $ pidof zsh 这将返回zsh进程的PID: $ pgrep zsh 这也将返回zsh进程的PID。 发现PID后,下一步是停止该过程,这里有各种工具,例如:kill、killall、pkill、top等,参考Linux进程管理:用kill和killall命令杀死进程。 只要你具有自行停止进程的权限,就必须意识到这些命令是有效的,如果你没有足够的权限来杀掉其他用户的进程,它们将无法正常工作,但是你可以杀掉你自己的进程。 root用户是超级用户,可以杀掉属于系统中任何其他用户的任何进程。
使用kill命令在Linux上终止进程 kill向进程发送信号,信号可以是: 1、SIGHUP可以用1表示并使进程挂起。 2、SIGKILL可以用9表示,并导致该过程被非常恶意地杀掉。 3、SIGTERM,可以用15表示,并使该过程优雅地被杀掉。 如果执行kill命令时没有选项,则默认使用SIGTERM。 kill的例子: 使用PID 7089终止进程而不保存任何打开的文件: $ kill -9 7089 $ kill -SIGKILL 7089 在确保保存所有文件后,使用PID 7080终止进程,这是优雅地杀掉进程: $ kill -15 7080 $ kill -SIGTERM 7080 你可以利用的另一个命令是killall命令,如果你知道进程的名称,则无需查找其PID, killall按名称杀掉它,如下所示。 有关更多选项,请运行: $ man kill
使用killall命令在Linux上终止进程 killall命令按照上面规定的名称杀掉进程,运行以下命令: $ killall httpd 要了解更多信息,请查看手册页: $ man killall
使用pkill命令在Linux上终止进程 根据名称和其他属性发出信号流程,pkill的工作方式与killall类似,它的语法很简单: $ pkill [options] pattern pkill根据名称和其他属性向进程发送信号。 如果你知道要传递命令的进程的名称以及进程的名称,则使用pkill非常简单,如下所示,它默认使用SIGTERM信号,但如果你愿意,可以改变它: $ pkill nginx 所有命令选项: $ pkill --help 用法: pkill [options] <pattern> 选项: - <sig>, - 信号<sig>要发送的信号(数字或名称) -e, - echo显示被杀的内容 -c, - 匹配进程的计数 -f, - fulll使用完整的进程名称来匹配 -g,--pgroup <PGID,...>匹配列出的进程组ID -G, - group <GID,...>匹配实际组ID -i, - ignore-case匹配大小写不敏感 -n, - 最近选择最近开始 -o, - 最近选择最近最少开始 -P, - parent <PPID,...>仅匹配给定父级的子进程 -s, - session <SID,...>匹配会话ID -t, - terminal <tty,...>通过控制终端匹配 -u, - egid <ID,...>匹配有效ID -U, - uid <ID,...>按真实ID匹配 -x, - 完全匹配命令名称 -F, - pidfile <file>从文件中读取PID 如果未锁定PID文件,则-L, - logpidfile失败 --ns <PID>匹配属于它的进程,名称空间为<pid> --nslist <ns,...>列出将考虑的命名空间,--ns选项。可用的命名空间:ipc,mnt,net,pid,user,uts -h, - help显示此帮助并退出 -V, - version输出版本信息并退出 参考:用which、nohup、ps、pgrep、pidof、top、kill、pkill来管理进程。
使用top命令在Linux上终止进程 你可以使用top命令在运行时通过其交互式会话终止进程。 要直接从“top”界面终止进程,请按“k”,它会询问你要杀掉的进程的PID,输入PID并按Enter键: top - 10:07:55 up 1 day, 22:09, 0 users, load average: 0.52, 0.58, 0.59 Tasks: 4 total, 1 running, 3 sleeping, 0 stopped, 0 zombie %Cpu(s): 4.7 us, 3.5 sy, 0.0 ni, 91.0 id, 0.0 wa, 0.7 hi, 0.0 si, 0.0 st KiB Mem : 16669896 total, 2348244 free, 14092300 used, 229352 buff/cache KiB Swap: 50331648 total, 49101952 free, 1229696 used. 2443864 avail Mem PID to signal/kill [default pid = 1] 10000 它默认使用SIGTERM信号,如下所示,只需再次按回车键,top将完成剩下的工作: top - 10:07:55 up 1 day, 22:09, 0 users, load average: 0.52, 0.58, 0.59 Tasks: 4 total, 1 running, 3 sleeping, 0 stopped, 0 zombie %Cpu(s): 4.7 us, 3.5 sy, 0.0 ni, 91.0 id, 0.0 wa, 0.7 hi, 0.0 si, 0.0 st KiB Mem : 16669896 total, 2348244 free, 14092300 used, 229352 buff/cache KiB Swap: 50331648 total, 49101952 free, 1229696 used. 2443864 avail Mem Send pid 10000 signal [15/sigterm] 要了解更多信息,请查看手册页: $ man top
相关主题 |