自動重啟故障相信大家都遇到過,原因也有很多,跟系統,硬體或者外界因素都有關,但是在Linux中可沒有那麼簡單。這里集中討論linux實現自動重啟程序的方法。下面一起看看!
自動重啟腳本
假定需要實現重啟的程序名為 test ,我們這里通過判斷進程數目來判斷程序是否正常。
ps -ef | grep "$1" | grep -v "grep" | wc –l 是獲取$1(本例中為test)的進程數,腳本根據進程數來決定下一步的操作。通過一個死循環,每隔1秒檢查一次系統中的指定程序的進程數。
代碼如下:
腳本check
#!/bin/sh
#-----------------------------------# 函數: CheckProcess# 功能: 檢查一個進程是否存在# 參數: $1 --- 要檢查的進程名稱# 返回: 如果存在返回0, 否則返回1.#---------------------------------------CheckProcess(){ # 檢查輸入的參數是否有效 if [ "$1" = "" ]; then return 1 fi #$PROCESS_NUM獲取指定進程名的數目,為1返回0,表示正常,不為1返回1,表示有錯誤,需要重新啟動 PROCESS_NUM=`ps -ef | grep "$1" | grep -v "grep" | wc -l` if [ $PROCESS_NUM -eq 1 ]; then return 0 else return 1 fi}
# 檢查test實例是否已經存在while [ 1 ] ; do CheckProcess "test" CheckQQ_RET=$? if [ $CheckQQ_RET -eq 1 ]; then# 殺死所有test進程,可換任意你需要執行的操作 killall -9 test exec ./test & fi sleep 1done
腳本start:
加入limit corempsize 102400,設置core file的大小,一旦程序Core Dump,有跡可尋。在該腳本中後台執行check腳本,可以省去很多麻煩,
#!/bin/cshlimit corempsize 102400
./check &
補充:電腦總是自動重啟怎麼辦
1、右擊“我的電腦”,選擇“屬性”項。
2、在打開的系統屬性窗口中選擇“高級系統設置”項進入。
3、在打開的“系統屬性”窗口中,切換至“高級”選擇卡,然後點擊“系統和故障恢復 設置”按鈕。
4、在打開的窗口中取消勾選“自動重啟啟動”項並按確認即可。
5、當電腦在使用的過程中產生藍屏時,我們就可以進入“系統日誌”管理器中查看產生系統失敗的根源啦。打開“運行”對話框,輸入命令“eventvwr.msc”即可查看日誌信息,從中定位系統產生失敗的原因。
6、當然,我們也可以通過禁用某些開機項來嘗試修復系統。打開“運行”對話框,輸入命令“msconfig”進入“系統配置實用程序”界面,勾選“常規”選項卡下的“診斷啟動”選項。
7、還有一種修復計算機藍屏或重啟故障的方法,就是在電腦啟動時按“F8”進入系統故障菜單,從中選擇“安全模式”進入或“最後一次正確的配置”項進入系統,將及有可能修復系統。
8、當然,如果以上方法均不能解決問題,那麼建議您還是重新安裝一下系統,畢竟安裝系統所耗費的時間相對修復所用時間要少許多。一勞永逸之事才是王道。
相關閱讀:電腦自動重啟方法
方法一:
1、打開控制面板-管理工具-計劃任務程序
2、創建基本任務,名稱欄目,輸入“定時重啟”,下一步;
3、在窗口裡,有每天、每周、每月、一次各種選擇,這里小誠選擇一次,這次執行完就失效,您可以根據自己的情況進行選擇哈,點擊下一步;
4、設置重啟的日期、時間點,下一步;
5、選擇啟動程序,下一步;
6、在打開頁面里,點擊瀏覽,找到C;WindowsSystem32Shutdown.exe,點擊打開;
7、在添加參數欄目里輸入“-r”(重啟),進行下一步
8、點擊完成,即可實現自動重啟了
方法二:
㈡ 在Linux下利用Shell腳本編寫一程序,實現1到100之和。
#!/bin/bash
for num in {1..100}
do
sum=$(($sum + $num))
done
echo $sum
#註:bash中產生序列的方法用 seq 1 100 或者 {1..100} 注意其中不能有空格!
#後面的語法比較簡單,求值用 $(( ... )) 中間的省略號表示表達式;
#shell語法 賦值的時候變數直接寫名字,取值的時候要在變數名前面加上 $ .
#附帶,命令行一句話的版本:
for num in {1..100};do sum=$(($sum + $num));done;echo $sum