導航:首頁 > 操作系統 > waitlinux腳本

waitlinux腳本

發布時間:2022-06-30 13:09:52

linux一個sh小腳本,這里的wait用的對嗎為什麼不是sleepwait可以這么用嗎

你這種情況比較復雜!wait命令後面跟的參數是進程的id,根據我的理解,wait是等待某進程結束後再往下執行腳本,如果wait後不跟參數,就是等待以上所有進程都執行完後再往下執行腳本。
按照你的意思,是要等待一段時間的,則應該用sleep命令,sleep就是用來延遲一段時間用的,將wait300改成sleep300才正確。

㈡ linux下如何監聽進程

一、supervise

Supervise是daemontools的一個工具,可以用來監控管理unix下的應用程序運行情況,在應用程序出現異常時,supervise可以重新啟動指定程序。

使用:
mkdir test
cd test
vim run 寫入希望執行的操作
supervise test (注意這里是的參數是run文件上層的文件夾,改變run的為可執行 chmod +x run)

二、monit

monit是一個小型的開放源碼工具來管理和監控Unix系統。Monit可以自動維護進程,及時避免進程異常退出等產生的問題。

系統: monit可以監控問題的發生,包括進程狀態、系統cpu負載、內存佔用情況等,例如當apache服務的cpu負載以及內存閘弄情況過高時候,它會重啟apache服務。
進程: monit可以監控守護進程,包括系統進程。例如當某個進行down掉,它會自動恢復重啟該進程。
文件系統:Monit可以監控本地文件、目錄、文件系統的變化,包括時間戳、校驗值、大小的變化。例如,可以監控文件sha1以及md5的值,來監控文件是否發生變化。
網路:monit可以監控網路連接,支持TCP、UDP、Unix domain sockets以及HTTP、SMTP等。
定時腳本:monit可以用來定時測試程序和腳本,獲取程序輸出結果,進而判斷是否成功或其他情況。
安裝:

sudo apt-get install monit
編輯配置:
sudo vim /etc/monit/monitrc
啟動、停止、重啟:
sudo /etc/init.d/monit start
sudo /etc/init.d/monit stop
sudo /etc/init.d/monit restart
設置頁面監控狀態:
set httpd port 2812 and
allow 0.0.0.0/0.0.0.0
allow localhost
增加監控:
需要注意的是,這里需要添加start和stop,缺一個都是不行的

1.根據程序名稱來監控

check process test with MATCHING test.py
start program = "/home/yxd/test.py"
stop program = "xxxxx"
2.根據pid監控

check process apache with pidfile /var/run/httpd.pid
start program = "/etc/init.d/rcWebServer.sh start https"
stop program = "/etc/init.d/rcWebServer.sh stop https"
if changed pid then aler
參考:用monit監控系統關鍵進程
supervisord

Supervisor是一個C/S系統,它可以在類unix操作系統讓用戶來監視和控制後台服務進程的數量。它是由python編寫的,常用於進程異常退出的重啟保護。
安裝:

pip install supervisor
查看配置文件:

echo_supervisord_conf
從該命令的結果中,可以看到各個模塊的配置信息。
創建配置文件:

echo_supervisord_conf > /etc/supervisord.conf
配置應用:

[program:test]
command=python /root/test_supervisor.py
process_name=%(program_name)s
stdout_logfile=/root/test.log
stderr_logfile=/root/test.log
保存,啟動:

/usr/bin/supervisord -c /etc/supervisord.conf

㈢ linux伺服器上寫個腳本,每隔xx分鍾ping指定ip,如果不通,向指定郵箱發送郵件。

別發郵件了 直接發簡訊多好。。。
我以前練習的時候寫的,挺爛的但是能用

#!/bin/bash
#ping 2分鍾結果存入文件
#var 1.0
#LX 2009年4月6日

#help function
help()
{
cat << HELP

============= ping120s.sh help =============
ping目標地址,存入文件。 配合crontab用

USAGE:
-h 顯示幫助
-to IP ping的IP地址
-sh 檢查歷史是否有丟包
-show 檢查詳細歷史
-gz 壓縮以前的記錄,並刪除txt文件
-of dir 指定輸出文件的位置(要求絕對目錄),也可以指定文件名(不建議)

HELP
}

