centOS 排成教學

內容說明

記錄我在 linux 上學習排成時遇到的困難,排成自學真的好麻煩呀 QQ
教學示範作業系統 centOS6

排成主要功能

簡單來說就是有一個機器人幫你服務,在你設定的時間執行你想要的指令,通常限定一行。

如何進入排成

在 ternimal 輸入 crontab -e 即可。

排成的語法規則

指令語法 分鐘 小時 日期 月份 命令
可接受數字範圍 0~59 0~23 1~31 1~12 0~7 執行命令

在周這欄時不管打 0 or 7 都是代表星期日的意思

排成特殊字元

有些字元有著特殊意義,如下表:

字元 中文解釋 意義
* 星號 代表任何時段,舉例: 排成如果 月、日、周都是 * ,則代表每月每日每周都會執行此命令,但注意:如果有大單位已經有數字時,則建議小單位不要用 * ,假設日期是 4,則小時、分鐘就建議不要用 * 號
, 逗號 分隔時段,舉例:如果想要在 13:00 and 16:00 都執行命令,就輸入指令 0 13,16 * * * command,醬子(◍•ᴗ•◍)❤️
- 減號 在 A-B 段單位時間內,都會執行指令,舉例: 想要在 8 點到 12 點的 10 分之間都執行指令,則輸入指令 10 8-12 * * * command,比起逗號在跟方便一些的指令
/n 斜線 n = 數字,代表每隔 n 單位時間的意思,例如每 3 分鐘執行指令,則輸入指令 */3 * * * * command,也可以寫成 0-59/5,意思相同,但 0-30/5 意義就不相同XD,變成 0~30 分的每 5 分鐘執行指令

舉例:

命令 解釋
5 * * * * 每小時的第五分鐘執行命令
30 8 * * * 每天 8:30 執行命令
15 8-10 * * * 每天的 8 到 11 點的 15 分執行命令
*/5 * * * * 每 5 分鐘執行命令
30 6 /10 * * 每個月中,每 10 天的 6:30 執行命令,也就是每月的 1, 11, 21, 31 日的 6:30 執行命令

QUESTION: 排成需要多行指令那要怎麼辦呢?

用括號 + 分號來解決這問題,括號來放入全部指令,分號則用來分隔命令。
舉例:

1
*/5 * * * *  (cd /home/archcopilot/public_html/david53133/v1.0/ ; /usr/local/bin/python3.6 climb.py)

QUESTION: 如果我想要透過執行檔執行文件該怎麼辦呢?

舉例,例如我想要執行 python 程式,那我是不是應該要 python3 test.py,在某些情況下是可以的。但如果你的 python3 並沒有放在系統預設的位置 /usr/bin就不行!
因此我建議的操作如下:

1
2
3
which python3 # 先尋找執行檔的路徑
/home/path/... # 輸出的路徑
/home/path/../python3 test.py #執行命令

QUESTION: 我想要看我的排成有沒有被執行?

排成執行的紀錄在 /var/log/cron,再透過 cat 找出來即可。舉例:

1
cat /var/log/cron

QUESTION: 為甚麼我排成的指令有被執行,但我看卻沒有?

situation 1: 你沒有 cd 路徑

為甚麼會這樣說呢?因為其實你在執行路徑時,基本上都是從 /user_name出發,因此如果你的指令文件內有提到關於路徑,且路徑又是相對路徑是則極高機率遇到此問題。
建議使用 cd 到路徑後,在執行命令。舉例:

1
*/5 * * * *  (cd /home/archcopilot/public_html/david53133/v1.0/ ; /usr/local/bin/python3.6 climb.py)

situation 2: 指令本身有誤

這也是一種可能,但我幫不了忙,對不起QQ。

QUESTION: 因為排成執行如果有問題是不會顯示,但我想要知道問題出在哪裡。排成可以提供日誌嗎?

當然可以。我一開始研究還花很多時間XD,因為我一開始看不太懂,後面資料查久了才懂得wwww
透過 >> test.log 2&>1即可。舉例:

1
0 0 */1 * *  (cd /home/archcopilot/public_html/david53133/v1.0/ ; /usr/local/bin/python3.6 climb.py)  >> /home/archcopilot/public_html/david53133/v1.0/crontab.log 2>&1

QUESITON: 我要想排成好麻煩,有沒有比較簡單的排成方法

其實是有,但我個人覺得要記那些語法對我言太麻煩了。
這裡有一推薦的排成計算機,可以幫助你對你想要的時間點進行排成的指令計算出來。
連結就請點這裡

參考連結

查看crontab任务是否执行以及执行日志
Linux 設定 crontab 例行性工作排程教學與範例
crontab的语法规则格式(每分钟、每小时、每天、每周、每月、每年定时执行 规则)
crontab calculator

心得

排成真的有點難呀,不過我認為是我閱讀文章的能力不夠,還沒辦法閱讀一次就能看懂網路上大神的文章,於是我在這邊做些筆記紀錄,也希望幫助現在跟我一樣還不夠看懂大神的文章人可以透過我這篇文章而了解排成的用法。
希望能夠幫助到別人,這是我最大的心願。

  • 版權聲明: 本部落格所有文章除有特別聲明外,均採用 Apache License 2.0 許可協議。轉載請註明出處!
  • © 2020-2024 John Doe
  • Powered by Hexo Theme Ayer
  • PV: UV: