【问题标题】:How to run a program and know its PID in Linux?如何在 Linux 中运行一个程序并知道它的 PID?
【发布时间】:2012-04-11 00:22:04
【问题描述】:

如何在 Linux 中运行一个程序并知道它的 PID?

如果我有多个相互运行的 shell,它们是否都有单独的 PID?

【问题讨论】:

    标签: linux shell pid


    【解决方案1】:

    Greg's wiki 救援:

    • $! 是最后一个后台进程的 PID。
    • kill -0 $PID 检查 $PID 是否仍在运行。仅将其用于当前进程或其后代启动的进程,否则 PID 可能已被回收。
    • wait 等待所有孩子退出后再继续。

    实际上,只需阅读链接 - 它就在那里(以及更多)。

    $$ is the PID of the current shell.

    是的,每个 shell 都有自己的 PID(除非它是一些自制的 shell,它不会 fork 创建一个“新”shell)。

    【讨论】:

      【解决方案2】:

      1) 有一个变量,通常是$$

      edd@max:~$ echo $$                  # shell itself
      20559
      edd@max:~$ bash -c 'echo $$'        # new shell with different PID
      19284
      edd@max:~$ bash -c 'echo $$'        # dito
      19382
      edd@max:~$ 
      

      2) 是的,操作系统/内核会为您做到这一点。

      【讨论】:

      • 如何使用$$变量?它是否包含上次运行程序的 PID 或什么?
      • 看我给出的例子。对于 shell,它是它自己的 PID。
      • in bash $! 是最后一个后台进程的PID。
      • @dldnh 是否可以在sh 中收到相同的内容?
      • @Dirk 但是否有可能不知道 PID 或脚本,但知道该脚本运行的程序的 PID?
      【解决方案3】:

      linux(Ubuntu) 中的 top 命令显示 linux 中所有正在运行的程序及其 pid 的内存使用情况。 kill pid 可以杀死进程。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多