当前位置: 首页 > 面试题库 >

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

施华奥
2023-03-14
问题内容

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

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

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

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


问题答案:

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

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

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

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



 类似资料:
  • 问题内容: 如何在C中获取进程名称?同名,在中。我不想解析该文件。有什么编程方式可以做到这一点? 问题答案: 它指向了,或者您确实可以阅读。或者,您可以使用,不确定由谁来设置它以及它的可靠性。

  • X2.2.0新增 sp_check_lang() 功能: 判断当前的语言包,并返回语言包名 参数: 无 返回: 类型string 包名,如:zh-cn 使用: $lang=sp_check_lang();

  • 问题内容: 我有这个脚本,但是我不知道如何获取打印输出中的最后一个元素: 最后一个元素应该是CPU数量减1。 问题答案: 将计算以“处理器”开头的行数 对于具有超线程的系统,可以使用 应该返回(例如)(而上面的命令将返回)

  • 问题内容: 我有一个奇怪的问题,当我创建一个具有区域设置的日历时,TimeZone只是还原为本地日历 这是输出: 如何从特定的语言环境中获取适当的时间? 问题答案: 简短的答案:您不能。 长话大说:没有“语言环境的正确时区”之类的东西。这仅仅是因为有些国家/地区具有多个时区(例如美国)。时区是一个不同的概念。 无论如何,您正在寻找解决问题的方法。我猜您正在编写Web应用程序,并且看到时区已恢复为服

  • 如何在for each循环中获取索引?我想为每一次迭代打印数字 例如 在java中,我们有传统的for循环 如何获取i?

  • 问题内容: 我知道如果我编写一个bash脚本可以得到返回值,但是无论如何都可以在没有脚本的情况下获得返回值,而只需通过命令行即可? 问题答案: 是的,就像您在Bash脚本中所做的一样。像这样运行程序: