zoukankan      html  css  js  c++  java
  • 向进程发送信号

    我们可以使用 kill PID 杀死一个进程,或者使用 kill -9 PID 强制杀死一个进程。

    记得以前在研究生的时候师弟和师妹经常问我,kill -9 里面的 -9 是什么意思,我告诉他们,这是强制杀死进程的意思,让这个进程“九死一生”。当然这是开玩笑,这里的 -9 是信号的一种,kill 命令会向进程发送一个信号,-9代表 SIGKILL 之意,用于强制终止某个进程,当然这是一种无情地,野蛮地方式干掉进程。

    我们可以通过 kill -l 命令查看到所有的信号

    HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS

    上面的信号是有顺序的,比如第1个是 HUP,第9个是 KILL,下面两种方式是等价的:

    kill -1 PID 和 kill -HUP PID

    kill -9 PID 和 kill -KILL PID

    信号HUP通常程序用这个信号进行优雅重载配置文件,重新启动并且不影响正在运行的服务。比如

    pkill -1 uwsgi 优雅重启uwsgi 进程,对服务器没有影响

    kill -1 NGINX_PID 优雅重启nginx进程,对服务器没有影响

    除了知道可以这么使用之外,感兴趣的读者还可以自行学习,深入了解下uwsgi和nginx无损reload的机制。

    我们常用CTRL+C中断一个命令的执行,其实就是发送了一个信号到该进程

    CTRL-C 发送 SIGINT 信号给前台进程组中的所有进程,常用于终止正在运行的程序。

    CTRL-Z 发送 SIGTSTP 信号给前台进程组中的所有进程,常用于挂起一个进程。

    每个程序可能对部分信号的功能定义不一致,其它信号的含义大家可以自行学习。

  • 相关阅读:
    前端--页面提交重置功能
    ztree获取当前选中节点子节点id集合的方法(转载)
    sqlserver锁表、解锁、查看销表 (转载)
    解决前端文件修改后浏览器页面未更新的问题
    简单的上传文件
    如何在Eclipse中查看JDK以及JAVA框架的源码(转载)
    设计模式--观察者模式
    WebService 学习
    学习quartz定时
    JS 中AJAX,Fetch,Axios关系
  • 原文地址:https://www.cnblogs.com/Paul-watermelon/p/10407502.html
Copyright © 2011-2022 走看看