if ! ps ax | grep -v grep | grep -v -i tmux | grep "theserver.jar" > /dev/null; then
echo "Server failed to start!"
else
echo "Server successfully started!"
fi
请问我怎样才能用python做这个?我不知道该怎么做。请帮助:(我可以使用 os.system 吗?
提前致谢。
if ! ps ax | grep -v grep | grep -v -i tmux | grep "theserver.jar" > /dev/null; then
echo "Server failed to start!"
else
echo "Server successfully started!"
fi
请问我怎样才能用python做这个?我不知道该怎么做。请帮助:(我可以使用 os.system 吗?
提前致谢。
您可以使用subprocess模块进行 shell 并运行任意 shell 命令,但您可能需要考虑使用PSI或psutil模块之类的东西。
它们是非标准的,因此您必须下载并安装它们,但它们会更加健壮并且能够抵抗错误。(请记住,ps
输出格式可以在不同的平台上发生变化)。这是一个示例 psutil 实现,它或多或少地完成了您正在尝试做的事情。显然交换或使用'Python'
,或者如果您需要检查的不仅仅是名称。'theserver.jar'
p.exe
p.cmdline
import psutil
def find_processes_by_name(name):
for p in psutil.process_iter():
try:
if p.name == name:
yield p.pid
except psutil.error.AccessDenied as e:
pass
raise StopIteration
print "Python processes:"
for pid in find_processes_by_name('Python'):
print '\t', pid
假设我想知道我是否在运行 sshd 的服务器上(只是替换示例中的 jar 文件)
import os
command=" ps ax | grep -v grep | grep -v -i tmux | grep sshd"
result = os.WEXITSTATUS(os.system(command))
if os.WEXITSTATUS(os.system(command)):
print "Server failed to start!"
else:
print "Server successfully started!"
您需要 WEXITSTATUS 来修复 os.system 调用的返回值。供您使用,只需将 sshd 替换为 theserver.jar