linux關(guān)機(jī)觸發(fā)腳本_第1頁
linux關(guān)機(jī)觸發(fā)腳本_第2頁
linux關(guān)機(jī)觸發(fā)腳本_第3頁
linux關(guān)機(jī)觸發(fā)腳本_第4頁
linux關(guān)機(jī)觸發(fā)腳本_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、實(shí)現(xiàn)linux在關(guān)機(jī)或重啟的時(shí)候執(zhí)行某個(gè)任務(wù)。   現(xiàn)在把實(shí)現(xiàn)過程描述如下:  先寫一個(gè)腳本放在/etc/rc.d/init.d下,chmod -f 777  , 再ln -s 到 /etc/rc.d/rc0.d/K01腳本名 與 /etc/rc.d/rc6.d/K01腳本名,同時(shí)也要 ln -s 到 /etc/rc.d/rc3.d/S99腳本名 與/etc/rc.d/rc5.d/S99腳本名。  K開頭的代表系統(tǒng)關(guān)閉的時(shí)候執(zhí)行,S開頭的代表開機(jī)的時(shí)候執(zhí)行。注意服務(wù)器腳本編寫的規(guī)范,因?yàn)橛蠯開通的軟鏈接并不一定會(huì)在關(guān)機(jī)的時(shí)候自動(dòng)去執(zhí)行

2、,這是為什么呢?剛開始一直沒搞明白,后來從網(wǎng)上看到,執(zhí)行K腳本的時(shí)候會(huì)查詢/var/lock/subsys/下是否有與K開頭腳本同名的空文件名,如果沒有就不去執(zhí)行,所以要按照服務(wù)器腳本編寫的規(guī)范,啟動(dòng)的時(shí)候要在/var/lock/subsys/先touch一個(gè)與K01后面同名的空文件.同時(shí)也要調(diào)用/etc/rc.d/init.d/functions能夠接受star與stop命令信號(hào),具體可以參考/etc/rc.d/rc文件,本人是在/etc/rc.d/rc0.d/K01yum基礎(chǔ)上改寫實(shí)現(xiàn)的/etc/rc0.d 包含關(guān)機(jī)腳本K* /etc/rc6.d 包含重啟腳本K* &#

3、160;Linux關(guān)機(jī)過程:init同樣也用來控制系統(tǒng)關(guān)機(jī)或者重新啟動(dòng),通過shutdown命令可以實(shí)現(xiàn)關(guān)機(jī)操 作。要立即關(guān)閉計(jì)算機(jī),可以使用shutdown   -h   now命令,h代表的意思就是halt,也就 是切斷了電源,如果是重新啟動(dòng),直接把h參數(shù)換成r就可以了:shutdown   -r   now 關(guān)機(jī)過程需要一些時(shí)間,這個(gè)過程中不應(yīng)該手工切斷電源或者按下reset鍵。上面的 例子里now參數(shù)表示的就是立即的意思,也有許多其他的參數(shù)可以選用,比如+n設(shè)定倒 計(jì)時(shí)時(shí)間,n就是你想要的時(shí)間,這

4、些都可以通過man   shutdown了解一下。 舉例說明,要使系統(tǒng)10分鐘后重新起動(dòng):shutdown   -r   +10 在linux系統(tǒng)里,shutdown命令會(huì)通知已經(jīng)登錄進(jìn)來的用戶它即將關(guān)機(jī),不過意義不 大罷了。如果定義了倒計(jì)時(shí)關(guān)機(jī),shutdown命令會(huì)生成一個(gè)/etc/nologin文件,這個(gè)文 件的存在能夠阻止其他用戶再進(jìn)行登錄操作,當(dāng)然了,root用戶除外。 在系統(tǒng)關(guān)機(jī)時(shí),shutdown命令會(huì)告訴init程序轉(zhuǎn)換到0運(yùn)行級(jí)別,如果是重新啟動(dòng)則 轉(zhuǎn)換到第6運(yùn)行級(jí)別。當(dāng)進(jìn)入0或者6運(yùn)行

5、級(jí)別后,系統(tǒng)將會(huì)依照下面的順序運(yùn)行: 1,init關(guān)閉所有它能關(guān)閉的進(jìn)程(轉(zhuǎn)換到其他運(yùn)行級(jí)別也一樣) 2,rc0.d/rc6.d目錄下的第一個(gè)命令開始運(yùn)行,鎖定系統(tǒng)文件為關(guān)機(jī)作準(zhǔn)備 3,rc0.d/rc6.d目錄下的第二個(gè)命令運(yùn)行,卸載除根文件系統(tǒng)以外的所有文件系統(tǒng)( 如掛載的windows分區(qū)) 4,rc0.d/rc6.d中的命令將把根文件系統(tǒng)重新掛載為只讀屬性 5,rc0.d/rc6.d中的命令調(diào)用sync程序把緩存中的數(shù)據(jù)寫入文件系統(tǒng) 6,最后的命令是重新啟動(dòng)或者關(guān)閉內(nèi)核程序=現(xiàn)在把實(shí)現(xiàn)過程描述如下: 先寫一

