Linux是如何结束一个进程的?

    你是否曾经遇到过启动应用程序,而在使用该应用程序时突然变得无响应并意外崩溃的情况?你尝试再次启动该应用程序,但没有任何反应,因为原始应用程序进程从未真正完全关闭。文章源自技术奇点-https://www.xerer.com/archives/33031.html

    普通用户可以杀死自己的进程,但不能杀死属于其他用户的进程,而root用户可以杀死所有进程。文章源自技术奇点-https://www.xerer.com/archives/33031.html

    系统kill信号

    killkillall可以将给定信号发送到指定的进程或进程组。当没有指定信号时,两个工具都会发送-15(-TERM)。文章源自技术奇点-https://www.xerer.com/archives/33031.html

    最常用的信号是:文章源自技术奇点-https://www.xerer.com/archives/33031.html

    • 1(-HUP):重新启动进程。
    • 9 (-KILL):杀死一个进程。
    • 15 (-TERM):正常停止进程。

    可以通过三种不同的方式指定信号:文章源自技术奇点-https://www.xerer.com/archives/33031.html

    • 使用带有SIG前缀(例如-SIGHUP)
    • 使用数字(例如-1)
    • 不带SIG前缀(例如-HUP) 。

    使用-l选项列出所有可用信号:文章源自技术奇点-https://www.xerer.com/archives/33031.html

    kill -l  # or killall -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
    16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
    21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
    26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
    31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
    38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
    43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
    48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
    53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
    58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
    63) SIGRTMAX-1  64) SIGRTMAX
    

    使用kill命令终止进程

    要使用kill命令终止进程,首先需要找到进程PID。你可以使用不同的命令来执行此操作,例如top, ps ,pidofpgrep文章源自技术奇点-https://www.xerer.com/archives/33031.html

    假设我们的Firefox浏览器已无法响应,你需要取消Firefox进程。要找到过程PID,请使用pidof命令:文章源自技术奇点-https://www.xerer.com/archives/33031.html

    pidof firefox文章源自技术奇点-https://www.xerer.com/archives/33031.html

    以上命令将显示所有Firefox进程:文章源自技术奇点-https://www.xerer.com/archives/33031.html

    2551 2514 1963 1856 1771
    

    一旦你知道Firefox处理PID以终止所有PID,请输入:文章源自技术奇点-https://www.xerer.com/archives/33031.html

    kill -9 2551 2514 1963 1856 1771
    

    使用killall命令终止进程

    killall命令终止与指定名称匹配的所有程序。文章源自技术奇点-https://www.xerer.com/archives/33031.html

    使用与之前相同的方案,我们可以通过键入以下命令来终止Firefox进程:文章源自技术奇点-https://www.xerer.com/archives/33031.html

    killall -9 firefox文章源自技术奇点-https://www.xerer.com/archives/33031.html

    killall接受几个选项,例如指定使用用户身份运行的进程,使用正则表达式以及根据创建时间终止进程。你可以通过键入killall(不带任何参数)来获得所有选项的列表。文章源自技术奇点-https://www.xerer.com/archives/33031.html

    例如,如果我们要终止以用户身份运行的所有进程rumenz,则可以运行以下命令:文章源自技术奇点-https://www.xerer.com/archives/33031.html

    killall -u rumenz文章源自技术奇点-https://www.xerer.com/archives/33031.html

    杀死运行时间超过 5h 的进程文章源自技术奇点-https://www.xerer.com/archives/33031.html

    killall -o 5h文章源自技术奇点-https://www.xerer.com/archives/33031.html

    杀死进行时间小于 4h 的进程文章源自技术奇点-https://www.xerer.com/archives/33031.html

    killall -y 4h文章源自技术奇点-https://www.xerer.com/archives/33031.html

    默认情况下,killall 命令是大小写敏感的,所以我们如果写错大小写,将无法正确杀死进程。文章源自技术奇点-https://www.xerer.com/archives/33031.html

    killall -I NGINX文章源自技术奇点-https://www.xerer.com/archives/33031.html

    等待直到某个进程被终止,可以使用 -w 选项,其中 w 代表 wait文章源自技术奇点-https://www.xerer.com/archives/33031.html

    killall -w文章源自技术奇点-https://www.xerer.com/archives/33031.html

    使用pkill命令终止进程

    pkill使用正则表达式来匹配进程名称。文章源自技术奇点-https://www.xerer.com/archives/33031.html

    ps -eo pid,cmd  | grep ssh
    1039 sshd
    2257 ssh-agent
    6850 ssh
    31279 ssh-agent
    

    通过正则批量关闭文章源自技术奇点-https://www.xerer.com/archives/33031.html

    pkill '^ssh$'文章源自技术奇点-https://www.xerer.com/archives/33031.html

    文章源自技术奇点-https://www.xerer.com/archives/33031.html
    weinxin
    微信公众号
    扫码关注公众号获取资源下载及吃瓜爆料

    发表评论

    匿名网友