【发布时间】:2012-04-11 00:22:04
【问题描述】:
如何在 Linux 中运行一个程序并知道它的 PID?
如果我有多个相互运行的 shell,它们是否都有单独的 PID?
【问题讨论】:
如何在 Linux 中运行一个程序并知道它的 PID?
如果我有多个相互运行的 shell,它们是否都有单独的 PID?
【问题讨论】:
Greg's wiki 救援:
$! 是最后一个后台进程的 PID。kill -0 $PID 检查 $PID 是否仍在运行。仅将其用于当前进程或其后代启动的进程,否则 PID 可能已被回收。wait 等待所有孩子退出后再继续。实际上,只需阅读链接 - 它就在那里(以及更多)。
$$ is the PID of the current shell.
是的,每个 shell 都有自己的 PID(除非它是一些自制的 shell,它不会 fork 创建一个“新”shell)。
【讨论】:
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 或什么?
bash $! 是最后一个后台进程的PID。
sh 中收到相同的内容?
linux(Ubuntu) 中的 top 命令显示 linux 中所有正在运行的程序及其 pid 的内存使用情况。 kill pid 可以杀死进程。
【讨论】: