小编典典

如何从命令行获取与外壳无关,语言不可知的当前Linux进程ID

linux

如何从Linux命令行中以与外壳无关的,与语言无关的方式获取其当前进程ID(pid)?

pidof(8)似乎没有选择权来获取调用过程”
pid。Bash当然具有$$-但就我的一般用法而言,我不能依赖Shell(Bash或其他方式)。在某些情况下,我无法编写脚本或可编译程序,因此Bash
/ Python / C / C ++(等等)将无法工作。

这是一个特定的用例:我想获取pid正在运行的,基于Python-
Fabric
的远程SSH进程(可能希望避免假设bash正在运行),因此,除其他外,我可以复制和/或创建文件和/或具有唯一文件名的目录(如中的mkdir /tmp/mydir.$$)。

如果我们可以解决特定于Fabric的问题,那将有所帮助-
但这不能解决我的长期问题。对于将来所有情况下的通用用途,我只需要一个返回$$Bash交付内容的命令。


阅读 222

收藏
2020-06-07

共1个答案

小编典典

很棒的答案+评论在这里和这里。谢谢。将两者结合为一个答案,在需要POSIX-
shell的情况下和不需要POSIX-shell的情况下提供两种折衷方案:

  1. 可用的POSIX Shell:使用 $$
  2. 一般指令:雇用 cut -d ' ' -f 4 /proc/self/stat

此处显示了两种方法的示例会话(以及其他建议的非工作方法)。

(不确定是否与shell无关会如此有用/有用,但是只是多次经历了“不带shell的运行系统调用”约束,现在只要有可能就寻求与shell无关的选项。)

2020-06-07