0

ssh server我想知道是否有办法使用 Python找出系统中的状态。我只想知道服务器是否处于活动状态(只是是/否)。即使它只是一个 linux 命令也会有所帮助,这样我就可以使用popen来自subprocess模块的 python 并运行该命令。

谢谢

PS:我正在openssh-server使用linux (ubuntu 12.04)

4

2 回答 2

1

如果您想要一种通用的方式来判断进程是否正在运行,您可以使用ps.

def IsThisProcessRunning( ps_name ):
  ps = subprocess.Popen("ps axf | grep %s  | grep -v grep" % ps_name, 
                        shell=True, stdout=subprocess.PIPE)
  output = ps.stdout.read()
  ps.stdout.close()
  ps.wait()

  if re.search(ps_name, output) is None:
      return False
  else:
      return True

IsThisProcessRunning('/usr/sbin/apache2') # True, if Apache2 is running.

如果你有一个常用的名字;您可以指定位置,例如/usr/sbin/apache2

为了安全起见,您可以结合查找进程名称,同时查找 pid 文件。这是init.d脚本中常用的技术。

try:
    pf = file('/var/run/my_program.pid', 'r')
    pid = int(pf.read().strip())
    pf.close()
except IOError:
    pid = None

if pid:
   # Process is running.
于 2013-03-26T14:07:28.407 回答
0

运行service sshd status(例如 via Popen())并阅读它告诉您的内容。

于 2013-03-26T14:01:47.937 回答