IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁(yè)操作系統(tǒng)LINUX → Linux自啟動(dòng)和定時(shí)啟動(dòng)程序

Linux自啟動(dòng)和定時(shí)啟動(dòng)程序

時(shí)間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)

  1.開機(jī)啟動(dòng)時(shí)自動(dòng)運(yùn)行程序

  Linux加載后, 它將初始化硬件和設(shè)備驅(qū)動(dòng), 然后運(yùn)行第一個(gè)進(jìn)程init。init根據(jù)配置文件繼續(xù)引導(dǎo)過程, 啟動(dòng)其它進(jìn)程。通常情況下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目錄下的腳本文件,可以使 init自動(dòng)啟動(dòng)其它程序。例如:編輯 /etc/rc.d/rc.local 文件,在文件最末加上一 行"xinit"或"startx",可以在開機(jī)啟動(dòng)后直接進(jìn)入X-Window。

  2.登錄時(shí)自動(dòng)運(yùn)行程序

  用戶登錄時(shí),bash首先自動(dòng)執(zhí)行系統(tǒng)管理員建立的全局登錄script :/ect/profile。然后bash在用戶起始 目錄下按順序查找三個(gè)特殊文件中的一個(gè):/.bash_profile、/.bash_login、/.profile,但只執(zhí)行最先找到的 一個(gè)。

  因此,只需根據(jù)實(shí)際需要在上述文件中加入命令就可以實(shí)現(xiàn)用戶登錄時(shí)自動(dòng)運(yùn)行某些程序(類似于DOS下的 Autoexec.bat)。

  3.退出登錄時(shí)自動(dòng)運(yùn)行程序

  退出登錄時(shí),bash自動(dòng)執(zhí)行個(gè)人的退出登錄腳本/.bash_logout。例如,在/.bash_logout中加入命令"tar -cvzf c.source.tgz *.c",則在每次退出登錄時(shí)自動(dòng)執(zhí)行 "tar" 命令備份 *.c 文件。

  4.定期自動(dòng)運(yùn)行程序

  Linux有一個(gè)稱為crond的守護(hù)程序,主要功能是周期性地檢查 /var/spool/cron目錄下的一組命令文件的內(nèi) 容,并在設(shè)定的時(shí)間執(zhí)行這些文件中的命令。用戶可以通過crontab 命令來建立、修改、刪除這些命令文件。

  例如,建立文件crondFile,內(nèi)容為"00 9 23 Jan * HappyBirthday",運(yùn)行"crontab cronFile"命令 后,每當(dāng)元月23日上午9:00系統(tǒng)自動(dòng)執(zhí)行"HappyBirthday"的程序("*"表示不管當(dāng)天是星期幾)。

  5.定時(shí)自動(dòng)運(yùn)行程序一次

  定時(shí)執(zhí)行命令at 與crond 類似(但它只執(zhí)行一次):命令在給定的時(shí)間執(zhí)行,但不自動(dòng)重復(fù)。at命令的一 般格式為:at [ -f file ] time ,在指定的時(shí)間執(zhí)行file文件中所給出的所有命令。也可直接從鍵盤輸入命 令:

  $ at 12:00

  at>mailto Roger -s ″Have a lunch″ < plan.txt

  at>Ctr-D

  Job 1 at 2000-11-09 12:00

  2000-11-09 12:00時(shí)候自動(dòng)發(fā)一標(biāo)題為"Have a lunch",內(nèi)容為plan.txt文件內(nèi)容的郵件給Roger。

  定期運(yùn)行程序或者腳本是管理員要面臨一個(gè)很普遍的問題,

  一、 使用crond監(jiān)控程序運(yùn)行程序

  1. 使用cron來定期執(zhí)行任務(wù)

  使用crond (cron監(jiān)控程序)來定期運(yùn)行一些任務(wù),比如備份日志、數(shù)據(jù)庫(kù)、把日志發(fā)送到自己郵箱等等操作都可以又定期運(yùn)行程序來完成。

  crond是個(gè)腳本,每次Linux啟動(dòng)的時(shí)候都自動(dòng)起到該腳本,該腳本是 /etc/rc.d/init.d 下面的,每次系統(tǒng)啟動(dòng)的時(shí)候就自動(dòng)會(huì)啟動(dòng)該目錄下

  的腳本。

  cron有兩個(gè)配置文件,一個(gè)/etc/crontab,是一個(gè)全局配置文件,一組是crontab命令生成生成的配置文件,是屬于用戶級(jí)的。

  一般對(duì)管理員來說,只要使用全局配置的/etc/crontab就配置文件就可以了,我們?nèi)ゴ蜷_配置文件看看:

  SHELL=/bin/bash

  PATH=/sbin:/bin:/usr/sbin:/usr/bin

  MAILTO=root

  HOME=/

  # run-parts

  01 * * * * root run-parts /etc/cron.hourly

  02 4 * * * root run-parts /etc/cron.daily

  22 4 * * 0 root run-parts /etc/cron.weekly

  42 4 1 * * root run-parts /etc/cron.monthly

  我們稍微來分析一下這個(gè)文件:

  /* 設(shè)置基于什么shell來運(yùn)行,我們這里是基于bash shell */

  SHELL=/bin/bash

  /* 指定目錄中有次文件的命令時(shí),不需要完整目錄路經(jīng) */

  PATH=/sbin:/bin:/usr/sbin:/usr/bin

  /* 使用cron實(shí)際工作時(shí),見通過郵件來同志root用戶 */

  MAILTO=root

  /* 與/etc/crontab配置文件相關(guān)的主目錄為根目錄 */

  HOME=/

  /* 好了,這里是關(guān)鍵是,下面的是要指定什么時(shí)間運(yùn)行什么目錄下的任務(wù),run-parts命令是運(yùn)行指定目錄下的每個(gè)腳本 */

  # run-parts

  /* 這一句是在每天每小時(shí)過后一分鐘運(yùn)行/etc/cron.hourly目錄中的每個(gè)腳本文件 */

  01 * * * * root run-parts /etc/cron.hourly

  /* 在每天凌晨4點(diǎn)2分運(yùn)行/etc/cron.daily目錄中的每個(gè)腳本文件 */

  02 4 * * * root run-parts /etc/cron.daily

  /* 在每個(gè)星期天凌晨4點(diǎn)22分運(yùn)行/etc/cron.weekly目錄中的每個(gè)腳本文件 */

  22 4 * * 0 root run-parts /etc/cron.weekly

  /* 在每個(gè)月的第一天凌晨4點(diǎn)42分運(yùn)行/etc/cron.monthly目錄中的每個(gè)腳本文件 */

  42 4 1 * * root run-parts /etc/cron.monthly

  大家看到里面的"*"一定覺得很奇怪,下面我們句稍微來了解一下cron的語法:

  上面腳本中的時(shí)間是從左到右的,分別列出了五個(gè)字段,我們看下面的表:

  ------------------------------------------------

  字段????? 取值范圍

  ------------------------------------------------

  Minute??? 0 ~ 59

  Hour????? 0 ~ 23,其中0是午夜,20是晚上8點(diǎn)

  Day 1 ~ 31

  Month???? 1 ~ 12

  Day of week???? 0 ~ 7,其中0和7是表示星期天

  ------------------------------------------------

  任何字段中的星號(hào)是通配符,例如,如果第一個(gè)字段包括星號(hào),則特定若無其事在可能的每一分鐘運(yùn)行。如果要指定時(shí)間范圍,比如上午8點(diǎn)到

  下午4點(diǎn),則可以見第二個(gè)字段設(shè)置為8~16。如果要隔一天運(yùn)行任務(wù),則可以將第三個(gè)字段設(shè)置為*/2??梢钥闯?,如果五個(gè)字段(minute、hour

  、day、month、day of week) 之后,cron中的每個(gè)字段就沒什么神秘之處了。

  2. 用戶自己的cron

  用戶也可以計(jì)劃用戶自己的cron任務(wù),比如他想要在半夜整理他的文件,然后發(fā)送郵件給自己,只要這個(gè)用戶他沒有在/etc/cron.deny表中,

  就可以使用crontab -e命令來啟動(dòng)自己的cron文件。

  3. 對(duì)cron的訪問控制

  默認(rèn)情況下,所有用戶都能訪問cron工具,要對(duì)cron進(jìn)行訪問控制,則可以生成/etc/cron.allow與/etc/cron.deny文件。

  (1)這兩個(gè)文件都不存在時(shí),每個(gè)用戶都可以訪問cron工具]

  (2)存在/etc/cron.allow文件時(shí),則只有cron.allow文件中允許的用戶才能訪問cron工具,如果也有/etc/cron.deny文件,則忽略cron.deny文

  件

  二、 使用at命令定期運(yùn)行程序

  1. 使用cron運(yùn)行任務(wù)

  cron任務(wù)的缺點(diǎn)是計(jì)劃要經(jīng)常運(yùn)行,假如我們只是想要讓特定任務(wù)運(yùn)行一次呢?那么,這時(shí)候就要用到at監(jiān)控程序了。

  設(shè)置at命令很簡(jiǎn)單,指示定運(yùn)行的時(shí)間,那么就會(huì)在哪個(gè)時(shí)候運(yùn)行。at類似打印進(jìn)程,會(huì)把任務(wù)放到/var/spool/at目錄中,到指定時(shí)間運(yùn)行它

  。at命令相當(dāng)于另一個(gè)shell,運(yùn)行at time命令時(shí),它發(fā)送一個(gè)個(gè)命令,可以輸入任意命令或者程序。at now + time命令可以在指示任務(wù)。

  假設(shè)處理一個(gè)大型數(shù)據(jù)庫(kù),要在別人不用系統(tǒng)時(shí)去處理數(shù)據(jù),比如凌晨2點(diǎn)5分。那么我們就應(yīng)該先建立/home/mj/airplane腳本管理數(shù)據(jù)庫(kù),計(jì)

  劃處理/home/mj/air-safe文件中的結(jié)果。正常方式是這樣啟動(dòng)下列命令:

  # at 2:05 tomorrow

  at> /home/mj/airplane > /home/mj/air-safe

  at> Ctrl+D

  AT Time中的時(shí)間表示方法

  -----------------------------------------------------------------------

  時(shí)間?? 例子??? 說明

  -----------------------------------------------------------------------

  Minute at now + 5 minutes? 任務(wù)在5分鐘后運(yùn)行

  Hour?? at now + 1 hour???? 任務(wù)在1小時(shí)后運(yùn)行

  Days?? at now + 3 days???? 任務(wù)在3天后運(yùn)行

  Weeks? at now + 2 weeks??? 任務(wù)在兩周后運(yùn)行

  Fixed? at midnight?? 任務(wù)在午夜運(yùn)行

  Fixed?????&

關(guān)鍵詞標(biāo)簽:Linux

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門文章 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 多種操作系統(tǒng)NTP客戶端配置 多種操作系統(tǒng)NTP客戶端配置 Linux操作系統(tǒng)修改IP Linux操作系統(tǒng)修改IP

相關(guān)下載

    人氣排行 Linux下獲取CPUID、硬盤序列號(hào)與MAC地址 dmidecode命令查看內(nèi)存型號(hào) linux tc實(shí)現(xiàn)ip流量限制 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程 linux下解壓rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 關(guān)機(jī)、重啟、注銷 命令 查看linux服務(wù)器硬盤IO讀寫負(fù)載