kill 命令详解 系统信号
kill 命令详解 系统信号
参考:
了解Linux的进程与线程
http://www.cnblogs.com/MYSQLZOUQI/p/4234005.html
Linux就这个范儿 P532
kill -HUP pid
http://blog.csdn.net/zhuying_linux/article/details/7031573
kill -HUP pid
pid 是进程标识。如果想要更改配置而不需停止并重新启动服务,请使用该命令。在对配置文件作必要的更改后,发出该命令以动态更新服务配置。
根据约定,当您发送一个挂起信号(信号 1 或 HUP)时,大多数服务器进程(所有常用的进程)都会进行复位操作并重新加载它们的配置文件。清单 2 显示了向所有正在运行的 Web 服务器进程发送挂起信号的一种方法。
清单 2. 告诉 Web 服务器重新加载其配置文件并对文件进行复位操作
root@holy []$ ps -A | grep httpd | grep -v grep | awk '{ print $1; }' | xargs -L sudo kill -HUP
上面的命令中包含了很多的操作,所以让我们来仔细地看一下管道的每个部分。ps 和 grep 命令用来在所有的进程中搜索 httpd(并且忽略用来搜索 httpd 进程的 grep 进程)。接下来,awk 只显示输出结果中的进程 ID,并将它传递给 xargs。
然后,xargs 命令接受每个进程 ID(因为使用了 -L 1 以便一次提取一行内容),并使用 sudo kill -HUP 向相应的进程发送一个挂起信号。
LINUX和Unix都适用:
改/etc/ssh/sshd_config,将里面的Port改为新端口,比如10022,然后 kill -HUP `cat /var/run/sshd.pid` 就行了。
现有连接自己不会断,因为kill -HUP `cat /var/run/sshd.pid` 只是HUP监听的那个,已经建立的连接(不同的 pid)不会断。
vi /etc/ssh/sshd_config /etc/init.d/sshd restart
kill -HUP `cat /var/run/sshd.pid`
#测试发现 restart和kill的效果都是一样,原有连接无问题,新建连接连不上
然后你在现有账号下面exit,在用新的端口登陆就可以了。
PS:
HUP(1)是让进程挂起,睡眠;
kill (9)六亲不认的杀掉
term(15)正常的退出进程
因为进程可能屏蔽某些信号,所以它们的用处也就不一样。。
http://www.cnblogs.com/peida/archive/2012/12/20/2825837.html
Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令。通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须用kill命令来终止,我们就需要先使用ps/pidof/pstree/top等工具获取进程PID,然后使用kill命令来杀掉该进程。kill命令是通过向进程发送指定的信号来结束相应进程的。在默认情况下,采用编号为15的TERM信号。TERM信号将终止所有不能捕获该信号的进程。对于那些可以捕获该信号的进程就要用编号为9的kill信号,强行“杀掉”该进程。
trap命令捕捉信号
bash 自带trap命令 就是捕捉信号的
语法:
trap '执行的命令' 信号 捕捉到该信号 执行单引号里的命令
实例
trap 'cat /etc/fstab' INIT
1.命令格式:
kill[参数][进程号]
2.命令功能:
发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。
3.命令参数:
-l 打印信号编号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-a 当处理当前进程时,不限制命令名和进程号的对应关系
-p 只打印相关进程的进程号,而不发送任何信号
-s 指定发送信号
-u 指定用户,kill某个用户的所有进程
注意:
1、kill命令可以带信号号码选项,也可以不带。如果没有信号号码,kill命令就会发出终止信号(15),这个信号可以被进程捕获,使得进程在退出之前可以清理并释放资源。也可以用kill向进程发送特定的信号。例如:
kill -2 123
它的效果等同于在前台运行PID为123的进程时按下Ctrl+C键。但是,普通用户只能使用不带signal参数的kill命令或最多使用-9信号。
2、kill可以带有进程ID号作为参数。当用kill向这些进程发送信号时,必须是这些进程的主人。如果试图撤销一个没有权限撤销的进程或撤销一个不存在的进程,就会得到一个错误信息。
3、可以向多个进程发信号或终止它们。
4、当kill成功地发送了信号后,shell会在屏幕上显示出进程的终止信息。有时这个信息不会马上显示,只有当按下Enter键使shell的命令提示符再次出现时,才会显示出来。
5、应注意,信号使进程强行终止,这常会带来一些副作用,如数据丢失或者终端无法恢复到正常状态。发送信号时必须小心,只有在万不得已时,才用kill信号(9),因为进程不能首先捕获它。要撤销所有的后台作业,可以输入kill 0。因为有些在后台运行的命令会启动多个进程,跟踪并找到所有要杀掉的进程的PID是件很麻烦的事。这时,使用kill 0来终止所有由当前shell启动的进程,是个有效的方法。
4.使用实例:
实例1:列出所有信号名称
命令:
kill -l
输出:
[root@localhost test6]# kill -l
0) EXIST 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
说明:
只有第9种信号(SIGKILL)才可以无条件终止进程,SIGKILL信号进程无法捕获,进程也不得不无条件终止,其他信号进程都有权利忽略
HUP 1 终端断线
INT 2 中断(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 终止
KILL 9 强制终止
CONT 18 继续(与STOP相反, fg/bg命令)
STOP 19 暂停(同 Ctrl + Z)
CHLD 17 父进程或init进程进行收拾僵尸进程用到的信号
ILL 4 非法访问 进程接收信号有两种:同步和异步 同步信号比如SIGILL(非法访问) trap命令 同步信号也称为陷阱,异步信号如kill, 异步信号也称为中断。
SIGRTMIN 信号请求号介于SIGRTMIN和SIGRTMAX之间的信号是可靠的也叫实时信号,除此之外的都是不可靠的,也叫非实时信号
SIGRTMAX 信号请求号介于SIGRTMIN和SIGRTMAX之间的信号是可靠的也叫实时信号,除此之外的都是不可靠的,也叫非实时信号
kill -0 pid 不发送任何信号,但是系统会进行错误检查。
所以经常用来检查一个进程是否存在,存在返回0;不存在返回1
man手册里:
The signals listed below may be available for use with kill. When known constant, numbers and default behavior are shown.
Name Num Action Description
0 0 n/a exit code indicates if a signal may be sent
实例2:得到指定信号的数值
命令:
输出:
[root@localhost test6]# kill -l KILL
9[root@localhost test6]# kill -l SIGKILL
9[root@localhost test6]# kill -l TERM
15[root@localhost test6]# kill -l SIGTERM
15[root@localhost test6]#
说明:
实例3:先用ps查找进程,然后用kill杀掉
命令:
kill 3268
输出:
[root@localhost test6]# ps -ef|grep vim
root 3268 2884 0 16:21 pts/1 00:00:00 vim install.log
root 3370 2822 0 16:21 pts/0 00:00:00 grep vim
[root@localhost test6]# kill 3268
[root@localhost test6]# kill 3268
-bash: kill: (3268) - 没有那个进程
[root@localhost test6]#
说明:
实例4:彻底杀死进程
命令:
kill –9 3268
输出:
[root@localhost test6]# ps -ef|grep vim
root 3268 2884 0 16:21 pts/1 00:00:00 vim install.log
root 3370 2822 0 16:21 pts/0 00:00:00 grep vim
[root@localhost test6]# kill –9 3268
[root@localhost test6]# kill 3268
-bash: kill: (3268) - 没有那个进程
[root@localhost test6]#
说明:
实例5:杀死指定用户所有进程
命令:
kill -9 $(ps -ef | grep peidalinux)
kill -u peidalinux
输出:
[root@localhost ~]# kill -9 $(ps -ef | grep peidalinux)
[root@localhost ~]# kill -u peidalinux
说明:
方法一,过滤出hnlinux用户进程并杀死
实例6:init进程是不可杀的
命令:
kill -9 1
输出:
[root@localhost ~]# ps -ef|grep init
root 1 0 0 Nov02 ? 00:00:00 init [3]
root 17563 17534 0 17:37 pts/1 00:00:00 grep init
[root@localhost ~]# kill -9 1
[root@localhost ~]# kill -HUP 1
[root@localhost ~]# ps -ef|grep init
root 1 0 0 Nov02 ? 00:00:00 init [3]
root 17565 17534 0 17:38 pts/1 00:00:00 grep init
[root@localhost ~]# kill -KILL 1
[root@localhost ~]# ps -ef|grep init
root 1 0 0 Nov02 ? 00:00:00 init [3]
root 17567 17534 0 17:38 pts/1 00:00:00 grep init
[root@localhost ~]#
说明:
init是Linux系统操作中不可缺少的程序之一。所谓的init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。 其它所有进程都是init进程的子孙。init进程是不可杀的!
kill 命令详解 系统信号的更多相关文章
- kill命令详解
基础命令学习目录首页 原文链接:https://www.cnblogs.com/wangcp-2014/p/5146343.html 1.命令格式: kill[参数][进程号] 2.命令功能: 发送指 ...
- linux kill命令详解
1.命令格式: kill[参数][进程号] 2.命令功能: 发送指定的信号到相应进程.不指定型号将发送SIGTERM(15)终止指定进程.如果任无法终止该程序可用“-KILL” 参数,其发送的信号为S ...
- linux命令总结kill命令详解
1.作用 kill命令用来中止一个进程. 2.格式 kill [ -s signal | -p ] [ -a ] pid ... kill -l [ signal ] 3.参数 -s:指定发送的信号. ...
- killall 、kill 、pkill 命令详解 【转】
之前常用地kill 命令就是 kill -9 XXid;kill -15 XXid;pkill 进程名: 今天发现killall也有适用场景,killall命令对杀死进程组(一个进程中有多线程的情况) ...
- [r]Ubuntu Linux系统下apt-get命令详解
Ubuntu Linux系统下apt-get命令详解(via|via) 常用的APT命令参数: apt-cache search package 搜索包 apt-cache show package ...
- LINUX系统VMSTAT命令详解
linux系统vmstat命令详解 [转自 https://www.cnblogs.com/wensiyang0916/p/6514820.html] vmstat 1 1表示每秒采集一次vms ...
- Linux主要shell命令详解(上)
[摘自网络] kill -9 -1即实现用kill命令退出系统 Linux主要shell命令详解 [上篇] shell是用户和Linux操作系统之间的接口.Linux中有多种shell,其中缺省使用的 ...
- Linux就业技术指导(五):Linux运维核心管理命令详解
一,Linux核心进程管理命令 1.1 ps:查看进程 1.1.1 命令解释 功能说明 ps命令用于列出执行ps命令的那个时刻的进程快照,就像用手机给进程照了一张照片.如果想要动态地显示进程,就需要使 ...
- bg,fg,job命令详解
基础命令学习目录首页 原文链接:http://www.cnblogs.com/chjbbs/p/6307333.html linux提供的fg和bg命令,可以让我们轻松调度正在运行的任务 假如你发现前 ...
随机推荐
- mysql root密码破解
破解root密码:方法一:1./etc/my.cnf在[mysqld]段中加入skip-grant-table2.重启mysql3.直接mysql登录3.通过修改权限表方式修改mysql密码(upda ...
- 为公司无线网络启用802.1x协议
1. EAP类型: EAP-PEAP, EAP-TLS, EAP-TTLS, EAP-MD5 TLS需要客户端服务器端都有证书; 而PEAP和TTLS只需要服务器端证书. 2. 身份验证协议: PAP ...
- 【液晶模块系列基础视频】5.1X-GUI字体驱动1
============================= 技术论坛:http://www.eeschool.org 博客地址:http://xiaomagee.cnblogs.com 官方网店:ht ...
- Codeforeces 707B Bakery(BFS)
B. Bakery time limit per test 2 seconds memory limit per test 256 megabytes input standard input out ...
- IIS5与IIS6 应用程序生命周期和页生命周期
在写这篇博客之前,知好多前辈已经写过,自己班门弄斧,主要是加深自己对细节的理解,另一方面希望对浏览此篇文章的读者一个新的认识.注定是一长篇.肯定有新的认识,图示都是原创. 此篇所有牵涉的细节,我会一一 ...
- Java学习资源
Java技术路线图 指路明灯 一位资深程序员大牛给予Java初学者的学习路线建议 Java源码阅读的真实体会 概要 JDK发展历程 Java项目经验 基于java平台的常用资源 官方文档 Java™ ...
- eclipse怎么显示代码行数
熟悉java开发的朋友们肯定有这样的经验,那就是在用eclipse进行java开发的时候,没有显示代码的行数,这并不利于我们进行程序的调试.今天,小编就来教大家eclipse怎么显示代码行数 ...
- DS实验题 Old_Driver UnionFindSet结构 指针实现邻接表存储
题目见前文:DS实验题 Old_Driver UnionFindSet结构 这里使用邻接表存储敌人之间的关系,邻接表用指针实现: // // main.cpp // Old_Driver3 // // ...
- DS实验题 地鼠安家
★实验任务 fd是一个公认的美丽校园.一天,fd来了一群地鼠,编号为1到n,他们希望在这里定居.现在先由第一只地鼠往下打一个单位的距离,并且在那里安家.对于每一个已经安家的地鼠,如果他左下或右下没有邻 ...
- Web 在线文件管理器学习笔记与总结(9)下载文件
① 普通形式的文件可以使用超链接形式下载 <a href = '下载文件名'>点击下载</a> ② 如果下载图片.html 等类型的文件,使用header() 函数发送网页头信 ...