识字粗堪供赋役,不须辛苦慕公卿。这篇文章主要讲述#yyds干货盘点#进程管理信号和前后台执行相关的知识,希望能为你提供帮助。
1.
kill 信号发送kill:内部命令,可用来向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,信号名称以SIG开头(可省略),不区分大小写
[root@c7-137-mariadb-bak ~]# man 7 signal
显示当前系统可用信号:
kill -l
trap -l
1)SIGHUP无须关闭进程而让其重读配置文件 (改了配置文件,不生效,不想重启服务,让进程生效)
2)SIGINT中止正在运行的进程;相当于Ctrl+c
3)SIGQUIT相当于ctrl+\\
9)SIGKILL强制杀死正在运行的进程
15)SIGTERM 终止正在运行的进程,默认信号
18)SIGCONT 继续运行
19)SIGSTOP 后台休眠
指定信号的方法 :
信号的数字标识:1, 2, 9
信号完整名称:SIGHUP,sighup
信号的简写名称:HUP,hup
向进程发送信号:
按PID:
kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
范例:
kill -1 pid …
kill -n 9 pid
kill -s SIGINT pid
按名称:killall 来自于psmisc包
killall [-SIGNAL] comm…
按模式:
pkill [options] pattern
常用选项
-SIGNAL
-u uid: effective user,生效者
-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程
-l: 显示进程名(pgrep可用)
-a: 显示完整格式的进程名(pgrep可用)
-P pid: 显示指定进程的子进程
#比如说:我修改httpdf服务的访问目录,但是我又不想重启服务
kill -1 8337 不仅加载了服务,而且进程的ID号也不发生变化。如果是重启的话,进程的PID号也会发生变化的
【#yyds干货盘点#进程管理信号和前后台执行】
信号HUP查看
#许多服务的支持的reload操作,实际就是发送了HUP信号
#service httpd reload 即相当于 killall -1 httpd
[root@centos6 ~]#grep -A 10 -w reload -m 1 /etc/init.d/httpd
reload()
echo -n $"Reloading $prog: "
if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t > & /dev/null; then RETVAL=6
echo $"not reloading due to configuration syntax error"
failure $"not reloading $httpd due to configuration syntax error"
else
# Force LSB behaviour from killproc
LSB=1 killproc -p $pidfile $httpd -HUP
RETVAL=$?
if [ $RETVAL -eq 7 ]; then
[root@centos6 ~]#
虽然被杀,但是改头换面复活了,变化PID为2261以后复活了,因为他的父进程是init,子进程被杀死,父进程可以救活
-9 虽然是强制杀死,但是 -15 却默认杀死
2. killall
killall的好处是无需关注进程编号
3. 利用0信号实现进程的健康性检查
[root@centos8 ~]#man kill
If signal is 0, then no actual signal is sent, but error checking is still performed.
[root@centos8 ~]#killall -0 ping
[root@centos8 ~]#echo $?
0
[root@centos8 ~]#killall -0 ping
ping: no process found
[root@centos8 ~]#echo $?
1
#此方式有局限性,即使进程处于停止或僵尸状态,此方式仍然认为是进程是健康的
4. 作业管理Linux的作业控制
前台作业:通过终端启动,且启动后一直占据终端
后台作业:可通过终端启动,但启动后即转入后台运行(释放终端)
?
推荐阅读
- 如何编写跨平台C/C++代码的一些断想
- android开发之自定义圆形ImagView
- Unity3D Android手机开发环境配置
- Windows Socket网络编程学习笔记一
- 从一次Windows网络编程排错经历中得出的一个可靠拆包算法
- 跟着动画学Go数据结构之插入排序 #私藏项目实操分享#
- EasyCVR启动失败并报错LibEasySnap.dll(The specified module could not be found)
- 滑动冲突问题,触摸事件拦截处理
- #yyds干货盘点#-设计模式分享-组合模式