linux怎么停止进程

说实话,当时我觉得Linux下杀进程还是挺复杂的。
后来和老兵一起工作时间长了,我发现了一些窍门。
这两种方法实际上都经常使用,但具体使用要根据情况而定。

先说用PID查杀。
这个方法非常直接。
这就是我上次杀死一个错误的 Python 脚本时所做的:首先使用 ps aux | grep python 来查找进程。
例如,如果我看到 1 2 3 4 5 python /usr/bin/python3 my_script.py,那么 1 2 3 4 5 就是 PID。
只需尝试杀死 -1 5 1 2 3 4 5 并给进程一个温和的机会来收拾行李并离开。
如果冻结了,使用kill -9 1 2 3 4 5 强行抬起桌子。
此方法有效,但如果您使用过多,系统可能会建议您,因为无论状态如何,它都会关闭进程,这可能会导致数据丢失。

说到按名字查杀,killall命令非常方便。
上次,当我们批量杀死一堆挂起的chrome实例时,我们使用killall chrome命令来完成所有操作,从而节省了我们逐一查找PID的需要。
但请注意,killall 重点关注名称。
如果进程名称拼写错误或存在拼写变化,您的努力将是徒劳的。
我的一个朋友就是因为这个把系统自带的dbus杀掉了,因为命令写成了kiall。

对于这些信号,说实话,一开始我无法理解SIGTERM和SIGKILL的区别,但是费了九牛二虎之力终于弄明白了。
SIGTERM 就像发送电子邮件一样,提醒您“收拾好东西,出发去上班”。
进程可以忽略这个提醒,继续玩; SIGKILL直接破坏你的电脑,不管你喜欢与否,你都必须走。
因此,旧规则是先发送 SIGTERM,如果进程非常顽固,则使用 SIGKILL。

另一个有趣的点是谋杀案审判的许可问题。
以前使用VPS的时候,总想杀掉别人的进程,但是发现除非使用sudo,否则根本做不到。
有一次因为权限不足想杀掉一个系统进程,但是命令失败了,服务器管理员笑得很惨。
所以使用 sudo 时必须小心,因为并不是所有事情都能完成。

最后我们来说说pkill。
这个东西比killall灵活多了,支持正则表达式。
上次我想杀死所有包含“node”的进程。
我直接pkill -f“node”。
使用通配符来节省我将它们一一输入。
但是,使用此技巧时要小心。
如果您编写了错误的通用规则,您可能会意外终止您编写的程序。

所以一般来说,当谈到终止进程时,你需要考虑一个策略。
一开始要采取谨慎的态度,如果不起作用,就采取更强硬的态度。
您需要清楚地了解权限问题,否则系统将崩溃,您将不得不请人来修复它。
如果不经历陷阱,就无法学到这种经验。

Linux 下使用 killall 命令终止进程的 8 大用法

Linux下kill命令的八种使用方法详解在Linux命令行中,kill命令是一个强大的工具,用于精确或批量杀死进程。
下面我们将探讨它的八个实际场景:
基本用法: 通过进程名称(如“hello1 ”)或前缀(如“hello”)快速杀死进程。
例如,杀死hello将杀死1 个名为hello的进程,而杀死hello将杀死从hello开始的所有进程。

确定用户特定的流程: 通过正则表达式或用户名,可以按用户准确杀死进程。
例如,killall -ukillall 将终止所有killall 进程,但应谨慎使用以避免正常的用户活动。

基于运行时的终止: 使用 -o 和 -y 选项,您可以根据当前进程进行过滤。
例如,killall -o 5 h 将杀死运行时间超过 5 小时的进程。

忽略原因: 默认情况下,进程名称中的killall区分大小写。
添加选项-1 到killall -1 hi,忽略大小写。

默默要求: 使用 -q 选项作为 hello Killer,关闭非交互式操作的命令执行回显。

访问白标: 了解 -l 选项支持的所有信号,例如 -l Killall,并使用 -s 选项发送特定信号。

互动阅读: 启用-i选项可以让用户在杀死进程时进行确认,防止误操作。

等待进程完成: 使用 -w 选项高终止进程,以便进程在返回执行之前实际终止。

掌握这些技能可以帮助您在 Linux 环境中更有效地管理进程。
请记住,操作时要小心,以免影响系统稳定性。

Linux如何终止异常进程?kill与pkill命令操作指南

等等,今天早上我打开电脑,浏览器突然死机了,网站上一个字都没有加载。
我尝试更新,但没有成功。
然后我想起之前学过kill命令,于是我赶紧打开终端,用top命令看看是哪个进程占用了CPU。
发现是一个广告软件进程,PID为1 2 5 6 ,我输入kill 1 2 5 6 ,居然直接退出了。
我心里高兴极了,心想这招果然管用。
但后来我又试了一次,还是编译器进程卡住了好久。
我尝试杀掉1 2 3 4 很久,没有任何反应。
最后我不得不使用kill -9 1 2 3 4 ,它立即停止了。
不过编译结果看起来有点乱,下次得先试试SIGTERM。