6、個(gè)腳本放在/etc/rc.d/init.d下,chmod -f 777 , 再ln -s 到 /etc/rc.d/rc0.d/K01腳本名 與 /etc/rc.d/rc6.d/K01腳本名,同時(shí)也要 ln -s 到 /etc/rc.d/rc3.d/S99腳本名 與/etc/rc.d/rc5.d/S99腳本名。 K開頭的代表系統(tǒng)關(guān)閉的時(shí)候執(zhí)行,S開頭的代表開機(jī)的時(shí)候執(zhí)行。注意服務(wù)器腳本編寫的規(guī)范,因?yàn)橛蠯開通的軟鏈接并不一定會(huì)在關(guān)機(jī)的時(shí)候自動(dòng)去執(zhí)行,這是為什么呢?剛開始一直沒搞明白,后來從網(wǎng)上看到,執(zhí)行K腳本的時(shí)候會(huì)查詢/var/lock/subsys/下是否有與K開頭腳本同名的空文件

7、名,如果沒有就不去執(zhí)行,所以要按照服務(wù)器腳本編寫的規(guī)范,啟動(dòng)的時(shí)候要在/var/lock/subsys/先touch一個(gè)與K01后面同名的空文件.同時(shí)也要調(diào)用/etc/rc.d/init.d/functions能夠接受star與stop命令信號(hào),具體可以參考/etc/rc.d/rc文件,本人是在/etc/rc.d/rc0.d/K01yum基礎(chǔ)上改寫實(shí)現(xiàn)的。=shell如何在完成某項(xiàng)任務(wù)后執(zhí)行某個(gè)動(dòng)作?如傳輸文件完成后關(guān)機(jī)。添加評(píng)論分享默認(rèn)排序按時(shí)間排序5 個(gè)回答2贊同反對(duì),不會(huì)顯示你的姓名王濱 Python, 2人贊同直接在腳本里加上halt就好了比如#!/bin/bash

8、wget http:/whatever/xxx.tar.gzdo_whateverhalt當(dāng)然halt要在root下執(zhí)行才會(huì)有效果發(fā)布于 2012-10-22 添加評(píng)論 感謝 分享 收藏  沒有幫助  舉報(bào)  作者保留權(quán)利0贊同反對(duì),不會(huì)顯示你的姓名Belleve編程、JavaScript話題優(yōu)秀回答者 煉金術(shù)士補(bǔ)一個(gè) Powershell 的do-something; stop-computer發(fā)布于 2014-01-18 添加評(píng)論 感謝 分享

9、 收藏  沒有幫助  舉報(bào)  作者保留權(quán)利2贊同反對(duì),不會(huì)顯示你的姓名匿名用戶2人贊同Do something &&halt發(fā)布于 2014-01-16 1 條評(píng)論 感謝 分享 收藏  沒有幫助  舉報(bào)  作者保留權(quán)利1贊同反對(duì),不會(huì)顯示你的姓名匿名用戶1人贊同shell就是把一組命令放在一個(gè)文件中按照特定模式執(zhí)行,里面可出現(xiàn)循環(huán)變量替換,函數(shù),case,逐條堆積,思路清晰先什么后什么,執(zhí)行即可!#!/bin/

10、shecho “”echo “”echo “”if $? -eq 0 ;thendoecho “”init 0done邪惡的分割線補(bǔ)充如下:上面是以前寫的現(xiàn)在是這么寫.人是要進(jìn)步的.#!/bin/bash#if /bin/cp test1 test2 >/dev/null 2>&1;theninit 0if編輯于 2015-11-19 3 條評(píng)論 感謝 分享 收藏  沒有幫助  舉報(bào)  作者保留權(quán)利0贊同反對(duì),不會(huì)顯示你的姓名知乎用戶 年輕人最重要的品質(zhì)是不擼#!/

