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。
我通常会做这样的事情:
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
ps、grep和(可选)awk有助于将 PID 追踪到kill。