#簡略輸出結果的函數
shmin()
{
for fName in PING__*.txt
do
var=$(sed -n '/.*packets.*/p' $fName | sed 's/.*received,//g' | sed 's/, time.*//g')
var="$(sed -n '/2009_.*/p' $fName) ==>$var"
echo "$var"
var=""
done
}

toGz()
{
gzName=ALL_$(date +%Y年%m月%d日%k時).tar.gz
gzName=`echo "$gzName" | sed 's/ /0/g'`
tar cvfz "$gzName" *.txt
[ ! -d old ] && mkdir old
[ ! -d tmp ] && mkdir tmp
mv $gzName old/ && mv *.txt tmp/
}
############## main ###############
[ -z $1 ] && { echo "參數錯誤"; help; exit 1; }
#fileName=ping__$1__$(date +%m月%d日%k:%M)
#刪除文件名中的空格, 不刪除的話0點到10點之前都沒法記錄 日亞終於找到毛病了
#fileName=`echo "$fileName" | sed 's/ /0/g'`
#echo $fileName
TIMEOUT=30

while [ -n "$1" ]; do
case "x$1" in
x-h) help; exit 0;;
x-to)
shift
[ -z "$1" ] && { echo "參數錯誤"; help; exit 1; }
pingTo="$1"
shift
;;
x-sh) shmin; exit 0;;
x-show) clear; tail -n 3 PING__*.txt; exit 0;;
x-gz) toGz; exit 0;;
x-of)
shift
[ -z "$1" ] && { echo "參數錯誤"; help; exit 1; }
ofilename="$1"
shift
;;
*) echo "error"; help; exit 1 ;;
esac
done

#-to是必須參數,ping到那裡
[ -z "$pingTo" ] && { echo "-to 參數必選之參數"; help; exit 1; }

