Jackiesteed

www.github.com/jackiesteed

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

sudo python main.py
上面这个命令会启动两个进程.

root     23291  0.0  0.0 147980  1928 ?        S    19:48   0:00 sudo python main.py get_meituan_room
root     23292  118  3.2 14883916 797252 ?     Sl   19:48 289:22 python main.py get_meituan_room

那么为什么会启动两个进程呢?
因为 sudo 其实是一个命令, 而python是sudo的参数, 所以真的要完成sudo后面的任务需要用一个新的进程启动python解释器, 从而执行main.py这个脚本.
其实sudo的进程仅仅是一个壳而已.

怎么看两个进程是否父子关系呢?
一个比较直观的方式是 "ps -e f ", 这个命令可以画出简单的进程树.

23291 ?        S      0:00 sudo python main.py get_meituan_room
23292 ?        Sl   304:10  \_ python main.py get_meituan_room

大概就是这样.

如果不想启动两个进程怎么办?
用exec命令.
exec命令不产生新的子进程,在执行时会把当前的shell process关闭,然后换到后面的命令继续执行,替换了原来进程上下文的内容,以新的进程去代替原来的进程,但进程的PID保持不变。同exec函数族

如果你直接在命令行执行 "exec ls", name你的连接会直接退出, 因为exec 会先把当前process 关闭~
至于如何用exec 搞定这个问题, 留给读者自己研究~

posted on 2015-02-03 00:19  Jackiesteed  阅读(394)  评论(0编辑  收藏  举报