天天看點

systemd 監控

1. 放入  /etc/systemd/system/ 開機不需要登入就能啟動的

2.配置檔案

mkdir WorkingDirectory的目錄
mkdir /export/supervisor

[Unit]
Description="telegraf"
After=network.target

[Service]
Type=forking

ExecStart=/usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf
WorkingDirectory=/export/supervisor

SuccessExitStatus=0
# 程序檔案最大打開書
LimitNOFILE=2024000
# 輸出到哪裡 如果單元的标準輸出(StandardOutput=)或标準錯誤(StandardError=)
# 中含有 journal, syslog, kmsg 之一, 那麼該單元将會自動獲得 After=systemd-journald.socket 依賴
StandardOutput=syslog
StandardError=syslog
# 日志辨別
SyslogIdentifier=supervisor
# 設定在單元停止時,殺死程序的方法。 取值範圍如下: control-group, process, mixed, none

# control-group 表示殺死該單元的 cgroup 内的所有程序(對于 service 單元,還要先執行 ExecStop= 動作)。
# process 表示僅殺死主程序。
# mixed 表示首先向主程序發送 SIGTERM 信号(見下文), 然後再向該單元的 cgroup 内的所有其他程序發送 SIGKILL 信号(見下文)。
# none 表示僅執行 ExecStop= 動作, 而不殺死任何程序。 這會導緻即使單元已經停止, 但是該單元的 cgroup 依然一直存在, 直到其中的程序 全部死亡。
# 殺死程序的時候, 第一步首先使用 KillSignal= 信号(預設為 SIGTERM) (如果 SendSIGHUP=yes ,那麼還會立即緊跟一個 SIGHUP 信号), 若等候 TimeoutStopSec= 時間後, 程序仍然未被殺死, 則繼續第二步使用 SIGKILL 或 FinalKillSignal= 信号(除非 SendSIGKILL=no)強制殺死。
# 預設值是 control-group
KillMode=process
KillSignal=SIGQUIT
# 設定該服務允許的最大停止時長。如果該服務未能在限定的時長内成功停止,
# 那麼将會被強制使用 SIGTERM 信号關閉, 如果依然未能在相同的時長内成功停止,
# 那麼将會被強制使用 SIGKILL 信号關閉(參見 systemd.kill(5) 手冊中的 KillMode= 選項)。
TimeoutStopSec=5

# 當服務程序正常退出、異常退出、被殺死、逾時的時候,是否重新啟動該服務。
# "服務程序"是指 ExecStart=, ExecStartPre=, ExecStartPost=, ExecStop=, ExecStopPost=, ExecReload= 中設定的程序。
# 當程序是由于 systemd 的正常操作(例如 systemctl stop|restart)而被停止時,該服務不會被重新啟動。
# "逾時"可以是看門狗的"keep-alive ping"逾時,也可以是 systemctl start|reload|stop 操作逾時。
# 該選項可以取下列值之一:no, on-success, on-failure, on-abnormal, on-watchdog, on-abort, always
# "no"(預設值)表示不會被重新開機。
# "always"表示會被無條件的重新開機。
# "on-success"表示僅在服務程序正常退出時重新開機,所謂"正常退出"是指: 退出碼為"0",或者程序收到 SIGHUP, SIGINT, SIGTERM, SIGPIPE 信号并且退出碼符合 SuccessExitStatus= 的設定。
# "on-failure"表示僅在服務程序異常退出時重新開機,所謂"異常退出"是指: 退出碼不為"0",或者程序被強制殺死(包括"core dump"以及收到 SIGHUP, SIGINT, SIGTERM, SIGPIPE 之外的其他信号), 或者程序由于看門狗或者 systemd 的操作逾時而被殺死。
# 對于 on-failure, on-abnormal, on-abort, on-watchdog 的分别适用于哪種異常退出,
Restart=always