11、bin/bashcp filelimeif $? -eq 0 ;then #如果上面一個(gè)命令執(zhí)行成功,則執(zhí)行下面這個(gè)。shutdown -p nowfi=Linux下如何在特定時(shí)間執(zhí)行特定任務(wù)1 僅執(zhí)行一次的任務(wù)2 循環(huán)執(zhí)行的任務(wù)3 可喚醒停機(jī)期間的工作任務(wù)1 僅執(zhí)行一次的任務(wù)所需程序atd服務(wù)at命令啟動(dòng)atd# service atd restartatd stop/waitingatd start/running, process 11031千萬注意要在root下執(zhí)行,不然會(huì)提示Rejected send message.at的使用使用at的權(quán)限(因?yàn)榘踩钥紤]最好設(shè)置)在/e

12、tc/at.allow中設(shè)置可以使用at的賬號(hào)在/etc/at.deny中設(shè)置不可以使用at的賬號(hào)示例1分鐘后執(zhí)行mkdir$ at now + 1 minuteswarning: commands will be executed using /bin/shat> mkdir helloAtat> <EOT>job 1 at Wed Feb 6 14:36:00 2013查看工作# at -c 2#!/bin/sh# atrun uid=0 gid=0# .$ mkdir helloAt特定時(shí)間關(guān)機(jī)$ at 14:00 2013-2-9warning: command

13、s will be executed using /bin/shat> /bin/syncat> /bin/syncat> /sbin/shutdown -h nowat> <EOT>job 4 at Sat Feb 9 14:00:00 2013at如何執(zhí)行輸入輸出:標(biāo)準(zhǔn)輸入輸出會(huì)重定向到mailbox里,所以執(zhí)行echo "hello"在終端下是看不到的后臺(tái)工作:系統(tǒng)會(huì)將at工作獨(dú)立于shell,交給atd程序接管,即使關(guān)了shell也沒關(guān)系查詢與刪除at中的工作查詢:atq刪除:atrm jobidbatch:和at相似,只是在cp

14、u負(fù)載低時(shí)才執(zhí)行2 循環(huán)執(zhí)行的任務(wù)所需程序crontab權(quán)限限制/etc/cron.allow/etc/cron.deny示例$ crontab -e #添加任務(wù)進(jìn)入編輯環(huán)境,使用vim編輯格式:# m h dom mon dow commandm:minute, h:hour, dom:day of monthmon:month, dow:day of week任務(wù)示例:0 5 * * 1 tar -zcf var/backups/home.tgz /home*表示任何時(shí)間$ crontab -l #查詢?nèi)蝿?wù)$ crontab -r #刪除任務(wù)3 可喚醒停機(jī)期間

15、的工作任務(wù)anacron:crontab任務(wù)因?yàn)殛P(guān)機(jī)沒有執(zhí)行,anacron可以在開機(jī)時(shí)檢測(cè)沒有執(zhí)行的crontab任務(wù),都執(zhí)行一遍= Linux啟動(dòng)/關(guān)機(jī)時(shí)執(zhí)行腳本 2011-06-13 17:48:35分類: LINUX在.login中執(zhí)行相應(yīng)命令,或在.bashrc(用tcsh shell,在.tcshrc)里寫命令。是不行的,.login是在用戶登錄時(shí)執(zhí)行,用戶可能在本地?zé)o需登錄,或者在遠(yuǎn)程多個(gè)用戶登錄,多次登錄;而.tcshrc是在shell啟動(dòng)時(shí)執(zhí)行,登錄后用戶一般會(huì)多次打開shell,這樣該命令或程序就會(huì)被多次執(zhí)行。Linux 啟動(dòng)順序:1、 BIO

16、S自檢2、 運(yùn)行系統(tǒng)內(nèi)核并檢測(cè)硬件3、 運(yùn)行系統(tǒng)的第一個(gè)進(jìn)程init4、 init讀取系統(tǒng)引導(dǎo)配置文件/etc/inittab中的信息進(jìn)行初始化/etc/rc.d/rc.sysinit-系統(tǒng)初始化腳本/etc/rc.d/rcX.d/KS*-根據(jù)運(yùn)行級(jí)別配置服務(wù)/etc/rc.d/rc.local-執(zhí)行本地特殊配置其它-不同運(yùn)行級(jí)別的特殊服務(wù)Linux啟動(dòng)運(yùn)行init程序來啟動(dòng)相關(guān)程序初始化,與啟動(dòng)相關(guān)的一個(gè)概念是運(yùn)行級(jí),運(yùn)行級(jí)是操作系統(tǒng)當(dāng)前運(yùn)行的級(jí)別,在不同運(yùn)行級(jí)別上可以定義屬于該運(yùn)行級(jí)的啟動(dòng)程序,系統(tǒng)的運(yùn)行級(jí)別可以在/etc/inittab文件指定,與運(yùn)行級(jí)相關(guān)運(yùn)行程序通過從源/etc/rc

