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

DQd*_*dlM 9 shell terminal job-control process-management jobs

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

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

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

注意:我正在使用 Xfce Terminal Emulator 0.4.3 和 bash(尽管如果解决方案存在于另一个通用 shell 中但不是 bash,我也愿意接受)

Kei*_*ith 10

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

kill $(pidof ping)
Run Code Online (Sandbox Code Playgroud)

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


小智 6

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


Cha*_*oyd 5

我通常会做这样的事情:

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

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

2683 bash
4481 bash
5695 bash
Run Code Online (Sandbox Code Playgroud)

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

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