今天被运维发现我写的linux脚本的进程占满了屏幕,:)。被贴到群里了。长个记性。

怎么在脚本运行前查看一下是否已经在运行了,如果已经在运行了,应该提示程序已经在运行。demo代码贴出来。

import os
import re

# execute command, and return the infomation. 执行命令并返回命令输出信息
def execCmd(cmd):
    r = os.popen(cmd)
    text = r.read()
    r.close()
    return text

def doSomething():
    print("start Running")

if __name__ == '__main__':
    #ps -ef是linux查看进程信息指令,|是管道符号导向到grep去查找特定的进程,最后一个|是导向grep过滤掉grep进程:因为grep查看程序名也是进程,会混到查询信息里
    programIsRunningCmd="ps -ef|grep python\ programName|grep -v grep"    
    programIsRunningCmdAns = execCmd(programIsRunningCmd)    #调用函数执行指令,并返回指令查询出的信息
    ansLine = programIsRunningCmdAns.split('\n')    #将查出的信息用换行符‘\b’分开
    #判断如果返回行数>2则说明python脚本程序已经在运行,打印提示信息结束程序,否则运行脚本代码doSomething()
    if len(ansLine) > 2:
        print("programName have been Running")
    else:  
        doSomething()

ps命令详解:https://www.jianshu.com/p/cba22cce2f97

linux中ctrl-c, ctrl-z, ctrl-d 区别    https://www.cnblogs.com/klcf0220/p/6125777.html

Logo

更多推荐