Linux有问必答:如何在脚本中获取进程ID(PID)
2015-03-13 14:07
1131 查看
提问: 我想要知道运行中脚本子shell的进程id。我该如何在shell脚本中得到PID。
当我在执行shell脚本时,它会启动一个叫子shell的进程。作为主shell的子进程,子shell将shell脚本中的命令作为批处理运行(因此称为“批处理进程”)。
在某些情况下,你也许想要知道运行中的子shell的PID。这个PID信息可以在不同的情况下使用。比如,你可以使用shell脚本的PID在/tmp下创建一个唯一的临时文件。有时侯脚本需要检测所有运行的进程,它可以从进程列表中排除自身的子shell。
在bash中,子shell进程的PID存储在一个特殊的变量‘$$’中。这个变量只读,你不可以在脚本中修改它。比如:
上面的脚本会得到下面的输出:
除了
输出是:
上面输出中,PID每次执行都会变化。这个因为每次运行都会创建一个新的shell。另一方面,PPID每次都会一样只要你在同一个shell中运行。
对于所有bash内置变量列表,参考man页。
当我在执行shell脚本时,它会启动一个叫子shell的进程。作为主shell的子进程,子shell将shell脚本中的命令作为批处理运行(因此称为“批处理进程”)。
在某些情况下,你也许想要知道运行中的子shell的PID。这个PID信息可以在不同的情况下使用。比如,你可以使用shell脚本的PID在/tmp下创建一个唯一的临时文件。有时侯脚本需要检测所有运行的进程,它可以从进程列表中排除自身的子shell。
在bash中,子shell进程的PID存储在一个特殊的变量‘$$’中。这个变量只读,你不可以在脚本中修改它。比如:
[code]#!/bin/bash echo "PID of this script: $$"[/code]
上面的脚本会得到下面的输出:
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
相关文章推荐
- 如何在脚本中获取进程ID(PID)
- 如何在脚本中获取进程ID(PID)
- 如何在脚本中获取进程ID(PID)
- 如何获取linux下的进程pid列表
- linux下如何获取进程的id和命令行参数
- Linux 父进程如何获取子进程返回值?parent get child process return value,fork,wait,wait_pid
- linux 下获取进程ID 和 进程名
- 根据系统进程pid获取sql【脚本收藏】
- Linux如何知道当前进程的ID
- BAT脚本获取当前cmd.exe进程PID/PPID/信息(自杀脚本)
- linux中$#、$?、$$[脚本运行时当前进程的id号]、$@、$*、$0、$1、$2、$-[上一个命令的最后一个参数]
- python使用标准库根据进程名如何获取进程的pid详解
- linux下如何自动检测并重新启动一个死掉的进程,然后再把它杀死:)(shell脚本实现)
- linux下如何根据端口号查看对应进程的ID
- 如何在LINUX中获取进程中某个虚拟地址所在物理内存地址
- Linux如何查看当前进程的ID
- Linux获取监听指定端口的进程PID
- linux -- 进程的查看、进程id的获取、进程的杀死
- Linux下如何在进程中获取虚拟地址对应的物理地址
- WIN32开发:如何获取父进程的ID