如何取消在另一个外壳(终端窗口或选项卡)中启动的作业?


9

如果我开始一个过程并在终端窗口中将其作为背景(例如ping google.com &),则可以使用kill %1(假设它是工作1)将其杀死。

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

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

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

Answers:


10

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

kill $(pidof ping)

应该可以从任何其他外壳工作。如果不是,则可以使用ps和grep进行ping。


6

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


感谢您的回答,但top并未显示出Shell中正在运行的所有特定进程(例如,未显示ping)。它确实为我提供了终端仿真器的PID,但是却像您期望的那样杀死了终端仿真器。
DQdlM 2012年

1
如果输入top -U yourusername终端,它将仅列出您正在使用的进程。
arthankamal

太棒了!为此+1!谢谢
DQdlM 2012年

在顶端时,先按k再按15进行软杀(先尝试),再按9进行硬杀。
Michael Durrant 2012年

4

我通常会这样:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.