#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服务的访问目录,但是我又不想重启服务

#yyds干货盘点#进程管理信号和前后台执行_centos

#yyds干货盘点#进程管理信号和前后台执行_centos_02

#yyds干货盘点#进程管理信号和前后台执行_配置文件_03

kill -1 8337 不仅加载了服务,而且进程的ID号也不发生变化。如果是重启的话,进程的PID号也会发生变化的

#yyds干货盘点#进程管理信号和前后台执行_centos_04

#yyds干货盘点#进程管理信号和前后台执行_重启_05

信号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 ~]#


#yyds干货盘点#进程管理信号和前后台执行_centos_06

#yyds干货盘点#进程管理信号和前后台执行_重启_07

#yyds干货盘点#进程管理信号和前后台执行_配置文件_08

#yyds干货盘点#进程管理信号和前后台执行_重启_09

#yyds干货盘点#进程管理信号和前后台执行_centos_10

#yyds干货盘点#进程管理信号和前后台执行_重启_11

#yyds干货盘点#进程管理信号和前后台执行_重启_12


#yyds干货盘点#进程管理信号和前后台执行_centos_13

#yyds干货盘点#进程管理信号和前后台执行_配置文件_14

虽然被杀,但是改头换面复活了,变化PID为2261以后复活了,因为他的父进程是init,子进程被杀死,父进程可以救活

#yyds干货盘点#进程管理信号和前后台执行_centos_15

#yyds干货盘点#进程管理信号和前后台执行_重启_16

#yyds干货盘点#进程管理信号和前后台执行_centos_17

-9 虽然是强制杀死,但是 -15 却默认杀死

2. killall

#yyds干货盘点#进程管理信号和前后台执行_centos_18

#yyds干货盘点#进程管理信号和前后台执行_配置文件_19

killall的好处是无需关注进程编号

#yyds干货盘点#进程管理信号和前后台执行_配置文件_20

3. 利用0信号实现进程的健康性检查 

#yyds干货盘点#进程管理信号和前后台执行_重启_21

#yyds干货盘点#进程管理信号和前后台执行_重启_22

[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干货盘点#进程管理信号和前后台执行_配置文件_23


以上是关于#yyds干货盘点#进程管理信号和前后台执行的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点# 进程相关技术原理

#yyds干货盘点#进程的各种状态详解进程和内存管理相关原理

#yyds干货盘点#Linux进程

#yyds干货盘点#Linux进程

#yyds干货盘点#systemd管理服务和特性

#yyds干货盘点#启动流程和grub故障排错