#yyds干货盘点#进程管理信号和前后台执行
Posted 王华_linux
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#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号也会发生变化的
信号HUP查看
[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
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的作业控制
前台作业:通过终端启动,且启动后一直占据终端
后台作业:可通过终端启动,但启动后即转入后台运行(释放终端)
以上是关于#yyds干货盘点#进程管理信号和前后台执行的主要内容,如果未能解决你的问题,请参考以下文章