Zeb*_*ano 4 linux bash pid gnu-screen raspberry-pi3
我用谷歌搜索了这个问题,但从未发现任何对我的特定情况有用的东西。
所以,我想弄清楚的是某个正在运行的命令的 PID,这样我就可以在必要时终止它。我知道可以通过键入echo $!So来获取命令的 PID
my_command & echo $!
应该给我PID。但事实并非如此,我想我知道为什么:我的命令如下:
screen -d -m -S Radio /path/to/folder -f frequency -r path/to/song
它screen首先打开一个分离的,然后输入命令,以便它被执行并继续在后台运行。这样echo显示给我的 PID是错误的。我猜它向我显示了 PIDscreen -d -m -S Radio /path/to/folder -f frequency -r path/to/song而不是在由 screen 创建的新终端中运行的命令的 PID。
但是还有另一个问题:当我screen -ls在终端中运行时,在后台运行的命令没有显示!我相当确定它正在运行,因为 Pi 的 CPU 使用率始终保持在 25%(而不是通常的 0% 或 1%),并且当我输入时,ps au我实际上可以看到命令和 PID。
所以现在我打电话给社区:关于如何在新终端中找到特定命令的 PID 有什么想法吗?我正在编写一个bash脚本,因此必须可以通过代码获取PID。完美的命令是将 PID 存储在变量中!
感谢@glennjackman,我设法通过一个简单的pgrep search_word. 起初它不起作用,但不知何故,经过反复试验,我使它起作用。对于那些想要变量的 PID 的人,只需键入
pid=$(pgrep search_word)
关于screen -ls不显示我的分离会话的问题,它仍然没有解决,但我并不介意。再次感谢@glennjackman 解决我的问题!
编辑:
第二个问题解决了,检查berends答案的评论。