Shell到Python的麻烦


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

您可以使用子进程模块并运行任意的shell命令,但是您可能需要考虑使用PSI或psutil模块之类的东西。

它们是非标准的,所以你必须下载并安装它们,但它们将更加健壮和抗错误。(请记住,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

假设我想知道我是否在运行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来修复来自操作系统的返回值。系统调用。您只需将sshd替换为server.jar

相关内容

  • 没有找到相关文章

最新更新