如何从Linux命令行中以与外壳无关的,与语言无关的方式获取其当前进程ID(pid)?
pidof(8)似乎没有选择权来获取调用过程” pid。Bash当然具有$$-但就我的一般用法而言,我不能依赖Shell(Bash或其他方式)。在某些情况下,我无法编写脚本或可编译程序,因此Bash / Python / C / C ++(等等)将无法工作。
pidof(8)
pid
$$
这是一个特定的用例:我想获取pid正在运行的,基于Python- Fabric的远程SSH进程(可能希望避免假设bash正在运行),因此,除其他外,我可以复制和/或创建文件和/或具有唯一文件名的目录(如中的mkdir /tmp/mydir.$$)。
mkdir /tmp/mydir.$$
如果我们可以解决特定于Fabric的问题,那将有所帮助- 但这不能解决我的长期问题。对于将来所有情况下的通用用途,我只需要一个返回$$Bash交付内容的命令。
很棒的答案+评论在这里和这里。谢谢。将两者结合为一个答案,在需要POSIX- shell的情况下和不需要POSIX-shell的情况下提供两种折衷方案:
cut -d ' ' -f 4 /proc/self/stat
此处显示了两种方法的示例会话(以及其他建议的非工作方法)。
(不确定是否与shell无关会如此有用/有用,但是只是多次经历了“不带shell的运行系统调用”约束,现在只要有可能就寻求与shell无关的选项。)