前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python实现linux下的简单进程监

python实现linux下的简单进程监

作者头像
py3study
发布2020-01-13 12:34:37
7440
发布2020-01-13 12:34:37
举报
文章被收录于专栏:python3python3

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

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

代码语言:javascript
复制
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这个模块 代码如下:

代码语言:javascript
复制
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: 最后可以在改进一下

代码语言:javascript
复制
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!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档