【发布时间】:2017-08-03 21:13:12
【问题描述】:
我用谷歌搜索了这个问题,但从未发现任何对我的特殊情况有用的东西。
所以,我要弄清楚的是某个正在运行的命令的 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,而不是在屏幕创建的新终端中运行的命令的 PID。
但还有一个问题:当我在终端中运行screen -ls 时,后台运行的命令没有出现!我相当肯定它正在运行,因为 Pi 一直处于 25% 的 CPU 使用率(而不是通常的 0% 或 1%),当我输入 ps au 时,我实际上可以看到命令和 PID。
所以现在我打电话给社区:关于如何在新终端中找到该特定命令的 PID 有什么想法吗?我正在编写一个 bash 脚本,因此必须可以通过代码获取 PID。完美的是将 PID 存储在变量中的命令!
【问题讨论】:
-
SO 是针对编程问题,而不是关于使用或配置 Linux 的问题。 SuperUser.com 或 unix.stackexchange.com 将是解决此类问题的更好地方。
-
pgrep -f search_pattern-- 如果输出供人类使用,则添加-l标志。 -
感谢@glennjackman,您的评论对我有用。不知何故,我现在有了命令的 PID!
标签: linux bash raspberry-pi3 pid gnu-screen