---
# System prepended metadata

title: chap2 - crontab搭配使用log
tags: [crontab]

---

# chap2 - crontab搭配使用log
###### tags: `crontab`
- edited:2020.02.05
---
- 相關文章可以參考[Crontab教學 - 總覽](https://hackmd.io/0UWA1D-LRTOkx-EH4xnWQA?edit)
## Intro
- **crontab** 在執行任務時，由於是在背後執行，故沒辦法知道執行的結果。此時可以善用*輸出log*的方式，
來幫助我們了解程式運行的狀況。

### 如何把crontab 執行任務時的output message給輸出到特定的檔案
#### 一般來說, 設定crontab的任務如下:
:::info
min hour day month day-of-the-week [**YOUR_TASK**] [**FILE_MODE** + **YOUR_LOG_FILE_PATH** + **2>&1**]
:::

- **YOUR_TASK**:
  >- 任何指令或程式都可以，我們以`python`為使用範例
  >- ex: 假設我有一個python的程式`/home/myProj/helloWorld.py`, 要讓crontab順利執行，
  >你可以輸入 `cd /home/myProj/ && /usr/bin/python3 helloWorld.py`
   
- **FILE_MODE**:
  >1. `>` : 單鍵號, 如果檔案已存在, 直接複寫開一個新的
  >2. `>>`: 雙鍵號, 檔案若存在, 繼續往下寫(append模式)

- **YOUR_LOG_FILE_PATH**: 
  >- 預計要輸出訊息的`檔案位置`, 

- **2>&1**
  >- 如果你的程式碼有重要的訊息用`print`輸出，ex: `python3 helloWorld.py`, 必須要加入`2>&1`.
  >- `2>&1`的意思是將 standard error(2>) 重新導向standard output(&1)，如此就可以順利將程式中的`print`匯集到log中
  



## Reference
- [Crontab Log: How to Log the Output of My Cron Script](https://www.thegeekstuff.com/2012/07/crontab-log/)
- 