如何在 bash 中找到 运行 命令的 PID?
How to find the PID of a running command in bash?
我用谷歌搜索了这个问题,但从未发现任何对我的具体情况有用的东西。
所以,我想弄清楚的是 运行ning 某个命令的 PID,这样我就可以在必要时终止它。我知道可以通过输入 echo $!
来获取命令的 PID 所以应该是
my_command & echo $!
应该给我 PID。但事实并非如此,我想我知道为什么:
我的命令如下:
screen -d -m -S Radio /path/to/folder -f frequency -r path/to/song
首先打开一个分离的 screen
然后键入命令以便它被执行并在后台保持 运行ning。这样 echo
显示给我的 PID 就是错误的。我猜它向我显示 screen -d -m -S Radio /path/to/folder -f frequency -r path/to/song
的 PID 而不是屏幕创建的新终端中命令 运行 的 PID。
但它还有一个问题:当我在终端运行 screen -ls
时,后台运行ning的命令没有出现!我相当确定它是 运行ning,因为 Pi 一直处于 25% CPU 使用率(而不是通常的 0% 或 1%),当我输入 ps au
我实际上可以看到命令和 PID。
所以现在我打电话给社区:关于如何在新终端中找到该特定命令的 PID 的任何想法?我正在写一个 bash 脚本,所以必须可以通过代码获取 PID。完美的是将 PID 存储在变量中的命令!
你可以很容易地找出所有的运行ning进程和他们的PID通过写(例如):
ps aux
这个过程是 运行 屏幕显示的,所以你可能会发现写起来更容易:
ps aux | grep screen
有关 ps 和我使用的参数的更多信息,请检查(快速 google)-> https://www.lifewire.com/g00/uses-of-linux-ps-command-4058715?i10c
编辑:您也可以将此命令与 bash 脚本一起使用。
感谢@glennjackman,我通过一个简单的 pgrep search_word
成功获得了我想要的 PID。起初它不起作用,但不知何故,经过反复试验后我让它起作用了。对于那些想要变量上的 PID 的人,只需键入
pid=$(pgrep search_word)
关于screen -ls
不显示我的detached session的问题,目前还没有解决,不过我已经不在意了。再次感谢@glennjackman 解决了我的问题!
编辑:
第二题解决,查看berends answer的评论
我用谷歌搜索了这个问题,但从未发现任何对我的具体情况有用的东西。
所以,我想弄清楚的是 运行ning 某个命令的 PID,这样我就可以在必要时终止它。我知道可以通过输入 echo $!
来获取命令的 PID 所以应该是
my_command & echo $!
应该给我 PID。但事实并非如此,我想我知道为什么: 我的命令如下:
screen -d -m -S Radio /path/to/folder -f frequency -r path/to/song
首先打开一个分离的 screen
然后键入命令以便它被执行并在后台保持 运行ning。这样 echo
显示给我的 PID 就是错误的。我猜它向我显示 screen -d -m -S Radio /path/to/folder -f frequency -r path/to/song
的 PID 而不是屏幕创建的新终端中命令 运行 的 PID。
但它还有一个问题:当我在终端运行 screen -ls
时,后台运行ning的命令没有出现!我相当确定它是 运行ning,因为 Pi 一直处于 25% CPU 使用率(而不是通常的 0% 或 1%),当我输入 ps au
我实际上可以看到命令和 PID。
所以现在我打电话给社区:关于如何在新终端中找到该特定命令的 PID 的任何想法?我正在写一个 bash 脚本,所以必须可以通过代码获取 PID。完美的是将 PID 存储在变量中的命令!
你可以很容易地找出所有的运行ning进程和他们的PID通过写(例如):
ps aux
这个过程是 运行 屏幕显示的,所以你可能会发现写起来更容易:
ps aux | grep screen
有关 ps 和我使用的参数的更多信息,请检查(快速 google)-> https://www.lifewire.com/g00/uses-of-linux-ps-command-4058715?i10c
编辑:您也可以将此命令与 bash 脚本一起使用。
感谢@glennjackman,我通过一个简单的 pgrep search_word
成功获得了我想要的 PID。起初它不起作用,但不知何故,经过反复试验后我让它起作用了。对于那些想要变量上的 PID 的人,只需键入
pid=$(pgrep search_word)
关于screen -ls
不显示我的detached session的问题,目前还没有解决,不过我已经不在意了。再次感谢@glennjackman 解决了我的问题!
编辑:
第二题解决,查看berends answer的评论