文章目录
大家好,我是高胜寒,本文是Linux运维-循序渐进学运维-基础篇的第46篇文章。
kill命令属于系统进程管理命令。
1. 命令格式
kill [参数][进程号】
2. 命令功能
发送指定的信号到相应的京城,不指定型号将发送SIGTERM(15)终止进程。
3. 命令参数
参数 | 含义 |
---|---|
-l | 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称 |
-a | 当处理当前进程时,不限制命令名和进程号的对应关系 |
-p | 指定kill 命令只打印相关进程的进程号,而不发送任何信号 |
-s | 指定发送信号 |
-u | 指定用户 |
-v | 指定用户 |
–version | 显示版本信息 |
4. kill相关的命令
关闭进程3个命令:kill killall pkill
kill关闭进程:kill 进程号 关闭单个进程
killall和pkill 命令用于杀死指定名字的进程
5. 关于kill的信号
kill -l
常用的信号:
信号编号 | 信号名 | 作用 |
---|---|---|
1) | SIGHUP | 重新加载配置 |
2) | SIGINT | 键盘中断 crtl+c |
3) | SIGQUIT | 退出 |
9) | SIGKILL | 强制终止 |
15) | SIGTERM | 终止(正常结束),缺省信号 |
18) | SIGCONT | 继续 |
19) | SIGSTOP | 停止 |
20) | SIGTSTP | 暂停 crtl+z |
6. 使用方法
1) 彻底杀死进程:
查看进程id
杀死进程
[root@zmgaosh ~]# kill -9 2287
2)杀死程序
[root@zmgaosh ~]# yum install httpd #安装http[root@zmgaosh ~]# systemctl start httpd # 启动http
查看进程ID
[root@zmgaosh ~]# ps -aux |grep httproot 10448 0.0 0.1 230432 5184 ? Ss 19:48 0:00 /usr/sbin/httpd -DFOREGROUND apache 10531 0.0 0.0 230432 3000 ? S 19:48 0:00 /usr/sbin/httpd -DFOREGROUND apache 10532 0.0 0.0 230432 3000 ? S 19:48 0:00 /usr/sbin/httpd -DFOREGROUND apache 10533 0.0 0.0 230432 3000 ? S 19:48 0:00 /usr/sbin/httpd -DFOREGROUND apache 10534 0.0 0.0 230432 3000 ? S 19:48 0:00 /usr/sbin/httpd -DFOREGROUND apache 10535 0.0 0.0 230432 3000 ? S 19:48 0:00 /usr/sbin/httpd -DFOREGROUND root 13745 0.0 0.0 112728 972 pts/0 R+ 19:49 0:00 grep --color=auto http
可以看到http的进程有点多,我们如果用kill -9 需要一个一个杀死,这个使用pkill的作用就显现出来了。
pkill 或者killall 可以一次性杀死程序。
所以此处可以用
pkill -9 httpd 或killall -9 httpd
重要提示:
不要随便使用kill -9的命令,强制杀死进程不是一个好习惯。
我们平时用的kill命令,默认是kill -15, 当我们执行kill后,事实上系统内部的操作是:
- 立即停止程序
- 释放相应资源后终止程序
- 忽略该信号,继续执行程序
在退出前会做一些准备工作,比如释放资源,清理临时文件等,做完了这些操作才正式停止,如果在做准备工作的时候遇到了阻碍,应用程序会选择忽略该终止信号。
而kill -9 有时候会导致数据丢失,尤其是一些web应用,定时任务或者包含长事务的应用中,尽量不要使用kill -9. 工作中很多的服务都需要很长的时间来收尾,比如tomcat容器,dubbo服务,流量引擎等,这些地方尽快不要用 -9.
切记: 保证业务稳定安全是重中之重。
总结:
- 杀死不存在的程序会报错
- 使用kill的时候不指定信号,默认会发送信号15, 信号15是终止指定进程, 让进程在退出之前清理并释放资源
- 使用kill时候,如果加上 -9表示强制终止程序,可能会使数据丢失。
我是高胜寒,一个在教培行业不忘初心的人, 关注我,一起学习,欢迎点赞收藏,我们下篇文章再见!