17、.d/init.d下鏈接到目的/etc/rcX.d,這里X為系統(tǒng)的默認(rèn)運(yùn)行級(jí)別,因此,默認(rèn)的啟動(dòng)腳本放在/etc/rc.d/init.d下。事例,任務(wù)在啟動(dòng)時(shí)運(yùn)行mm:方法:1. 建立自啟動(dòng)腳本/etc/rc.d/init.d/mm,內(nèi)容為:#!/bin/bash/usr/local/bin/*  (注:此內(nèi)容替換為你想執(zhí)行的命令)設(shè)置文件的屬性為可執(zhí)行:#chmod +x /etc/rc.d/init.d/mm2. 查看計(jì)算機(jī)運(yùn)行級(jí)別,在文件/etc/inittab里看到id:3:initdefault:,則此系統(tǒng)運(yùn)行級(jí)別為3。3. 到/etc/rc3.d目錄下,把你要執(zhí)行的可執(zhí)行

18、文件做一個(gè)軟連接,而且在命名的時(shí)候要以大寫S字母開頭,S之后的數(shù)字大小代表執(zhí)行順序的先后,數(shù)字越大越靠后執(zhí)行。#ln -s /etc/rc.d/init.d/mm /etc/rc3.d/S100mm#ln -s /etc/rc.d/init.d/mm /etc/rc0.d/K20mm關(guān)機(jī)執(zhí)行腳本: 1. vi /etc/init.d/mm      #!/bin/bash     ls >/dev/null 2>&1  (此處把ls替換為你自己的內(nèi)容)注意:此處的順

19、序不能更改,否則達(dá)不到想要的效果。此時(shí)先將標(biāo)準(zhǔn)輸出重定向到 /dev/null,然后將標(biāo)準(zhǔn)錯(cuò)誤重定向到標(biāo)準(zhǔn)輸出,由于標(biāo)準(zhǔn)輸出已經(jīng)重定向到了/dev/null,因此標(biāo)準(zhǔn)錯(cuò)誤也會(huì)重定向到/dev/null。 2. chmod +x /etc/init.d/mm 3. ln -s /etc/init.d/mm  /etc/rc6.d/K01mm /var/lock/subsys/ 4. 當(dāng)你在關(guān)機(jī)時(shí)一切在悄無聲息的進(jìn)行著。注:(1)本人在實(shí)驗(yàn)時(shí),做關(guān)機(jī)運(yùn)行腳本不成功解決方法。是在 /var/lock/subsys/中建立相同的文件mm,或拷貝或者直接軟鏈接過來

20、 ln -s /etc/init.d/mm /var/lock/subsys/   。    (2)若在字符界面下只設(shè)置開機(jī)啟動(dòng),只在rc3.d目錄下鏈接S100filename便可。           如:ln -s /etc/init.d/filename  /etc/rc3.d/S100filename=1. 在/etc/rc.d/init.d/下創(chuàng)建腳本,要遵守service script的標(biāo)準(zhǔn);例如:vi

21、 /etc/rc.d/init.d/gfs#!/bin/bash#case "$1" inrestart)    echo "umount /data"    umount /data    echo "mount /data"    touch /var/lock/subsys/gfs    mount -t gfs2 /dev/gfsvg/gfs /data  &

22、#160; ;start)    echo "mount /data"    touch /var/lock/subsys/gfs    mount -t gfs2 /dev/gfsvg/gfs /data    ;stop)    echo "umount /data"    umount /data    ;*)  

23、0; echo "Usage: $0 restart|start|stop"    exit 1esacexit 12. 修改執(zhí)行腳本權(quán)限chown -R root /etc/rc.d/init.d/gfschmod 700 /etc/rc.d/init.d/gfs3. 創(chuàng)建開機(jī)啟動(dòng)的符號(hào)連接(S 是start的簡(jiǎn)寫、代表啟動(dòng)、K是kill的簡(jiǎn)寫、代表關(guān)閉。數(shù)字代表啟動(dòng)的順序)ln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc0.d/S60gfsln -s /etc/rc.d/init.d/gfs /etc/rc.d

24、/rc1.d/S60gfsln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc2.d/S60gfsln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc3.d/S60gfsln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc4.d/S60gfsln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc5.d/S60gfsln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc6.d/S60gfs4. 創(chuàng)建關(guān)機(jī)執(zhí)行1) 在/var/lock/subsys空文件 

