Linux信号量

一、信号量

  一)kill命令

  用于终止指定的进程(terminate a process),是 Unix/Linux 下进程管理的常用命令。

  1、用途

  通常在需要终止某个或某些进程时,先使用 ps/pidof/pstree/top 等工具获取进程 pid,然后用 kill 杀掉进程。

  向指定的进程或进程组发送信号(The command kill sends the specified signal to the specified process or process group),或者确定进程号为 pid 的进程是否还在。例如,许多程序都

HUP 信号作为重新读取配置文件的触发条件。

  2、kill的命令格式
kill <pid>  
等价于 (TERM是默认信号量)
kill -TERM <pid>

  发送 TERM 信号到指定进程,如果进程没有捕获该信号,则进程终止

  3、kill可操作的信号量
# kill -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    

  二)信号量大全

编号信号名称缺省动作说明
1SIGHUP终止挂起,终止控制终端或进程
2SIGINT终止键盘产生的中断(Ctrl-C)
3SIGQUITdump键盘产生的退出
4SIGILLdump非法指令
5SIGTRAPdumpdebug中断
6SIGABRT/SIGIOTdump异常中止
7SIGBUS/SIGEMTdump总线异常/EMT指令
8SIGFPEdump浮点运算溢出
9SIGKILL终止强制进程终止;不能被捕获
10SIGUSR1终止用户信号,进程可自定义用途
11SIGSEGVdump非法内存地址引用
12SIGUSR2终止用户信号,进程可自定义用途
13SIGPIPE终止向某个没有读取的管道中写入数据
14SIGALRM终止时钟中断(闹钟)
15SIGTERM终止常规的进程终止
16SIGSTKFLT终止协处理器栈错误
17SIGCHLD忽略子进程退出或中断
18SIGCONT继续如进程停止状态则开始运行
19SIGSTOP停止停止进程运行,不能被捕获
20SIGSTP停止键盘产生的停止,可以被捕获
21SIGTTIN停止后台进程请求输入
22SIGTTOU停止后台进程请求输出
23SIGURG忽略socket发生紧急情况
24SIGXCPUdumpCPU时间限制被打破
25SIGXFSZdump文件大小限制被打破
26SIGVTALRM终止虚拟定时时钟
27SIGPROF终止profile timer clock
28SIGWINCH忽略窗口尺寸调整
29SIGIO/SIGPOLL终止I/O可用
30SIGPWR终止电源异常
31SIGSYS/SYSUNUSEDdump系统调用异常

  三)常用信号量

  1、HUP
kill -s HUP pid
HUP 1 终端断线

  让 Linux 缓和的执行进程关闭,然后重启。在对配置文件修改后需要重启进程时可发送此信号。

  两种解释

  1. 被许多守护进程理解为一个重置请求.如果一个进程不用重新启动就能重新读取它的配置文件并调整自己以适应变化的话,那么HUP通常来触发这种行为.
  2. 由终端驱动程序生成,试图来"清除"(终止)跟某个特定终端相连的进程.
    例如:
    某个终端会话结束时,或者当调制解调器被挂断时,shell后台不接受HUP的信号的影响.有的用户可使用nohup来模仿这种行为.

  重启命令

ExecReload=/bin/kill -s HUP $PID
  2、INT
INT 2 中断(同 Ctrl + C)

  当用户键入时由终端驱动程序发送的信号.这是一个终止当前操作的请求.如果捕获了这个信号,一些简单的程序应该退出,或者允许自给被终止,这也是程序没有捕获到这个信号时的默认处理方法.拥有命令行或者输入模式的那些程序应该停止它们在做的事情,清除状态,并等待用户的再次输入.

  3、QUIT
QUIT 3 退出(同 Ctrl + \)

  停止命令

ExecStop=/bin/kill -s QUIT $PID

  QUIT和TERM类似----不同的是:它会生成内存转储

  4、KILL
kill -s KILL pid
KILL 9 强制终止

  同

kill -9 pid

  这个强大和危险的命令迫使进程在运行时突然终止,进程在结束后不能自我清理。

  危害
  导致系统资源无法正常释放,一般不推荐使用,除非其他办法都无效。

  立即把进程无条件的杀掉

  5、TERM
kill -s TERM pid
TERM 15 终止

  友好告诉进程退出,进程先保存好数据,再正常退出。

  给父进程发送一个 TERM 信号,试图杀死它和它的子进程。

  请求彻底终止某项执行操作.它期望接收进程清除自给的状态并退出

  6、CHLD
CHLD 17 中断或停止

  当一个进程中断或停止,一个 CHLD 信号被发送给父进程

  默认情况下这个信号会被忽略,所以父进程必须捕获这个信号,如果他想被通知,无论什么时候一个子进程的状态发生改变。

  通常的做法是:在一个信号捕获函数,调用一个wait 函数,去捕获子进程的ID 和结束终止状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值