新聞中心
Linux作為一款功能強(qiáng)大的操作系統(tǒng),不僅在服務(wù)器、云計(jì)算等領(lǐng)域中有著廣泛的應(yīng)用,也成為了普通用戶系統(tǒng)的首選操作系統(tǒng)之一。在Linux中,所有的東西都可以通過命令行進(jìn)行控制,這也是Linux的魅力之一。但是,如果需要在Linux系統(tǒng)中部署應(yīng)用程序,并且需要對(duì)應(yīng)用程序進(jìn)行監(jiān)控和自動(dòng)化重啟,這就需要我們用到一些高效的工具。本篇文章將介紹一種常用的方法-使用腳本進(jìn)行自動(dòng)化重啟,從而實(shí)現(xiàn)程序監(jiān)控和自動(dòng)化重啟的功能。

創(chuàng)新互聯(lián)公司專注于網(wǎng)站建設(shè),為客戶提供成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)開發(fā)服務(wù),多年建網(wǎng)站服務(wù)經(jīng)驗(yàn),各類網(wǎng)站都可以開發(fā),品牌網(wǎng)站制作,公司官網(wǎng),公司展示網(wǎng)站,網(wǎng)站設(shè)計(jì),建網(wǎng)站費(fèi)用,建網(wǎng)站多少錢,價(jià)格優(yōu)惠,收費(fèi)合理。
1. 相關(guān)概念
我們需要了解一些相關(guān)的概念。在Linux系統(tǒng)中,監(jiān)控器的作用是監(jiān)測(cè)一個(gè)進(jìn)程的狀態(tài),例如:正在運(yùn)行、已停止運(yùn)行等狀態(tài)。如果監(jiān)測(cè)到某個(gè)進(jìn)程已經(jīng)停止運(yùn)行,我們可以采取一些措施來重新啟動(dòng)它,確保程序能夠正常運(yùn)行。
此外,我們還需要了解重啟腳本的概念。重啟腳本是一種自動(dòng)化腳本,它可以監(jiān)測(cè)程序的狀態(tài),并在必要的時(shí)候重新啟動(dòng)該程序。重啟腳本的作用很重要:當(dāng)我們需要在Linux系統(tǒng)中部署程序時(shí),它可以在程序出現(xiàn)錯(cuò)誤或程序進(jìn)程被殺死時(shí)自動(dòng)重新啟動(dòng)程序。
2. 編寫重啟腳本
在Linux系統(tǒng)中,我們可以使用Bash腳本語(yǔ)言來編寫重啟腳本。下面是一份示例腳本,我們可以將它保存為restart.sh文件:
“`
#!/bin/bash
while true ; do
pgrep myprogram > /dev/null
if [[ $? -ne 0 ]]; then
echo “myprogram is not running. Restarting it now…”
/path/to/myprogram
fi
sleep 60
done
“`
在該腳本中,“pgrep”命令用于檢查進(jìn)程列表中是否存在“myprogram”進(jìn)程。如果該進(jìn)程不存在,則腳本將重新啟動(dòng)“myprogram”。該腳本的運(yùn)行將一直持續(xù)下去。
當(dāng)我們希望停止該腳本時(shí),可以在終端中按下Ctrl+C鍵。
3. 配置定時(shí)執(zhí)行
使用crontab命令可以定期執(zhí)行“restart.sh”重啟腳本。crontab是Linux的一個(gè)系統(tǒng)服務(wù),它可以幫助我們按照一定的規(guī)律自動(dòng)執(zhí)行腳本。
為了配置crontab,我們可以執(zhí)行以下命令:
“`
crontab -e
“`
執(zhí)行該命令后,會(huì)主動(dòng)開啟vim編輯器并加載crontab配置文件。
Crontab的配置文件格式如下:
“`
* * * * * /path/to/restart.sh
“`
當(dāng)我們要在每分鐘執(zhí)行一次“restart.sh”時(shí),可以在crontab文件中配置如下:
“`
* * * * * /path/to/restart.sh > /dev/null 2>&1
“`
其中,”> /dev/null 2>&1″表示將腳本的輸出重定向至/dev/null,這將避免在.logs文件夾中生成大量的多余文件。
4. 啟動(dòng)重啟腳本
現(xiàn)在,我們已經(jīng)編寫了一個(gè)自動(dòng)化的重啟腳本,并且已經(jīng)配置了一個(gè)計(jì)劃任務(wù),實(shí)現(xiàn)了自動(dòng)化的程序監(jiān)控和重啟功能。接下來,我們需要啟動(dòng)該腳本,以便在后臺(tái)運(yùn)行。
我們可以使用以下命令來啟動(dòng)腳本:
“`
nohup /path/to/restart.sh &
“`
該命令會(huì)將腳本放入后臺(tái)運(yùn)行,并且輸出和錯(cuò)誤信息將被重定向至nohup.out文件中,這將確保即使我們關(guān)閉SSH終端窗口,腳本也將繼續(xù)運(yùn)行。
5. 測(cè)試和調(diào)試
當(dāng)我們使用重啟腳本時(shí),需要在終端中使用以下命令檢查腳本是否正在運(yùn)行:
“`
ps aux | grep restart.sh
“`
如果腳本已經(jīng)在運(yùn)行,則會(huì)顯示與腳本相關(guān)的進(jìn)程。我們還可以在nohup.out文件中查看腳本輸出信息,以便驗(yàn)證是否已經(jīng)監(jiān)測(cè)到程序錯(cuò)誤并自動(dòng)執(zhí)行了重啟操作。
當(dāng)我們需要進(jìn)行調(diào)試時(shí),可以在執(zhí)行重啟腳本時(shí)加上“-x”參數(shù),以便打印出腳本所有的輸出信息:
“`
bash -x /path/to/restart.sh > /var/log/myprogram.log 2>&1 &
“`
當(dāng)然,我們也可以在腳本的適當(dāng)位置加入debug語(yǔ)句來打印調(diào)試信息:
“`
#!/bin/bash
while true ; do
pgrep myprogram > /dev/null
if [[ $? -ne 0 ]]; then
echo “myprogram is not running. Restarting it now…” >> myprogram.log
/path/to/myprogram >> myprogram.log 2>&1 &
fi
sleep 60
done
“`
6.
在本篇文章中,我們介紹了一種使用重啟腳本自動(dòng)化監(jiān)測(cè)程序并執(zhí)行重啟操作的方法。它是一種簡(jiǎn)單、高效的方法,可以幫助我們實(shí)現(xiàn)程序監(jiān)控和自動(dòng)化重啟,以確保程序能夠保持正常的狀態(tài)運(yùn)行。
相關(guān)問題拓展閱讀:
- LINUX進(jìn)程監(jiān)控保護(hù)
- 幾個(gè)常用的Linux監(jiān)控腳本
LINUX進(jìn)程監(jiān)控保護(hù)
幾種辦法,
1, 最簡(jiǎn)單的,寫一個(gè)腳本,比如
#!/bin/sh
while true
do
./1234 xx bb
done
執(zhí)行這個(gè)腳本,就不用擔(dān)心 1234 退出后出問題了。
2, 用上面的方法,你差喚慶可能會(huì)提出,如果腳本本身被殺了怎么辦…… 可以用定時(shí)任務(wù),比如 通過 crontab 可以每分鐘去檢查一下1234進(jìn)程是否還在
比如虛握下面的腳本可以檢查 1234 是否存在,如果不存在就會(huì)自動(dòng)啟動(dòng) 1234
#!/bin/sh
ps -A | awk ‘{print $4}’ | grep -q ‘^1234$’
if ; then
/PATH/TO/1234 xx bb
fi
假定這個(gè)腳本叫 a.sh
然后用crontab -e增加定時(shí)任務(wù)
* * * * * /path/to/a.sh
即可。鏈凳
#!/bin/bash
wile true
do
PROGRAM=$(/bin/喚含斗ps -ef | grep “1234” | grep -v “grep” | wc -l)
if
then
sleep 10
else
/bin/bash /1234 參數(shù)和磨
sleep 10
fi
done
幾個(gè)常用的Linux監(jiān)控腳本
幾個(gè)常用的Linux監(jiān)控腳本
下面是幾個(gè)主機(jī)監(jiān)控的腳本,大家可以根據(jù)自己的情況再進(jìn)行修改,希望能給大家一點(diǎn)幫助。
1、查看主機(jī)網(wǎng)卡流量
#!/bin/bash
#network
#Mike.Xu
while : ; do
time=’date +%m”-“%d” “%k”:”%M’
day=’date +%m”-“%d’
rx_before=’ifconfig eth0|sed -n “8”p|awk ‘{print $2}’|cut -c7-‘
tx_before=’ifconfig eth0|sed -n “8”p|awk ‘{print $6}’|cut -c7-‘
sleep 2
rx_after=’ifconfig eth0|sed -n “8”p|awk ‘{print $2}’|cut -c7-‘
tx_after=’ifconfig eth0|sed -n “8”p|awk ‘{print $6}’|cut -c7-‘
rx_result=$
tx_result=$
echo “$time Now_In_Speed: “$rx_result”kbps Now_OUt_Speed: “$tx_result”kbps”
sleep 2
done
2、系統(tǒng)狀況監(jiān)控
#!/bin/sh
#systemstat.sh
#Mike.Xu
IP=192.168.1.227
top -n 2| grep “Cpu” >>./temp/cpu.txt
free -m | grep “Mem” >> ./temp/mem.txt
df -k | grep “sda1” >> ./temp/drive_sda1.txt
#df -k | grep sda2 >> ./temp/drive_sda2.txt
df -k | grep “/mnt/storage_0” >> ./temp/mnt_storage_0.txt
df -k | grep “/mnt/storage_pic” >> ./temp/mnt_storage_pic.txt
time=`date +%m”.”%d” “%k”:”%M`
connect=`netstat -na | grep “219.238.148.30:80” | wc -l`
echo “$time $connect” >> ./temp/connect_count.txt
3、監(jiān)控主機(jī)的磁盤空間,當(dāng)使用空間超過90%就通過發(fā)mail來發(fā)警告
#!/bin/bash
#monitor available disk space
SPACE=’df | sed -n ‘/ \ / $ / p’ | gawk ‘{print $5}’ | sed ‘s/%//’
if
then
fi
4、 監(jiān)控CPU和內(nèi)存的使用情況
#!/bin/bash
#script to capture system statistics
OUTFILE=/home/xu/capstats.csv
DATE=’date +%m/%d/%Y’
TIME=’date +%k:%m:%s’
TIMEOUT=’uptime’
VMOUT=’vmstat 1 2′
USERS=’echo $TIMEOUT | gawk ‘{print $4}’ ‘
LOAD=’echo $TIMEOUT | gawk ‘{print $9}’ | sed “s/,//’ ‘
FREE=’echo $VMOUT | sed -n ‘//p’ | sed -n ‘2p’ | gawk ‘{print $4} ‘ ‘
IDLE=’echo $VMOUT | sed -n ‘//p’ | sed -n ‘2p’ |gawk ‘{print $15}’ ‘
echo “$DATE,$TIME,$USERS,$LOAD,$FREE,$IDLE” >> $OUTFILE
5、全方位監(jiān)控主機(jī)
#!/bin/bash
# check_xu.sh
# 0 * * * * /home/check_xu.sh
DAT=”`date +%Y%m%d`”
HOUR=”`date +%H`”
DIR=”/home/oslog/host_${DAT}/${HOUR}”
DELAY=60
COUNT=60
# whether the responsible directory exist
if ! test -d ${DIR}
then
/bin/mkdir -p ${DIR}
fi
# general check
export TERM=linux
/usr/bin/top -b -d ${DELAY} -n ${COUNT} > ${DIR}/top_${DAT}.log 2>&1 &
# cpu check
/usr/bin/sar -u ${DELAY} ${COUNT} > ${DIR}/cpu_${DAT}.log 2>&1 &
#/usr/bin/mpstat -P 0 ${DELAY} ${COUNT} > ${DIR}/cpu_0_${DAT}.log 2>&1 &
#/usr/bin/mpstat -P 1 ${DELAY} ${COUNT} > ${DIR}/cpu_1_${DAT}.log 2>&1 &
# memory check
/usr/bin/vmstat ${DELAY} ${COUNT} > ${DIR}/vmstat_${DAT}.log 2>&1 &
# I/O check
/usr/bin/iostat ${DELAY} ${COUNT} > ${DIR}/iostat_${DAT}.log 2>&1 &
# network check
/usr/bin/sar -n DEV ${DELAY} ${COUNT} > ${DIR}/net_${DAT}.log 2>&1 &
#/usr/bin/sar -n EDEV ${DELAY} ${COUNT} > ${DIR}/net_edev_${DAT}.log 2>&1 &
放在crontab里每小時(shí)自動(dòng)執(zhí)行:
是需要inotify? 還是incrontab
基礎(chǔ)監(jiān)控做的更好的,最輕量的工具,搜
WGCLOUD
關(guān)于linux 監(jiān)控程序 重啟腳本的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
創(chuàng)新互聯(lián)成都網(wǎng)站建設(shè)公司提供專業(yè)的建站服務(wù),為您量身定制,歡迎來電(028-86922220)為您打造專屬于企業(yè)本身的網(wǎng)絡(luò)品牌形象。
成都創(chuàng)新互聯(lián)品牌官網(wǎng)提供專業(yè)的網(wǎng)站建設(shè)、設(shè)計(jì)、制作等服務(wù),是一家以網(wǎng)站建設(shè)為主要業(yè)務(wù)的公司,在網(wǎng)站建設(shè)、設(shè)計(jì)和制作領(lǐng)域具有豐富的經(jīng)驗(yàn)。
當(dāng)前文章:Linux下監(jiān)控程序的神器:重啟腳本實(shí)現(xiàn)輕松自動(dòng)化(linux監(jiān)控程序重啟腳本)
本文來源:http://www.dlmjj.cn/article/dpiphci.html


咨詢
建站咨詢