25、0;   touch /var/lock/subsys/gfs2) 創(chuàng)建關(guān)機(jī)符號(hào)連接ln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc0.d/K60gfsln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc1.d/K60gfsln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc2.d/K60gfsln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc3.d/K60gfsln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc4.d/K60gfsln

26、-s /etc/rc.d/init.d/gfs /etc/rc.d/rc5.d/K60gfsln -s /etc/rc.d/init.d/gfs /etc/rc.d/rc6.d/K60gfs=linux下常用的關(guān)機(jī)命令有:shutdown、halt、poweroff、init;重啟命令有:reboot。下面本文就主要介紹一些常用的關(guān)機(jī)命令以及各種關(guān)機(jī)命令之間的區(qū)別和具體用法。首先來看一下linux下比較常用的一些關(guān)機(jī)命令關(guān)機(jī)命令:1、halt   立刻關(guān)機(jī) 2、poweroff  立刻關(guān)機(jī) 3、shutdown -h now 立刻關(guān)機(jī)(root用戶使用) 4、sh

27、utdown -h 10 10分鐘后自動(dòng)關(guān)機(jī) 如果是通過shutdown命令設(shè)置關(guān)機(jī)的話,可以用shutdown -c命令取消重啟重啟命令:1、reboot 2、shutdown -r now 立刻重啟(root用戶使用) 3、shutdown -r 10 過10分鐘自動(dòng)重啟(root用戶使用)  4、shutdown -r 20:35 在時(shí)間為20:35時(shí)候重啟(root用戶使用) 如果是通過shutdown命令設(shè)置重啟的話,可以用shutdown -c命令取消重啟下面我們來看看linux的這些具體的關(guān)機(jī)命令之間的區(qū)別和各自的用法1.shutdown 安全的關(guān)機(jī)命令對(duì)于s

28、hutdown命令,它是大家都推薦的一個(gè)安全的命令,通過參數(shù)-h或-r的配合來完成關(guān)機(jī)或重啟。不過在linux系統(tǒng)中只有擁有root權(quán)限才可以使用這個(gè)命令。所以,雖然大家都推薦用這個(gè)命令,但是這個(gè)命令用起來真的不太方便:想要用這個(gè)命令嗎?先去獲得root權(quán)限吧。shutdown執(zhí)行關(guān)機(jī),是送信號(hào)給init,要求它改變運(yùn)行級(jí)別,以此來關(guān)機(jī)。關(guān)機(jī)或重啟實(shí)際上是運(yùn)行級(jí)別的調(diào)整,所以我們也可以用init直接調(diào)整運(yùn)行級(jí)別來進(jìn)行關(guān)機(jī)或重啟。使用這個(gè)命令時(shí),機(jī)器立即關(guān)機(jī)或重啟。它也需要root權(quán)限。那么為什么說shutdown命令是安全地將系統(tǒng)關(guān)機(jī)呢?實(shí)際中有些用戶會(huì)使用直接斷掉電源的方式來關(guān)閉linux,

29、這是十分危險(xiǎn)的。因?yàn)閘inux與windows不同,其后臺(tái)運(yùn)行著許多進(jìn)程,所以強(qiáng)制關(guān)機(jī)可能會(huì)導(dǎo)致進(jìn)程的數(shù)據(jù)丟失使系統(tǒng)處于不穩(wěn)定的狀態(tài)。甚至在有的系統(tǒng)中會(huì)損壞硬件設(shè)備。而在系統(tǒng)關(guān)機(jī)前使用shutdown命令,系統(tǒng)管理員會(huì)通知所有登錄的用戶系統(tǒng)將要關(guān)閉。并且login指令會(huì)被凍結(jié),即新的用戶不能再登錄。直接關(guān)機(jī)或者延遲一定的時(shí)間才關(guān)機(jī)都是可能的,還有可能是重啟。這是由所有進(jìn)程process都會(huì)收到系統(tǒng)所送達(dá)的信號(hào)signal決定的。shutdown執(zhí)行它的工作是送信號(hào)signal給init程序,要求它改變 runlevel。runlevel 0 被用來停機(jī)halt,runlevel 6 是用來重新激活reboot系統(tǒng),而 runlevel 1則是被用來讓系統(tǒng)進(jìn)入管理工作可以進(jìn)行的狀態(tài),這是預(yù)設(shè)的。假定沒有-h也沒有-r參數(shù)給shutdown。要想了解在停機(jī)halt或者重新開機(jī)reboot過程中做了哪些動(dòng)作?你可以在這個(gè)文件/etc/inittab里看到這些runlevels相關(guān)的資料。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論