代码之家  ›  专栏  ›  技术社区  ›  Zebiano

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

  •  4
  • Zebiano  · 技术社区  · 8 年前

    我在谷歌上搜索了这个问题,但从来没有发现任何对我的特殊情况有用的东西。

    所以,我想弄清楚的是某个正在运行的命令的PID,这样我就可以在必要时杀死它。我知道可以通过键入来获取命令的PID echo $!

    my_command & echo $!
    

    应该给我PID。但事实并非如此,我想我知道原因:

    screen -d -m -S Radio /path/to/folder -f frequency -r path/to/song
    

    screen 首先,然后键入命令,使其执行并在后台继续运行。这样PID echo screen -d -m -S Radio /path/to/folder -f frequency -r path/to/song 而不是在屏幕创建的新终端中运行命令的PID。

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

    2 回复  |  直到 3 年前
        1
  •  5
  •   Zebiano    7 年前

    多亏了@glennjackman,我用一个简单的 pgrep search_word .起初它不起作用,但不知怎的,经过一些尝试和错误后,我使它起了作用。对于需要变量PID的用户,只需键入

    pid=$(pgrep search_word)

    screen -ls 没有显示我的独立会话,它仍然没有解决,但我不介意它。再次感谢您解决我的问题@glennjackman!

    编辑:

    第二个问题解决了,检查贝伦兹答案上的评论。

        2
  •  2
  •   berend    8 年前

    ps aux
    

    ps aux | grep screen
    

    有关ps和我使用的参数的更多信息,请查看(快速谷歌)-> https://www.lifewire.com/g00/uses-of-linux-ps-command-4058715?i10c

    编辑:您也可以将此命令与bash脚本一起使用。

    推荐文章