linux服務檢測和重啟

2021-10-13 09:26:51 字數 1284 閱讀 6102

今日,乙個使用者反饋老的系統應用服務不穩定,有自己停掉的風險,需要開發乙個自動重啟定時服務的指令碼。基於這個需求,我開發了乙個sh指令碼進行服務的檢測和重啟,以下操作仍有許多不足之處,請斟酌後使用。

基於現有服務採取ps aux|grep |grep -v grep|wc -l` -gt 0或者systemctl status進行判斷,根據$?(上一次命令退出狀態)判斷服務是否正常執行。

根據服務狀態檢測結果決定是否執行服務重啟命令

#!/bin/bash

# sudoif[

`id -u`

-ne 0 ]

then

echo

"please use sudo privilege!"

exit

fi# 檢測

detect()"

="command:"

]then

$> /dev/null 2>

&1 [

$? -eq 0 ]

else[`

ps aux|

grep $1|

grep -v grep

|wc -l`

-gt 0 ]

fireturn$?}

# 檢測和重啟($1:服務名;$2:檢測命令;$3:啟動命令)

detect_and_retry(

)# 檢測mongod服務

echo

"detect services..."

detect_and_retry "mongo"

"mongo"

"nohup /usr/bin/mongod --config /etc/mongod.conf"

# 檢測mysql服務

detect_and_retry "mysql"

"command:systemctl status mysqld.service"

"systemctl start mysqld.service"

# 檢測nginx服務

detect_and_retry "nginx"

"nginx"

"nohup /usr/local/nginx/sbin/nginx"

# 檢測php-fpm服務

detect_and_retry "php-fpm"

"command:systemctl status php-fpm"

"systemctl start php-fpm.service"

Systemd 自帶服務檢測重啟

1.最簡單的自動檢測重啟 vim etc systemd system mysqld.service unit description mysql server by xdd after network.target after syslog.target install wantedby mult...

linux上檢測服務占用記憶體並自動重啟

import os import socket def check the memory ip list hostname socket.gethostname 獲取計算機名稱 ip adress socket.gethostbyname hostname print ip adress ip ad...

linux上檢測服務占用記憶體並自動重啟

import os import socket def check the memory ip list hostname socket.gethostname 獲取計算機名稱 ip adress socket.gethostbyname hostname print ip adress ip ad...