文档章节

如何在脚本中获取进程ID(PID)

 酱醋茶丶
发布于 2015/11/16 10:14
字数 480
阅读 52
收藏 1
点赞 0
评论 0

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

 

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

 

在某些情况下,你也许想要知道运行中的子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中运行。

 

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

$ man bash

好了,教程就到这里了,希望能给大家带来帮助!

免费领取兄弟连IT教育原创linux运维工程师视频/细说linux教程,详情咨询官网客服:http://www.lampbrother.net/linux/

或者勾搭Q2430675018

欢迎加入linux交流群 478068715


© 著作权归作者所有

共有 人打赏支持
粉丝 7
博文 71
码字总数 90588
作品 0
昌平
python统计httpd 进程的内存占用百分比

本文结构: 介绍用命令行如何统计内存占用百分比 介绍用python 如何通过读取进程文件,统计进程的内存总大小,然后计算占系统内存的百分比 第一部分: 在linux 下,统计apache 进程的内存使用...

hello_cjq ⋅ 2016/10/21 ⋅ 0

Gnu/Linux系统C编程之 - 系统与进程信息

这里主要介绍/proc伪文件系统及uname()函数来获取系统或进程的一些信息。 /proc文件系统介绍 在早期的UNIX发行版中,并不能很容易的分析内核的一些属性,并且很难回答以下问题: 系统有多少进...

bigstone2012 ⋅ 2016/05/25 ⋅ 0

Linux 常用操作及命令

1. 什么是linux服务器load average? Load是用来度量服务器工作量的大小,即计算机cpu任务执行队列的长度,值越大,表明包括正在运行和待运行的进程数越多。 参考资料:http://en.wikipedia...

顶风走千里 ⋅ 2017/12/05 ⋅ 0

Ubuntu 获取进程号

1.由进程名得到进程id: pidof xx , 其中xx是进程名 2.由进程id得到进程名: readlink /proc/xxx/exe,其中xxx是进程的id 3.如果是shell程序,因为shell的进程名是相应的shell名,所以不能直接...

bobwei ⋅ 2015/12/30 ⋅ 0

(转)如何诊断和解决CPU高度消耗(100%)的数据库问题

如何诊断和解决CPU高度消耗(100%)的数据库问题 2008-05-24 13:46

jimbuster ⋅ 2008/09/03 ⋅ 0

linux shell 编程 11 特殊符号 & 以及和他的恩怨

这篇文章中主要说说这四个符号: &、&& 、$!、$$ 四个符号。 符号解释: &&: 逻辑关系 与 & : 在后台运行进程 $! : 为什么要在这里说这些符号那,有三个不是在之前已经学习过了吗,原因有一...

QH_C ⋅ 2015/11/17 ⋅ 0

如何诊断和解决CPU高度消耗(100%)的数据库问题

很多时候我们的服务器可能会经历CPU消耗100%的性能问题. 排除系统的异常,这类问题通常都是因为系统中存在性能低下甚至存在错误的SQL语句, 消耗了大量的CPU所致. 本文通过一个案例就如何捕获...

rudy_gao ⋅ 2015/04/12 ⋅ 0

linux 进程监控和自动重启的简单实现

目的:linux 下服务器程序会因为各种原因dump掉,就会影响用户使用,这里提供一个简单的进程监控和重启功能。 实现原理:由定时任务crontab调用脚本,脚本用ps检查进程是否存在,如果不存在则...

freecsdn ⋅ 2016/09/13 ⋅ 0

shell 获取进程id 和进程启动时间

原本只是想要获取一个java应用程序的启动时间 交互式 Bash Shell 获取进程 pid 在已知进程名()的前提下,交互式 Shell 获取进程 有很多种方法,典型的通过获取的方法为(这里添加是为了避免匹...

jeffsui ⋅ 2016/06/27 ⋅ 5

Linux环境编程简明教程(1)获取进程相关信息的操作

与获取进程相关信息的操作,都在unistd.h文件中,常用的有如下一些函数。 getuid 函数原型:uid_t getuid(void); 函数功能:获取调用进程的用户的ID。 函数返回:调用进程的用户的ID。 声明文...

晨曦之光 ⋅ 2012/04/24 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

内核线程、轻量级进程、用户线程

线程与进程概念 在现代操作系统中,进程支持多线程。 进程是资源管理的最小单元; 线程是程序执行的最小单元。 即线程作为调度和分配的基本单位,进程作为资源分配的基本单位 一个进程的组成...

117 ⋅ 10分钟前 ⋅ 0

elasticsearch2.4.6升级为elasticsearch-5.5.0的经历

将elasticsearch-5.5.0 中的配置 path.data 指向原来的数据路径 即 path.data: /usr/local/src/elasticsearch-2.4.6/data 注意: elasticsearch-5.5.0 需要将jdk版本升级到1.8...

晨猫 ⋅ 10分钟前 ⋅ 1

lvm讲解 磁盘故障小案例

1

oschina130111 ⋅ 14分钟前 ⋅ 0

那些提升开发人员工作效率的在线工具

本文转载自公众号 Hollis 作为一个Java开发人员,经常要和各种各样的工具打交道,除了我们常用的IDE工具以外,其实还有很多工具是我们在日常开发及学习过程中要经常使用到的。 Hollis偏爱使用...

时刻在奔跑 ⋅ 27分钟前 ⋅ 0

restful风格 实现DELETE PUT请求 的web.xml的配置

import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframe......

泉天下 ⋅ 32分钟前 ⋅ 0

Shell数组

Shell数组 Shell在编程方面比Windows批处理强大很多,无论是在循环、运算。 bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数...

蜗牛奔跑 ⋅ 41分钟前 ⋅ 0

nmap为了开发方便 可以做简单的修改

因为nmap扫描是默认使用的是nse脚本,但是在开发的过程中需要修改后缀(主要是因为后缀为lua才能显示高亮,所以这里用一个取巧的办法) nse_main.lua文件中我们找到如下代码 local t, path = cn...

超级大黑猫 ⋅ 46分钟前 ⋅ 0

springmvc获取axios数据为null情况

场景:前端用了vue没有用ajax与后台通信,用了axios,但是在代码运行过程中发现axios传递到后台的值接受到数据为null。 问题原因:此处的问题在与axios返回给后台的数据为json类型的,后台接...

王子城 ⋅ 47分钟前 ⋅ 0

hadoop技术入门学习之发行版选择

经常会看到这样的问题:零基础学习hadoop难不难?有的人回答说:零基础学习hadoop,没有想象的那么难,也没有想象的那么容易。看到这样的答案不免觉得有些尴尬,这个问题算是白问了,因为这个...

左手的倒影 ⋅ 48分钟前 ⋅ 0

806. Number of Lines To Write String - LeetCode

Question 806. Number of Lines To Write String Solution 思路:注意一点,如果a长度为4,当前行已经用了98个单元,要另起一行。 Java实现: public int[] numberOfLines(int[] widths, Str...

yysue ⋅ 55分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部