Shell脚本中获取进程ID的⽅法
提问: 我想要知道运⾏中脚本⼦shell的进程id。我该如何在shell脚本中得到PID。
当我在执⾏shell脚本时,它会启动⼀个叫⼦shell的进程。作为主shell的⼦进程,⼦shell将shell脚本中的命令作为批处理运⾏(因此称为“批处理进程”)。
在某些情况下,你也许想要知道运⾏中的⼦shell的PID。这个PID信息可以在不同的情况下使⽤。⽐如,你可以使⽤shell脚本的PID在/tmp下创建⼀个唯⼀的临时⽂件。有时侯脚本需要检测所有运⾏的进程,它可以从进程列表中排除⾃⾝的⼦shell。
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中运⾏。
对于所有bash内置变量列表,参考man页。
复制代码代码如下:
$ man bash

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。