env: Red Hat Enterprise Linux 5
如果要在linux上排定一些類似檔案備份的例行性排程,可以利用crontab這指令。
step1: 準備好要下的指令,通常都會先編一個.sh file, 像這樣:
[say_hello.sh]
#!/bin/bash
echo say hello `date` >> log.txt
上面這個檔案會印一行say hello跟系統時間在log.txt這個檔案裡
像這樣: say hello Wed May 12 16:20:01 CST 2010
step2: 使用crontab排程
$ crontab -e
-e是edit的意思。下了這個指令後會進入vi編輯畫面。都未曾使用過crontab的話內容就是一片空白。
step3: 新增工作排程
crontab的內容有固定格式,一個工作一行,大概長像這樣:
20 16 * * * /home/oracle/say_hello.sh
先簡單說一下這條工作內容: 每到16:20執行say_hello.sh
指令的結構是這樣(詳細說明請參閱[鳥哥]基礎文件CH16)
分 | 時 | 日 | 月 | 周 | 指令 |
0-59 | 0-23 | 1-31 | 1-12 | 0-7 | 指令= = |
這邊要注意指令裡有用到任何檔案,都要用絕對路徑。
編輯完存檔退出後,會有一行訊息: crontab: installing new crontab
表示排程已經排定。如果要檢視所有排定的工作,可以下:
$ crontab -l
step4: 就等囉~
等到已經排定的時間,你可能會發現.... 失敗了= =,並且會收到一封mail,由root(Cron Deamon)寄出,內容最後有一行類似這樣的訊息:
/bin/sh: /home/oracle/say_hello.sh: Permission denied
permission denied… 也不知道在deny什麼鬼,因為明明可以在自己的環境裡直接下"sh /home/oracle/say_hello.sh"執行這個script。一直以為是路徑的問題(阿不就是寫完整路徑!?),改來改去就是不行。
最後發現竟然真的是權限問題,下"ls -l"可以看到新建的script檔權限長這樣:
-rw-r--r--
owner自己竟然沒權限執行.... orz||,chmod一下
$ chmod u+x /home/oracle/say_hello.sh
確認一下執行權限-rwxr--r--
再重新安排一次時間比較近的排程試試看,應該就OK囉。
linux排程初體驗,成功!!!
Ref:
Post a Comment