#判斷存數文件的中間名
if [ -z "$ofilename" ] || [ -d "$ofilename" ]; then
mfileName=$pingTo
else
mfileName=${ofilename##/*/}
fi
#生成存儲文件的名稱,如沒有sed那句過了夜裡12點0點開頭到9點都無法存儲,應為有個空格 日!
fileName=PING__"$mfileName"__$(date +%m月%d日%k:%M)
fileName=`echo "$fileName" | sed 's/ /0/g'`

#存儲的目錄判斷,默認是$PWD,主要是判斷絕對目錄開頭的/和結束的/
dirName="$PWD/"
if [ "x${ofilename%${ofilename#?}}" = "x/" ]; then
if [ -d "$ofilename" ]; then
dirName="$ofilename"
[ "x${ofilename#${ofilename%?}}" = "x/" ] || dirName="$dirName/"
elif [ -d "${ofilename%/*}" ]; then
dirName="${ofilename%/*}/"
fi
fi

#echo $fileName
#echo $dirName
echo "$(date +%Y_%m_%d__%H:%M)" > "$dirName$fileName.txt"
ping "$pingTo" -n -w "$TIMEOUT" >> "$dirName$fileName.txt"
wait
bash sms.sh "$pingTo" 2>>sms.log
exit 0

下面是發簡訊腳本 sms.sh
lx@lx-Linux:~/bash/lx/ping$ cat sms.sh
#!/bin/bash

data=$(sh ping120s_V1.sh -sh| awk -F"[% ]" '{print $3}'|tac)
data=$(echo $data | awk '{print $1,$2}')
shijian=$(date +%Y年%m月%d日%k時%M分|sed 's/ *//g')
if [ -z $1 ]
then
address=""
else
address="$1"
fi

#echo $data
#echo $shijian
#data="40 $data"
for i in $(echo $data)
do
# echo "-->$i"
if [ $i -ge 40 ]
then
# echo "$i>=40"
sms -f 手機號碼 -p 飛信密碼 -t 發送給那個手機 -m "To:$address $i% loss -- $shijian" >>sms.log
wait
echo "To:$address $i% loss -- $shijian" >>sms.log
# bash ping120s_V1.sh -gz
exit 9
else
# echo "$i<40"
:
fi
done

exit 0

㈣ linux 一個sh小腳本,這里的wait用的對嗎為什麼不是sleepwait可以這么用嗎

wait 命令後面跟的參數是進程的id,根據我的理解,wait是等待某進程結束後再往下執行腳本,如果wait後不跟參數,就是等待以上所有進程都執行完後再往下執行腳本。
按照你的意思,是要等待一段時間的,則應該用sleep 命令,sleep就是用來延遲一段時間用的,將wait 300 改成sleep 300才正確。

㈤ LINUX、UNIX系統啟動不成功,要如何解決

A 內核引導
當計算機打開電源後,首先是BIOS開機自檢,按照BIOS中設置的啟動設備(通常是硬碟)來啟動。緊接著由啟動設備上的grub程序開始引導linux,當引導程序成功完成引導任務後,Linux從它們手中接管了CPU的控制權,然後CPU就開始執行Linux的核心映象代碼,開始了Linux啟動過程。也就是所謂的內核引導開始了,在內核引導過程中其實是很復雜的,我們就當它是一個黑匣子,反正是linux內核做了一些列工作,最後內核調用載入了init程序,至此內核引導的工作就完成了。交給了下一個主角init。
B 運行init
init
進程是系統所有進程的起點,你可以把它比擬成系統所有進程的老祖宗,沒有這個進程,系統中任何進程都不會啟動。init 程序首先是需要讀取配置文件
/etc/inittab。inittab是一個不可執行的文本文件,它有若干行指令所組成。具體內容如下:(你可以在你的linux上執行命令 cat
/etc/inittab 這樣獲得)

復制代碼
代碼如下:
# inittab This file describes how the INIT process should set up
# the system in a certain run-level.
#
# Author: Miquel van Smoorenburg,
# Modified for RHS Linux by Marc Ewing and Donnie Barnes
#
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not havenetworking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
###表示當前預設運行級別為5(initdefault);
id:5:initdefault:
###啟動時自動執行/etc/rc.d/rc.sysinit腳本(sysinit)
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
###當運行級別為5時,以5為參數運行/etc/rc.d/rc腳本,init將等待其返回(wait)
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
###在啟動過程中允許按CTRL-ALT-DELETE重啟系統
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# When our UPS tells us power has failed, assume we have a few minutes
# of power left. Schele a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
###在2、3、4、5級別上以ttyX為參數執行/sbin/mingetty程序,打開ttyX終端用於用戶登錄,
###如果進程退出則再次運行mingetty程序(respawn)
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
###在5級別上運行xdm程序,提供xdm圖形方式登錄界面,並在退出時重新執行(respawn)
# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon

以上面的inittab文件為例,來說明一下inittab的格式。其中以#開始的行是注釋行,除了注釋行之外,每一行都有以下格式:
代碼如下:
id:runlevel:action:process

對上面各項的詳細解釋如下:
1. id
id是指入口標識符,它是一個字元串,對於getty或mingetty等其他login程序項,要求id與tty的編號相同,否則getty程序將不能正常工作。
2. Runlevel
runlevel是init所處於的運行級別的標識,一般使用0-6以及S或s。0、1、6運行級別被系統保留:其中0作為shutdown動作,1作為重啟至單用戶模式,6為重啟;S和s意義相同,表示單用戶模式,且無需inittab文件,因此也不在inittab中出現,實際上,進入單用戶模式時,init直接在控制台(/dev/console)上運行/sbin/sulogin。在一般的系統實現中,都使用了2、3、4、5幾個級別,在CentOS系統中,2表示無NFS支持的多用戶模式,3表示完全多用戶模式(也是最常用的級別),4保留給用戶自定義,5表示XDM圖形登錄方式。7-9級別也是可以使用的,傳統的Unix系統沒有定義這幾個級別。runlevel可以是並列的多個值,以匹配多個運行級別,對大多數action來說,僅當runlevel與當前運行級別匹配成功才會執行。
3. action
action是描述其後的process的運行方式的。action可取的值包括:initdefault、sysinit、boot、bootwait等:initdefault是一個特殊的action值,用於標識預設的啟動級別;當init由核心激活以後,它將讀取inittab中的initdefault項,取得其中的runlevel,並作為當前的運行級別。如果沒有inittab文件,或者其中沒有initdefault項,init將在控制台上請求輸入runlevel。sysinit、boot、bootwait等action將在系統啟動時無條件運行,而忽略其中的runlevel。其餘的action(不含initdefault)都與某個runlevel相關。各個action的定義在inittab的man手冊中有詳細的描述。

㈥ Linux 腳本編寫 如何編寫一個腳本,修改已有文件中的內容

實現的方法如下:

1、第一步,打開命令控制台以找到要編輯的文件,執行命令ls來查看下面的一些文件,在下面有一個index.php文件,如下圖所示。

㈦ 使用fork,exec以及wait函數構造簡單的shell解釋程序。

linux下面?

linux我沒有玩過,幫不上你啊。
希望樓主不要浪費懸賞的分。

㈧ 在linux shell 腳本中 , 想延時 ,後來卻一直被提示 無效的時間間隔,不知何故..請教!!

你的文件是dos格式的,使用dos2unix + 文件名,轉換該文件的格式

㈨ linux shell 腳本運行完畢後不能自動停止

我覺得你是這個地方出問題:
dcm2nii -g y -o ${ana_dir}/${subject} ${ana_dir}/dicom/${subject} &

這個&號,是讓程序在後台運行,不會自己停止的。
你可以去掉這個&試試你的程序

㈩ LINUX配置啟動級別的文件名稱,路徑以及個級別分別是什麼

配置啟動級別文件名:inittab
路徑/etc/
共有7個級別:
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
0:關機(不要設置為啟動默認級別)
1:單用戶模式
2:多用戶,無NFS(如果您沒有配置網路,該級別與3一樣)
3:完全多用戶模式
4:不使用
5:X11圖形模式
6:重啟(不要設置為啟動默認級別)
Linux 啟動時,運行一個叫做init 的程序,然後由它來啟動後面的任務,包括多用戶環境,網路等。那麼,到底什麼是運行級別呢?簡單的說,運行級就是操作系統當前正在運行的功能級別。這個級別從1 到6,具有不同的功能。這些級別在/etc/inittab 文件里指定。這個文件是init
程序尋找的主要文件,最先運行的服務是那些放在/etc/rc.d 目錄下的文件。大多數的Linux 發行版本中,啟動腳本放在/etc/rc.d/init.d,這些腳本被ln 命令來連接到 /etc/rc.d/rcn.d目錄(這里的n 就是運行級0-6)。如:/etc/rc.d/rc5.d 下面的S10network就是連接到/etc/rc.d/init.d下的network 腳本的。因此,我們可以知道,rc5.d 下面的文件就是和運行級5 有關的。

閱讀全文

與waitlinux腳本相關的資料

熱點內容
羈絆命令 瀏覽:49
解壓視頻怪獸大全 瀏覽:962
最新中華人民共和國預演算法 瀏覽:859
電信dns伺服器地址杭州 瀏覽:504
java內存泄露內存溢出 瀏覽:813
筆記本系統映像恢復網路文件夾 瀏覽:932
動態庫能否編譯成靜態 瀏覽:702
少兒編程缺老師 瀏覽:352
德龍咖啡機手機app怎麼下載 瀏覽:561
我的世界國際服hyp伺服器為什麼卡 瀏覽:590
編程object類型中文名 瀏覽:373
轉轉app怎麼用自己的號轉上去 瀏覽:776
java串口開發 瀏覽:766
編程獲取中國股市行業分類並作圖 瀏覽:975
手機變電腦如何編程 瀏覽:410
java許可權管理框架 瀏覽:682
php存儲過程返回值 瀏覽:841
模板匹配演算法介紹 瀏覽:526
編程語言麻煩的代碼 瀏覽:136
icloud通訊錄如何導出到安卓 瀏覽:744