--- title: Crontab tags: 技術學習 description: Use `{%hackmd theme-dark %}` syntax to include this theme. --- # Crontab ## 何謂 Crontab - Crontab 在 Linux 裡面是排程表的意思 =>也就是 Cron + Table ## Crontab 可以幹嘛 - 我們通常會把一些每小時、每日、每月之類固定時間要做的工作丟到 Linux 系統的 crontab 中去執行。 EX:每日要統計昨天網站的活動資訊做數據分析之類的工作。 ## Crontab 基本指令 - 查看自己的 crontab 內容 ```sh crontab -l ``` - 編輯 crontab 內容 ```sh crontab -e ``` - 刪除目前所有的 crontab <font color="red">(謹慎使用)</font> ```sh crontab -r ``` ## 設定 Crontab 時間 -  - 依序是 分鐘, 小時, 日期, 月份, 星期, command - 參數為 0-59, 0-23, 1-31, 1-21, 0-6, 需要執行的 command - 可以至[此網頁](https://crontab.guru/)驗證是否設定正確 ## 撰寫 shell script - 撰寫原因:Crontab 時間設定完成後,需要有可執行腳本 - 示範簡易版: - 新增檔案: `touch demo.sh` - 編輯:`vi demo.sh` ```sh # demo.sh echo "Hello World" ``` - <font color="red">注意:</font> 編輯完後,要讓 `demo.sh` 變為可執行檔 - 輸入: `chmod +x <檔案名稱>` ## Crontab & shell script 結合 - 步驟: 1. 進入編輯 Crontab 畫面: `crontab -e` 2. 設定時間 & shell script 絕對路徑: - `*/1 * * * * /home/zack_hsu/demo.sh` ## [進階] 設定 Crontab 紀錄存取位置 - 在 <span style="font-size: 20px;font-weight:bold">Crontab & shell script 結合</span> 步驟2中,改為: - `*/1 * * * * /home/zack_hsu/demo.sh >> /home/zack_hsu/mycrontab.log 2>&1` 即可。 - `2>&1` 解釋: 參考[此文](https://charleslin74.pixnet.net/blog/post/405455902) - `>>` 解釋: 參考[此文](https://askubuntu.com/questions/382793/whats-is-the-difference-between-and-in-shell-command) ## [進階] 忘記設定 Crontab 紀錄存取,但是Crontab沒有正確執行,要去哪看錯誤訊息? - `cat /var/spool/mail/<執行crontab的USER>` 可以看到 - ex: `cat /var/spool/mail/root` - 補充:這裡只會紀錄錯誤訊息,超過執行的就不會顯示了。 ## 參考文章 - https://code.kpman.cc/2015/02/11/%E5%88%A9%E7%94%A8-crontab-%E4%BE%86%E5%81%9A-Linux-%E5%9B%BA%E5%AE%9A%E6%8E%92%E7%A8%8B/ - https://ithelp.ithome.com.tw/articles/10129445
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up