如何获得上一个进程的pid的方法

简介:

如何压缩程序占用内存的方法里我为了测试程序的内存占用大小写了一个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,第一次登录服务器时,$!为空





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


相关文章
|
10月前
|
Linux 测试技术 开发工具
Linux的进程pid编号极限
整理本文,起源是看到知乎上的一个问题,为什么Linux的进程pid编号极限最大值( process pid max)是131070?
154 0
|
2月前
|
Linux
【Linux】命名管道的创建方法&&基于命名管道的两个进程通信的实现
【Linux】命名管道的创建方法&&基于命名管道的两个进程通信的实现
|
2月前
|
安全 Linux 开发者
⭐⭐⭐⭐⭐Linux C/C++ 进程崩溃诊断以及有效数据收集:解锁代码问题快速定位与修复的方法
⭐⭐⭐⭐⭐Linux C/C++ 进程崩溃诊断以及有效数据收集:解锁代码问题快速定位与修复的方法
181 1
|
2月前
|
Python
多ip多进程代理的实现方法
多ip多进程代理的实现方法
|
2月前
|
Linux Shell
【Linux】解决:为什么重复创建同一个【进程pid会变化,而ppid父进程id不变?】
【Linux】解决:为什么重复创建同一个【进程pid会变化,而ppid父进程id不变?】
|
2月前
|
Python
Python Appium Selenium 查杀进程的实用方法
Python Appium Selenium 查杀进程的实用方法
47 1
|
2月前
驱动保护 -- 通过PID保护指定进程
驱动保护 -- 通过PID保护指定进程
43 0
驱动保护 -- 通过PID保护指定进程
|
2月前
|
监控 Unix Linux
C语言进程(第一章进程基础,fork()函数,pid_t, pid, getpid())
C语言进程(第一章进程基础,fork()函数,pid_t, pid, getpid())
160 0
|
2月前
|
Linux
百度搜索:蓝易云【Linux系统下获取系统、BIOS、进程、网络等相关信息的方法和工具。】
综上所述,通过使用命令行工具和图形化工具,可以在Linux系统下获取系统、BIOS、进程和网络等相关信息。根据具体的需求和使用场景,选择合适的工具和命令可以帮助你更好地了解和管理Linux系统。
73 2
|
8月前
|
网络协议 安全 Unix
6种查看Linux进程占用端口号的方法
6种查看Linux进程占用端口号的方法
574 0