问题描述
|
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命令,但是您可能需要考虑使用PSI或psutil模块之类的东西。
它们是非标准的,因此您必须下载并安装它们,但是它们将更加健壮并且可以抵抗错误。 (请记住,“ 1”输出格式可以在不同平台上改变)。这是一个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