linux - 如何在 bash 中找到正在运行的命令的 PID?

标签 linux bash raspberry-pi3 pid gnu-screen

我用谷歌搜索了这个问题,但从未发现任何对我的特定情况有用的东西。

所以,我想弄清楚的是某个正在运行的命令的 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 创建的新终端。

但它还有另一个问题:当我在终端中运行 screen -ls 时,在后台运行的命令没有显示出来!我相当确定它正在运行,因为 Pi 一直处于 25% 的 CPU 使用率(而不是通常的 0% 或 1%),当我键入 ps au 时,我实际上可以看到命令和 PID .

所以现在我调用社区:关于如何在新终端中找到该特定命令的 PID 的任何想法?我正在编写一个 bash 脚本,因此必须能够通过代码获取 PID。完美的是将 PID 存储在变量中的命令!

最佳答案

感谢@glennjackman,我通过一个简单的pgrep search_word 成功获得了我想要的PID。起初它不起作用,但不知何故,经过反复试验后我让它起作用了。对于那些想要变量上的 PID 的人,只需键入

pid=$(pgrep search_word)

关于 screen -ls 没有显示我分离的 session 的问题,它仍然没有解决,但我没有被它困扰。再次感谢@glennjackman 解决了我的问题!

编辑:

第二个问题解决了,查看berends answer的评论

关于linux - 如何在 bash 中找到正在运行的命令的 PID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45494598/

相关文章:

python - Linux 和 Windows 中的 .values() 有区别吗?

c - eglSwapBuffers 在 Raspberry Pi 上非常慢

c++ - visual studio编译wiringPi.h报错

linux - awk 仅在 uniq 列中打印行数

python - 找不到mkvirtualenv,但是可以执行

linux - 如何使用 bash 找出您的 IP 地址

Python PyGtk 虚拟键盘支持 at-spi

node.js - 响应日期与 MongoDB 不同

linux - 在 Linux 中的上下文切换中保存什么寄存器状态?

c - 接受超过 FD_SETSIZE 的连接