如何停止linux下正在执行的ping命令

Ctrl+C 停止。
Ctrl+D 不可靠。
数据包数量 参数 停止。
曼平信息。

如何在Linux中终止进程?使用kill命令安全结束指定进程运行

说实话,说到Linux下杀进程,我还是摸着石头过河。
使用kill命令是一个考验你诚实技巧的技巧。
如果使用不好,轻则系统死机,重则导致蓝屏。
我给大家讲讲我这十年来的血与泪的经验。

先说最基本的。
要杀死该进程,您需要知道 PID。
当我第一次接手服务器时,我看到系统已经满了,CPU达到了9 0%以上。
我急得满头大汗。
打开ps aux看看哦!有数百个流程,我不知道该关注哪一个。
后来师傅教我先用ps aux | 找PID grep nginx,第二个字段是PID,直接kill 1 2 3 4 ,优雅退出。
但有一次我不小心杀掉了apache,整个网站都瘫痪了,这是非常痛苦的。

有趣的是,并非所有进程都可以被随机终止。
我遇到过权限不够的情况,普通用户连自己都杀不了。
我记得有一次我安装了一个新软件,但它疯狂地占用CPU,我无法杀死它。
最后只好sudo su,进去一看,好家伙,是系统服务。
直接杀掉1 2 3 4 根本不行,那东西绝对不会退缩。
后来我了解到这种系统守护进程需要systemctl stop service_name,或者只是重新启动。

说到信号类型,一开始我分不清TERM和KILL之间的区别。
当系统崩溃时,我急得用kill -9 来杀死任何进程。
结果mysqld被杀了,数据库爆炸了。
花了半天时间才恢复数据,我后悔了。
说白了,TERM就是给进程一个收拾走人的机会,而KILL就是不顾一切地直接暴力撕下来。
除非进程卡住,否则请尝试使用 TERM。

另一个陷阱是僵尸进程。
我曾经运行一个 cron 作业并编写一个脚本来每天清晨清理日志。
结果脚本出现了bug,无法正常退出,变成了僵尸。
使用 ps aux | grep cron 发现有一个进程处于Z状态。
Kill -9 也不起作用。
最后,我检查了手册页,发现我必须中止父进程。
那一次我吸取了教训,在剧本里加了一个鱼钩,如果我犯了错误我就会自杀。

我以前使用过自动化脚本。
我为网站服务器编写了一个监控脚本。
当我注意到某个进程的CPU突然增加到3 00%时,它自动杀死了它并向我发送了一封电子邮件。
但是当它杀死了错误的进程并杀死了后台同步进程时,导致数据同步失败。
后来我在脚本中添加了确认机制。
在我杀之前我问了“确认杀?(y/n)”,所以就没有更多的问题了。

我现在经常使用 htop,它比 top 直观得多。
CPU、内存、IO一目了然,颜色标注清晰。
它也是系统化的。
我管理多项服务。
我可以使用systemctl status一目了然地知道状态。
systemctl restart 比kill 命令干净得多。

一般来说,在终止进程时你必须给三个余地。
我目前的习惯是先用 ps aux -o pid, comm, %cpu, %mem 确认是哪个进程,然后杀掉它。
然后kill -0 $pid看是否能收到信号,然后kill -9 极端情况下,使用systemctl,这是最安全的。
请记住,系统中没有一个进程是无用的,任意杀死它们可能会导致严重的问题。

Linux如何终止正在运行的命令进程