利用微信及时抢占linux服务器资源(干货)

利用微信及时抢占linux服务器资源(干货)

在linux服务器多用户的情况下,抢占资源比较严重。博主就是在师兄师姐忙着跑毕设实验的空闲时间里去跑自己的实验(夹缝中求生存啊(╥╯^╰╥))。但是这个空隙时间如何能及时的抓住呢?自己就想写一个脚本,来监测资源占用情况,然后来及时通知自己。

##环境 - python(2或3) - wxpy 安装直接用pip install wxpy


代码

import os
from wxpy import *
import time 
import datetime
bot = Bot(cache_path="wxpy/wxpy.pkl",console_qr=2, qr_path="wxpy/qr.png")
userlist=['username1',"username2","username3"] #不包括自己的用户名,如果是监测自己的程序,这里换成仅仅包含自己用户名也可

def psloginfo():
    pslog = os.popen("ps -eo user,size,time,cmd").read()
    pslogs = pslog.split("\n")
    title = pslogs[0]
    infolist = pslogs[1:]
    psinfo = []
    for info in infolist:
        inf = info.split(" ")
        inf = [s for s in inf if s!='']
        if len(inf)>=4 and inf[0] in userlist and int(inf[1])>102400: # 大于百兆程序进程
            psinfo.append(" ".join(inf))
    flag = 0
    if len(psinfo)>0:
        flag = 1
    title = "当前机器占用情况 \n 用户名 内存 时间 命令"
    psinfolog = title+"\n"+"\n".join(psinfo)
    return psinfolog,flag

def main():
    # 设置区
    # myself = bot.self  # 用自己的微信号给自己发消息
    bot.enable_puid('wxpy/wxpy_puid.pkl')
    me = bot.friends().search('律己')[0] # 通过微信小号给自己发消息
    start_time, end_time = 1,9 # 免打扰时间1-9点
    while True:
        @bot.register(me, TEXT)
        def auto_friends_msg(msg):
            if msg.text =="top":
                return psloginfo()[0]
            else:
                return "你好,程序监控机器人为你服务!\n 回复命令:\n top -查看当前机器占用情况\n"

        now = datetime.datetime.now()
        if start_time > now.hour and now.hour > end_time: # 休息时间
            _,flag = psloginfo()
            if not flag:
                # myself.bot.file_helper.send("有空机器,可以跑程序啦!")
                me.send("有空机器,可以跑程序啦!")
            time.sleep(60*30)
        time.sleep(30)

if __name__=="__main__":
    main()


##使用教程

  1. 代码放到你的linux服务器上,新建wxpy文件(用于缓存文件,二维码等)
  2. 将你需要监控的账号填到userlist中,在main中设置是由自己的微信号通过文件助手(file_helper)或你的小号给自己发消息.(建议用小号,wxpy是非腾讯官方,存在账号无法登陆微信网页版的风险)
  3. 用python 命令直接跑起来,就可以了。建议放到后台上跑,否则关闭了终端程序就断了。可以采用screen命令,screen -S wx,screen的具体用法请查看博客

##效果图

通过发送top来返回服务器占用情况

comments powered by Disqus