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 搞定这个问题, 留给读者自己研究~