如何终止在另一个 shell(终端窗口或选项卡)中启动的作业?

如何终止在另一个 shell(终端窗口或选项卡)中启动的作业?

如果我开始一个进程并在终端窗口中将其置于后台(例如ping google.com &),我可以使用它来终止它kill %1(假设它是作业 1)。

但是,如果我打开另一个终端窗口(或选项卡),则后台进程不会在下面列出jobs,并且无法直接使用kill.

是否可以从另一个终端窗口或选项卡终止此进程?

注意:我正在使用 Xfce 终端仿真器 0.4.3 和 bash(尽管如果解决方案存在于另一个常见 shell 中但不存在 bash,我也对此持开放态度)

答案1

是的,您需要知道的只是进程的进程 ID (PID)。你可以用命令找到这个ps,或者pidof命令。

kill $(pidof ping)

应该可以在任何其他 shell 中工作。如果没有,您可以使用 ps 和 grep 进行 ping。

答案2

如果您top在另一个终端窗口中键入,它将列出所有正在运行的进程。记下您的进程 ID job,然后按q离开该屏幕。然后kill流程如常。

答案3

我通常会做这样的事情:

ps aux | grep $PROCESS | grep -v grep | awk '{print $2 " " $11}'

例如,如果 $PROCESS="bash",那么这是我当前会话的输出:

2683 bash
4481 bash
5695 bash

然后我会选择我不再想跑步的kill $PID那个。/bin/bash

psgrep和(可选)awk有助于将 PID 追踪到kill

答案4

太简单了,不是从 shell 执行此操作的答案。但对于所有愿意“解决方法”的人来说:

我切换到需要关闭的另一个终端窗口并单击“X”。它告诉我这会终止该进程,并询问我是否真的想要这样做。Yes。这就是我所需要的。

相关内容