如果我开始一个进程并在终端窗口中将其置于后台(例如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
ps
、grep
和(可选)awk
有助于将 PID 追踪到kill
。
答案4
太简单了,不是从 shell 执行此操作的答案。但对于所有愿意“解决方法”的人来说:
我切换到需要关闭的另一个终端窗口并单击“X”。它告诉我这会终止该进程,并询问我是否真的想要这样做。Yes
。这就是我所需要的。