0
    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 吗?

提前致谢。

4

2 回答 2

2

您可以使用subprocess模块进行 shell 并运行任意 shell 命令,但您可能需要考虑使用PSIpsutil模块之类的东西。

它们是非标准的,因此您必须下载并安装它们,但它们会更加健壮并且能够抵抗错误。(请记住,ps输出格式可以在不同的平台上发生变化)。这是一个示例 psutil 实现,它或多或少地完成了您正在尝试做的事情。显然交换或使用'Python',或者如果您需要检查的不仅仅是名称。'theserver.jar'p.exep.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
于 2011-04-13T17:17:46.743 回答
1

假设我想知道我是否在运行 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

于 2011-04-13T17:05:56.930 回答