网站导航:首页 -> Linux认证 -> Linux认证考试指导 -> Linux 例行性命令的建立

Linux 例行性命令的建立

     假如你每一天早上 8:00 鐘要伺服器連接上音響,並啟動音樂來喚你起床;而中午 12:00 希望 linux 可以發一封信到你的郵件信箱,提醒你可以去吃午餐了;另外,在每年的你愛人的生日的前一天,先發封信提醒你,以免忘記這麼重要的一天.....要怎樣達到這個目的呢?其實是很簡單的,只要使用 crontab 就可以啦!
  其實,linux 本身在背景下的工作可是很多的,尤其是網路開放的情況下,建立與取消連線、mysql 資料庫的即時更新、以及一些例行的系統指令,例如釋放記憶體的工作等等。由於例行的工作非常的多,實在不可能每天都要管理員來手動輸入吧!因此我們就需要瞭解一下 linux 是如何建立例行性工作的!
  crontab 基本上有兩種建立例行性命令的方式,一種是針對所有使用者,可以藉由 crontab -e 的指令來下達工作排程;另一種是針對系統管理員,你可以直接藉由修改 /etc/crontab 這一個文字檔,來直接排程!那 crontab 的主要命令要如何執行呢?待鳥哥慢慢道來!
  使用 crontab 指令 
  建立個人用戶的例行性命令:
  假如你需要在每天的正午 12:00 發一封信給你自己,而且信的內容已經寫好了,那要怎樣作呢?而且,另一個假設是,你在 linux server 中的權限僅止於一般使用者,並不是 root (管理員)身份,那要怎樣設定你的例行性命令呢?哈哈!那就使用 crontab 這個指令吧!你只要執行 crontab -e 就可以進入 vi 的編輯畫面來編輯你的例行性命令說! 
   [vbird@tsai vbird]# crontab -e 
  0 12 * * * mail vbird@tsai.adsldns.org < /home/vbird/test.txt
  在上面的例子中,輸入 crontab -e 時,會出現一個 vi 畫面,然後你在 vi 畫面中輸入上面的一行字,之後按 :wq 儲存後離開!即可完成編輯!容易吧!那上面那一行字代表什麼意義呢?你可以看到,在真正執行命令之前(就是 mail vbird@tsai.adsldns.org < /home/vbird/test.txt )總共有五個數字,這五個數字分別代表: 
  分(0-59) 
  小時(0-23) 
  日期(1-31) 
  月份(1-12) 
  週(0-6) 
   
  另外,如果是『 * 』的时候,代表所有数字都适用的意思。所以,你就可以知道我上面那一行写的意义为何了!那就是不论何月、何日、星期几的 12 点 0 分时,执行 mail vbird@tsai.adsldns.org < /home/vbird/test.txt 这个命令!还不了解?没关系,我们这里作几个例子! 
  ·例题一:假如你的女朋友生日是 5 月 2 日,你想要在 5 月 1 日的 23:59 发一封信给他,这封信的内容已经写在 /home/vbird/lover.txt 中了那你要如何编辑呢?呵呵,使用: 
  [vbird@tsai vbird]# crontab -e 59 23 1 5 * mail pigpp@tsai.adsldns.org < /home/vbird/lover.txt
  ·就可以啰!那样的话,每年 pigpp 都会收到你的这封信喔!(当然啰,信的内容就要每年变一变啦!)
  ·例题二:假设你每隔五分钟就要去 check 你的一个名为 test.sh 这个批次档一次!要如何写呢? 
  [vbird@tsai vbird]# crontab -e */5 * * * * /home/vbird/test.sh
  ·就可以啦!有两件事要注意一下:(1) 指令的路径最好是下达绝对路径,这样比较不会找不到执行的档案喔!;(2) 第一个数字 */5 表示『每五分钟执行一次』的意思!
  ·例题三:假如你每个礼拜五下午 4:30 要告诉朋友星期六的约会不要忘记,如何下达指令? 
  [vbird@tsai vbird]# crontab -e 30 16 * * 5 mail frend@test.domain.name < /home/vbird/frend.txt
  ·就成功啦!这样了不了呀!
  察看个人用户的例行性命令:
  如果你一直使用 crontab 这个方法来下达例行性命令的话,有可能有一些指令你会忘记了!那怎办呢?没关系,只要下达: 
  crontab -l (注: -l 是 l 的小写喔!)
  就可以知道你曾经下达的 crontab 的命令啰!