博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell $$ 的详解
阅读量:7077 次
发布时间:2019-06-28

本文共 1282 字,大约阅读时间需要 4 分钟。

表面上的意思是: 当前bash的PID,但是各种shell环境中要理解透。

官方解释:

BASHPID

      Expands  to the process id of the current bash process.  This differs from

      $$ under certain circumstances, such as subshells that do not require bash

      to be re-initialized.

输出当前bash进程的pid。这是不同的在以下的情况中,例如没有获取到bash的子shell,将被重新初始化。

例子1: 

[andy@master ~]$ ps -ef |grep bash |grep -v grep

andy     30245 30244  0 Jul17 pts/0    00:00:00 -bash

[andy@master ~]$ echo $$

30245

注意: $$ 表示的是这个登入shell的进程ID(直接一andy用户ssh连接登入的shell)

[andy@master ~]$ 

例子2:

[root@master std]# ps -ef |grep bash

root      4422  4421  0 Jul23 pts/0    00:00:02 -bash

root     13791  4422  0 22:14 pts/0    00:00:00 grep --color=auto bash

andy     30245 30244  0 Jul17 pts/0    00:00:00 -bash

[root@master std]# echo $$          

4422

注意:$$表示的是登入交互式shell的PID(我本机是andy登入,然后sudo su - 到root的)

例子3:

[root@master std]# echo $$ 

4422

[root@master std]# cat test.sh 

#/bin/bash

echo "fei jiao hu shi shell'S process pid:$$"

[root@master std]# sh test.sh  

fei jiao hu shi shell'S process pid:13858

注意:这是非交互式shell,通过脚本执行的shell,$$ 就是这个pid

例子4:

[andy@master ~]$ echo $$

30245

[andy@master ~]$ echo "abc" | { echo "abc"; echo $$; }

abc

30245

[andy@master ~]$ 

注意: 管道中开辟的subshell,虽然是子shell环境,但是没有获得-bash进程的,所以依然是父进程的bashID。(这个有点绕,看看官方解释的那段英文就慢慢理解吧。)

本文转自残剑博客51CTO博客,原文链接http://blog.51cto.com/cuidehua/1831910如需转载请自行联系原作者

cuizhiliang

你可能感兴趣的文章
WEB测试:***apache
查看>>
42 个移动端启动页面优化 Tips
查看>>
Egret之ProtoBuf安装
查看>>
Cocos2d-x3.0游戏实例《别救我》目录
查看>>
我的友情链接
查看>>
ASP开发中数据库文件调用的捷径
查看>>
debian启动项与服务设置
查看>>
WinPcap编程环境设置
查看>>
基于openssl的https服务配置
查看>>
从 CentOS 5.5 中精简出属于自己的专属Linux (三)
查看>>
C和指针---第十五章:输入/输出函数
查看>>
Linux打开txt文件乱码的解决方法
查看>>
jquery中的ajax
查看>>
HTML5 Geolocation 地理位置API的使用
查看>>
强大的时间库moment.js常用方法
查看>>
log file sync事件
查看>>
MXNet动手学深度学习笔记:多类别分类
查看>>
License介绍
查看>>
2015年12月国内浏览器市场份额:IE卫冕失败
查看>>
centos mysql5.6 内存过大
查看>>