python实现linux下的简单进程监

发布时间:2019-08-06 09:13:35编辑:auto阅读(1355)

    最近看writeup看的有点头疼,深深感受到了自己的无知。确实还需要学习很多东西、一点一点的积累!加油!

    python确实很强大哦~,要想学好python就得自己多动手堆代码!
    无聊写了一个进程监控的脚本,就当做是练习。其实最终实现的功能也很简单。
    记录如下:
    0x00:
    首先这种写法要学会哦,虽然不知道具体有什么用吧,但是这代码写的,看着就很有水平!哈!

    def main():
        while 1:
            psutil_process()
    
    if __name__=="__main__":
        main()

    name ==”main“的作用是为了对py的运行方式进行检测,如果模块是被导入,name的值为模块的名字,如果是直接执行name的值==”main
    网上找了一个解释,贴在这里,希望有懂得人来讲讲具体区别。
    0x01:
    进程监控、刚开始我的想法是通过两次执行执行ps -e命令,比较不同。于是就上网
    找到了subprocess模块。具体的用法还是自行百度,网上资料很多的。
    主要是用subprocess.Popen()这个方法通过shell创建一个子进程,不过这个方法不太可行,主要的问题出在两者的比较上。。大家有兴趣可以去做一下,主要是为了练习python
    0x02:
    继续百度于是找到了psutil这个模块
    代码如下:

    import subprocess
    import sys
    import psutil
    import time
    import datetime
    log_file='monitor_log.txt'
    def print_process_information(pid):
        p=psutil.Process(pid)
        message='[!][Add]pid:'+str(p.pid)+'  '+'name:'+p.name()+'  '+'username:'+p.username()+'  '+'status:'+p.status()+'  '+'start_time:'+datetime.datetime.fromtimestamp(p.create_time()).strftime("%H:%M:%S")
        print message
        fp=open(log_file,'a')
        try:
            message+='\n'
            fp.writelines(message)
        finally:
            fp.close()
    
    def psutil_process():
        pids_1=psutil.pids()
        time.sleep(2)
        pids_2=psutil.pids()
        for pid in pids_2:
            if pid in pids_1:
                #print 'ok!'
                pass
            else:
                print_process_information(pid)
    def main():
        while 1:
            psutil_process()
    
    if __name__=="__main__":
        main()

    0x03:
    最后可以在改进一下

    message='[!][Add]pid:'+str(p.pid)+'  '+'name:'+p.name()+'  '+'username:'+p.username()+'  '+'status:'+p.status()+'  '+'start_time:'+datetime.datetime.fromtimestamp(p.create_time()).strftime("%H:%M:%S")

    这里可以用格式化输出。。做个元组什么的
    0x04:
    通过这个小小的进程监控,我学习了subprocess和psutil,了解了管道的单方向性。Perfect!

关键字