sudo python 进程数量

0x01


process.py程序如下:

def worker(interval):
    print os.getpid()
    n = 5
    while n > 0:
        print("The time is {0}".format(time.ctime()))
        time.sleep(interval)
        n -= 1

if __name__ == "__main__":
    p = multiprocessing.Process(target = worker, args = (200,))
    p.start()

    print os.getpid()
    p.join()
    #print "p.pid:", p.pid
    #print "p.name:", p.name
    #print "p.is_alive:", p.is_alive()


主进程启动了一个子进程,并且会答应出两个进程的进程id。

使用ps -ef | grep process.py看一下当前进程的数量,这里使用两种方式运行

  1. python process.py
yeruoxi   8520  8339  0 13:01 pts/2    00:00:00 python process.py
yeruoxi   8521  8520  0 13:01 pts/2    00:00:00 python process.py

  1. sudo python process.py
root      8653  8339  0 13:02 pts/2    00:00:00 sudo python process.py
root      8675  8653  0 13:02 pts/2    00:00:00 python process.py
root      8676  8675  0 13:02 pts/2    00:00:00 python process.py

使用sudo运行时,多了一个进程,这是为什么呢?

0x02


8653这个进程,不是python程序创建的,这个可通过程序输出的进程id知道。其实这个进程是由sudo命令产生的,sudo命令是先建立一个root用户的shell,sudo python process.py就是新建的这个shell进程,然后8675这个进程就是在这个shell上启动的python process.py的进程,8676就是process.py程序中启动的子进程。

0x03


参考:
https://www.jianshu.com/p/a393e2ba3a75
https://www.cnblogs.com/jackiesteed/articles/4269018.html
https://www.cnblogs.com/bodhitree/p/6018369.html

猜你喜欢

转载自blog.csdn.net/yrx0619/article/details/84988387