鍍金池/ 問答/網(wǎng)絡(luò)安全/ Systemd有什么辦法監(jiān)控服務(wù)下的某個子進程運行狀態(tài)?

Systemd有什么辦法監(jiān)控服務(wù)下的某個子進程運行狀態(tài)?

Systemd有什么辦法監(jiān)控服務(wù)下的某個子進程運行狀態(tài)?

如下圖,Systemd會拉起3個PHP文件作為一組服務(wù),擔心在不知情的情況下其中一個子進程會掛掉(實際確實會遇到,所以每天都會看下。)

查了些關(guān)于Systemd的命令,沒有找到有關(guān)監(jiān)測的命令:
archlinux-Systemd
Systemd 入門教程:命令篇

clipboard.png

望支個招

回答
編輯回答
亮瞎她

要是沒有現(xiàn)成的工具可以用,你可以自己寫一個。

以 python 為例

# -*- coding: utf-8 -*-
from subprocess import check_output
import psutil


def main_process_id(service):
    """ 返回服務(wù)的主進程 PID """
    cmd = 'systemctl show %s --property=MainPID' % service
    output = check_output(cmd, shell=1)
    return int(output.split('\n')[0].split('=')[1])


def show_child_process(ppid):
    """ 打印子進程 """
    for child in psutil.Process(ppid).children():
        print('pid=%d, %s' % (child.pid, child.cmdline()))


if __name__ == '__main__':
    show_child_process(main_process_id('mqtt'))

參閱

  1. systemctl show 命令
  2. https://pypi.python.org/pypi/...
2018年5月4日 22:41