如何获取linux shell中ls进程的进程号?---有趣的问题!
2015-04-25 21:13
246 查看
我们知道, 在linux中, 开启一个shell, 实际上就是开启一个shell进程, 如果在shell中运行一个ls命令, 实际上就是让shell进程拉起了一个ls进程, 且shell进程是父进程, ls进程是子进程。
某次, 我胡思乱想, 既然ls执行的时候对应一个进程, 那么怎么获取ls进程的进程号码呢? 执行一下ls, ls很快执行完毕了, 进程消失了啊。 于是, 我想到执行 ls & 这个命令, 结果如下:
[taoge@localhost Desktop]$ echo $$
2378
[taoge@localhost Desktop]$ ls &
[1] 2380
[taoge@localhost Desktop]$ learn_c
然后, 我估计2380这个数字就是ls进程的进程号码, 但是, 我要验证这个问题啊, 光估计有个屁用? 于是, 我开启了另外一个shell, 跑到/proc/中一看, 发现没有2380这个进程(目录), 看来2380这个进程实际上是执行完毕了的。
于是, 我想, 要搞一个执行时间长一点(不能太短)的命令, 比如可以考虑find命令, 如下:
[taoge@localhost Desktop]$ find -name xxx &
[1] 2390
然后可以猜测find进程的进程号码就是2390, 我们可以验证一下: 赶快开启另外一个shell, 然后进入/proc/2390/目录, 然后执行cat status, 此时, 就可以看到当前进程的进程号码是2390, 且其父进程的进程号是2378, 这个刚好就是第一个shell的进程号码, 正是这个shell进程拉起了它执行的命令对应的find进程。(千万要注意, 如果find执行的时间太短, 那么在/proc/中, 根本就不会有2390这个目录(对应一个进程)。 事实上, 当find执行完毕后,
在我们之前进入的/proc/2390/中, 根本就没法执行cd .. 退到上一目录, 因为这个目录实际上已经不存在了)
同理, 我们可知, 在如下的操作中:
[taoge@localhost Desktop]$ echo $$
2378
[taoge@localhost Desktop]$ ls &
[1] 2380
[taoge@localhost Desktop]$ learn_c
2378是shell进程的进程号, 2380是ls进程对应的进程号码。 当然, 我们要明白, 每次执行一个ls, 它的进程号都是不同的。
某次, 我胡思乱想, 既然ls执行的时候对应一个进程, 那么怎么获取ls进程的进程号码呢? 执行一下ls, ls很快执行完毕了, 进程消失了啊。 于是, 我想到执行 ls & 这个命令, 结果如下:
[taoge@localhost Desktop]$ echo $$
2378
[taoge@localhost Desktop]$ ls &
[1] 2380
[taoge@localhost Desktop]$ learn_c
然后, 我估计2380这个数字就是ls进程的进程号码, 但是, 我要验证这个问题啊, 光估计有个屁用? 于是, 我开启了另外一个shell, 跑到/proc/中一看, 发现没有2380这个进程(目录), 看来2380这个进程实际上是执行完毕了的。
于是, 我想, 要搞一个执行时间长一点(不能太短)的命令, 比如可以考虑find命令, 如下:
[taoge@localhost Desktop]$ find -name xxx &
[1] 2390
然后可以猜测find进程的进程号码就是2390, 我们可以验证一下: 赶快开启另外一个shell, 然后进入/proc/2390/目录, 然后执行cat status, 此时, 就可以看到当前进程的进程号码是2390, 且其父进程的进程号是2378, 这个刚好就是第一个shell的进程号码, 正是这个shell进程拉起了它执行的命令对应的find进程。(千万要注意, 如果find执行的时间太短, 那么在/proc/中, 根本就不会有2390这个目录(对应一个进程)。 事实上, 当find执行完毕后,
在我们之前进入的/proc/2390/中, 根本就没法执行cd .. 退到上一目录, 因为这个目录实际上已经不存在了)
同理, 我们可知, 在如下的操作中:
[taoge@localhost Desktop]$ echo $$
2378
[taoge@localhost Desktop]$ ls &
[1] 2380
[taoge@localhost Desktop]$ learn_c
2378是shell进程的进程号, 2380是ls进程对应的进程号码。 当然, 我们要明白, 每次执行一个ls, 它的进程号都是不同的。
相关文章推荐
- Process组件启动新的进程后,如何获取它的输出的问题
- How to get the password text in a text with password property from another process using C++ - 用C++如何从不同进程获取密码框文本
- 如何获取重载函数的地址 - 回复 "flq_00000" 的问题
- 如何获取其它进程中窗口的窗口过程
- Axure RP Pro - 相关问题 - 如何获取IFrame的URL
- 遍历进程并获取进程路径 - 回复 "编程少年" 的问题
- 如何获取每个进程的I/0的读写字节数????
- 如何获取图片中第一个像素的颜色值? - 回复 "格兰特" 的问题
- 如何获取GridView中隐藏列的值,GridView中隐藏列获取值的问题
- 如何获取某个进程的主窗口以及创建进程的程序名?
- 今天研究了一个有趣的网络问题:双网卡DHCP(动态获取IP)
- 如何使用WMI获取进程信息
- 关于获取进程句柄的问题
- 如何解决dllhost进程消耗CPU100%的问题
- WinCE下如何获取进程所在的目录
- WinCE下如何获取进程所在的目录
- 如何使用WMI获取进程信息 (转载)
- 【WM】如何获取Exe文件的进程ID
- 如何实时获取系统每个进程占用的CPU?--讨论及请教