我有一个无法杀死的进程kill -9 <pid>。在这种情况下有什么问题,特别是因为我是该流程的所有者。我认为没有什么可以逃避这个kill选择。
我总是很犹豫要不要跑kill -9,但我看到其他管理员几乎是例行公事。
我认为可能有一个明智的中间立场,所以:
kill -9使用?什么时候,为什么不呢?我已经在后台使用&. 突然停止下载。我想终止它的进程,然后重新运行命令。我怎样才能终止它?
我还没有关闭它的外壳窗口。但正如你所知,它不会停止使用Ctrl+C和Ctrl+ Z。
很多时候,我不小心cat在内容多达几千行的文件上运行了该命令。
我尝试cat用Ctrl+C或Ctrl+终止命令Z,但两者都只cat在终端中显示的总输出后生效,所以我必须等到cat完全执行。
有没有更好的解决方案来避免等待?因为有时文件的大小高达 100MB,等待它会很烦人。
我正在使用tcsh.
假设我有任何进程(例如,vi)的一千个或更多实例正在运行。我如何在一次射击/一行命令/一个命令中将它们全部杀死?
我正在写一个应用程序。它能够产生各种外部进程。当应用程序关闭时,我希望它产生的任何进程都被杀死。
听起来很容易,对吧?查找我的 PID,并递归地遍历进程树,以自下而上的方式杀死所有可见的东西。
不同之处在于,这并不正常工作。在一种特定情况下,我 spawn foo,但foo只是spawn ,bar然后立即退出,继续bar运行。现在没有关于bar曾经是应用程序进程树一部分的事实的记录。因此,应用程序无法知道它应该杀死bar.
我很确定我不能成为地球上第一个尝试这样做的人。那么标准的解决方案是什么?我想我真的在寻找某种方式来“标记”一个进程,这样它产生的任何进程都将无条件地继承相同的标签。
(到目前为止,我能想到的最好的方法是以不同的用户身份运行应用程序。这样,您就可以随意终止属于该用户的所有进程。但这有各种访问权限问题......)
我常常感到困惑的是,尽管我从事计算机专业工作几十年,Linux 工作十年,但我实际上将操作系统的大部分功能视为黑匣子,与魔术没什么两样。
今天我想到了这个kill命令,虽然我每天多次使用它(无论是“正常”还是-9风格),我必须承认我完全不知道它在幕后是如何工作的。
在我看来,如果一个正在运行的进程被“挂起”,我会调用kill它的 PID,然后它突然不再运行了。魔法!
那里到底发生了什么?联机帮助页谈论“信号”,但这肯定只是一种抽象。发送kill -9到进程不需要进程的合作(如处理信号),它只是将其杀死。
我真的很想知道这一切!
我最近在 shell 脚本中遇到了这个问题。
if ! kill -0 $(cat /path/to/file.pid); then
    ... do something ...
fi
Run Code Online (Sandbox Code Playgroud)
有什么作用kill -0 ...?
我正在运行一个带有命令的 shell 脚本来连续运行几个内存密集型程序(2-5 GB)。当我回去检查我的脚本的进度时,我惊讶地发现我的一些进程是Killed,正如我的终端向我报告的那样。在后来Killed启动的程序之前已经连续完成了几个程序,但是之后的所有程序都因分段错误而失败(这可能是由于我的代码中的错误,也可能不是由于我的代码中的错误,请继续阅读)。
我查看了我正在使用的特定集群的使用历史记录,发现有人开始同时运行多个内存密集型进程,这样做耗尽了集群可用的实际内存(甚至可能是交换空间)。尽我所能,这些内存密集型进程在我的程序出现问题的同时开始运行。
一旦开始耗尽内存,Linux 是否有可能杀死我的程序?我后来遇到的分段错误是否可能是由于缺少可用于运行我的程序的内存(而不是我的代码中的错误)?
kill ×10
process ×6
linux ×3
command-line ×2
shell ×2
bash ×1
cat ×1
gnu-screen ×1
job-control ×1
memory ×1
tcsh ×1
terminal ×1