Linux監控服務並主動重啟

2022-04-01 19:18:38 字數 2703 閱讀 2637

linux查詢後台程序,如果沒有程序號,則重啟服務:

#!/bin/sh

basepath=$(cd `dirname $0`; pwd

)while

true

doprocnum=`ps -ef|grep

"服務名稱

"|grep -v grep|wc -l`

if [ $procnum -eq 0

]

then

#啟動命令

echo `date +%y-%m-%d` `date +%h:%m:%s` "

restart 服務

" >>$basepath/shell.log

fisleep

1done

結合  crontab命令

對於24小時開機執行的伺服器可能用不到的,但是對非24小時開機,又想定時執行任務的機器還是十分有用的。

crontab [-u user] [-l | -r | -e] [-i]

-l:列出當前使用者的計畫任務。

-e:編輯當前使用者的計畫任務。

-r:刪除當前使用者的所有計畫任務。即刪除/var/spool/cron/username檔案。

-u:管理指定使用者的計畫任務,僅root有許可權。

-i:在使用-r選項刪除所有任務時提示使用者確認。

crontab的語法

crontab分為兩類:

1、系統cron任務

系統的crontab存放在 /etc/crontab

# vim /etc/crontab

shell=/bin/bash

path=/sbin:/bin:/usr/sbin:/usr/bin

mailto=root

# for details see

man4

crontabs

# example of job definition:

# .---------------- minute (0 - 59

)# | .------------- hour (0 - 23

)# | | .---------- day of month (1 - 31

)# | | | .------- month (1 - 12

) or jan,feb,mar,apr ...

# | | | | .---- day of week (0 - 6) (sunday=0 or 7

) or sun,mon,tue,wed,thu,fri,sat

# | | | | |# * * * * * user-name command to be executed

a、每一行定義乙個週期性任務,共7個字段。

b、此處的環境變數不同於使用者登入後獲得的環境,因此建議命令使用絕對路徑。

c、執行結果會傳送郵件給mailto指定的使用者。

2、使用者cron任務

使用者的crontab檔案存放在 /var/spool/cron/username

# crontab -e -u username

a、每一行定義乙個週期性任務,共6個字段。

b、此處的環境變數不同於使用者登入後獲得的環境,因此建議命令使用絕對路徑。

c、執行結果會傳送郵件給當前使用者。

星號(*)匹配所有有效的值。

短橫線(-)表示範圍連續取值。

逗號(,)表示離散取值。

正斜線(/)指定間隔頻率。例如,0-59/2 在分鐘字段表示每兩分鐘。

指定的時間點不能被步長整除時,其意義將不存在。例如 */7 * * * *

注意:%在crontab中被認為是newline,使用時需要用 \ 轉義。比如crontab檔案中,如果有 "date +%y%m%d",必須替換為:"date +\%y\%m\%d"。

crontab的最小時間單位為」分鐘「,想完成」秒「級任務

分鐘    小時       幾號       月份     星期幾

*/5 * * * *每5分鐘執行一次

3 * * * *每小時的第3分鐘執行一次

34 * * 5

每週5的4點3分執行一次56

7 * *每月的7號的6點5分執行一次78

910 *每年的10月9號8點7分執行一次

98 * * 3,7

每週3和週日的8點9分

08,20 * * 3,7

每週3和週日的8點和20點執行一次

09-18 * * 1-5 周一到周五的9-18點,即工作時間內的每小時07

2512 * 每年的12月25號7點執行一次

檢視所有使用者的crontab

# for u in `cat /etc/passwd | cut -d":" -f1`;do crontab -l -u $u;done  

檢視cron的日誌

# tail -50f /var/log/cron

linux下監控程式並崩潰重啟

if test pgrep f 1 wc l eq 0 then echo 程序不存在 else echo 存在程序 fi執行 crontab e 裡面輸入 1 bin bash home automonitor.sh 代表一分鐘執行一次指令碼 bin sh serverpid ps aux gre...

監控php fpm並自動重啟服務的shell指令碼

指令碼 複製 如下 bin bash 變數初始化 process php fpm 程序名 startcmd etc init.d php fpm start 啟動命令 down 0 while true do 取得http狀態碼 code curl h host www.jb51.net m 5 l...

監控並自動重啟tomcat

bin sh tomcat啟動程式 這裡注意tomcat實際安裝的路徑 starttomcat usr local tomcat bin startup.sh 定義要監控的頁面位址 解析頁面時間設定 timetransfer 15 快取位址如果不需要可以不配置 tomcatcache usr loc...