我曾经在谷歌上搜索过这个问题,但从未找到与我的情况相关的有用信息。
所以,我想弄清楚的是某个正在运行的命令的PID,以便如果需要,可以将其终止。我知道可以通过输入 echo $!
来获取一个命令的PID。因此,假设
my_command & echo $!
应该返回进程PID,但实际情况并非如此,我认为我知道原因:
我的命令如下:
screen -d -m -S Radio /path/to/folder -f frequency -r path/to/song
这种方法会首先打开一个独立的 screen
,然后输入命令以便在后台执行。因此,echo
显示给我的PID是错误的。我猜它显示了 screen -d -m -S Radio /path/to/folder -f frequency -r path/to/song
的PID,而不是在 screen 创建的新终端中运行的命令的PID。
但这还有另一个问题:当我在终端中运行 screen -ls
命令时,后台正在运行的命令不会显示出来!我相当确定它正在运行,因为树莓派的CPU使用率一直保持在25%(通常为0%或1%),而且当我键入 ps au
时,实际上可以看到该命令和PID。
所以现在我向社区求助:您是否有任何想法可以找到新终端中某个命令的PID?我正在编写一个bash脚本,因此必须通过代码获取PID。最好的方法是使用一个命令将PID存储在变量中!
-l
标志:pgrep -f search_pattern
。 - glenn jackman