今天被运维发现我写的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

本文介绍了一种在Linux环境下防止脚本重复运行的方法,通过检查当前是否有相同脚本正在运行来避免资源浪费。使用ps和grep命令组合查询运行中的Python脚本实例,若已存在则提示并终止,确保脚本的唯一运行。
1258

被折叠的 条评论
为什么被折叠?



