| 关键词: nbsp bogon root 命令 txt 后台 echo 一个 pid wc |
在《如何压缩程序占用内存的方法》里我为了测试程序的内存占用大小写了一个shell脚本 1.$1 & 2.echo "$1 pid:$!" 3.sleep 3 4.pmap $!|grep total|awk -v pid="$!" '{print "pid",pid," memory:",$2}' 里面需要用到linux shell的特殊变量$!,网上都是说$! 返回的是 上一个命令的PID。但是我实际测试得出,这个说法一般不对,一般对对于前台命令不对: 1.[root@bogon ~]# wc -l a.txt 2.2162 a.txt 3.[root@bogon ~]# echo $! 4.[root@bogon ~]# 但是对于后台命令是对的 1.[root@bogon ~]# wc -l a.txt & 2.[1] 9155 3.2162 a.txt 4.[root@bogon ~]# echo $! 5.9155 6.[1]+ Done wc -l a.txt 而且,之后若是执行的命令不是后台命令的话,$!里的值都不会改变,直到下一个后台命令执行为止 1.[root@bogon ~]# wc -l a.txt 2.2162 a.txt 3.[root@bogon ~]# echo $! 4.9155 5.[root@bogon ~]# wc -l a.txt & 6.[1] 9198 7.[root@bogon ~]# 2162 a.txt 8.[1]+ Done wc -l a.txt 9.[root@bogon ~]# echo $! 10.9198 结论:$!保存的是最后一个后台执行命令的pid,第一次登录服务器时,$!为空 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|