linux获取进程idshell,Shell脚本中获取进程ID的方法

提问: 我想要知道运行中脚本子shell的进程id。我该如何在shell脚本中得到pid。

当我在执行shell脚本时,它会启动一个叫子shell的进程。作为主shell的子进程,子shell将shell脚本中的命令作为批处理运行(因此称为“批处理进程”)。

66587eaba8a83c190b32e15bbe6bd489.png

在某些情况下,你也许想要知道运行中的子shell的pid。这个pid信息可以在不同的情况下使用。比如,你可以使用shell脚本的pid在/tmp下创建一个唯一的临时文件。有时侯脚本需要检测所有运行的进程,它可以从进程列表中排除自身的子shell。

在bash中,子shell进程的pid存储在一个特殊的变量‘$$'中。这个变量只读,你不可以在脚本中修改它。比如:

#!/bin/bash

echo "pid of this script: $$"

上面的脚本会得到下面的输出:

pid of this script: 6583

除了$$, bash shell还会导出其他的只读变量。比如,ppid存储子shell父进程的id(也就是主shell)。uid存储了执行这个脚本的当前用户id。比如:

#!/bin/bash

echo "pid of this script: $$"

echo "ppid of this script: $ppid"

echo "uid of this script: $uid"

输出是:

pid of this script: 6686

ppid of this script: 4656

uid of this script: 1000

上面输出中,pid每次执行都会变化。这个因为每次运行都会创建一个新的shell。另一方面,ppid每次都会一样只要你在同一个shell中运行。

da92fabf13e85bf63c6ef545120e71e6.png

对于所有bash内置变量列表,参考man页。

$ man bash

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值