Linux系統上在執行 Crontab 時,會將執行紀錄寫在 /var/log/syslog(或是/var/log/cron.log)中。如果有很多BOT或是定期執行的小程式時,往往就會看到log檔被標示為CMD的紀錄塞滿滿。像我的/var/log/cron.log中短短5分鐘就塞了20條CMD執行紀錄,幾乎每2天就快10M的log檔。
Jan 3 06:26:01 localhost CRON[15408]: (root) CMD ("---恕刪---" > /dev/null 2>&1) Jan 3 06:26:01 localhost CRON[15410]: (root) CMD ("---恕刪---" > /dev/null 2>&1) Jan 3 06:26:01 localhost CRON[15409]: (root) CMD ("---恕刪---" > /dev/null 2>&1) Jan 3 06:27:01 localhost CRON[15436]: (root) CMD ("---恕刪---" > /dev/null 2>&1) Jan 3 06:27:01 localhost CRON[15437]: (root) CMD ("---恕刪---" > /dev/null 2>&1) Jan 3 06:27:01 localhost CRON[15438]: (root) CMD ("---恕刪---" > /dev/null 2>&1) Jan 3 06:28:01 localhost CRON[15462]: (root) CMD ("---恕刪---" > /dev/null 2>&1) Jan 3 06:28:01 localhost CRON[15465]: (root) CMD ("---恕刪---" > /dev/null 2>&1) Jan 3 06:28:01 localhost CRON[15463]: (root) CMD ("---恕刪---" > /dev/null 2>&1) Jan 3 06:29:01 localhost CRON[15488]: (root) CMD ("---恕刪---" > /dev/null 2>&1) Jan 3 06:29:01 localhost CRON[15487]: (root) CMD ("---恕刪---" > /dev/null 2>&1) Jan 3 06:29:01 localhost CRON[15489]: (root) CMD ("---恕刪---" > /dev/null 2>&1) Jan 3 06:30:01 localhost CRON[15518]: (root) CMD ("---恕刪---" > /dev/null 2>&1) Jan 3 06:30:01 localhost CRON[15520]: (root) CMD ("---恕刪---" > /dev/null 2>&1) Jan 3 06:30:01 localhost CRON[15521]: (root) CMD ("---恕刪---" >/dev/null 2>&1) Jan 3 06:30:01 localhost CRON[15522]: (root) CMD ("---恕刪---" > /dev/null 2>&1) Jan 3 06:30:01 localhost CRON[15523]: (root) CMD ("---恕刪---" > /dev/null 2>&1) Jan 3 06:31:01 localhost CRON[15560]: (root) CMD ("---恕刪---" > /dev/null 2>&1) Jan 3 06:31:01 localhost CRON[15561]: (root) CMD ("---恕刪---" > /dev/null 2>&1) Jan 3 06:31:01 localhost CRON[15562]: (root) CMD ("---恕刪---" > /dev/null 2>&1)
那我們要如何選取我們需要的項目呢?可以先看看那個男人(man)的說明。
預設的等級是1,如果你都不要任何輸出就是0。
我是預設輸出執行指令(如restart list等)以及執行錯誤訊息,所以是8+4=12
OPTIONS -L loglevel Tell cron what to log about jobs (errors are logged regardless of this value) as the sum of the following values: 1 will log the start of all cron jobs 2 will log the end of all cron jobs 4 will log all failed jobs (exit status != 0) 8 will log the process number of all cron jobs The default is to log the start of all jobs (1). Logging will be disabled if levels is set to zero (0). A value of fifteen (15) will select all options.
我們只需要修改檔案 /etc/default/cron
並新增一行 EXTRA_OPTS=”-L 12″
# This file has been deprecated. Please add custom options for cron using # $ systemctl edit cron.service # or # $ systemctl edit --full cron.service EXTRA_OPTS="-L 12" #增加這一行
儲存後並重啟服務即可
sudo systemctl restart cron && systemctl status cron
正確啟動之後會在cron.status中顯示
● cron.service - Regular background program processing daemon Loaded: loaded (/etc/systemd/system/cron.service; enabled; vendor preset: enabled) Drop-In: /etc/systemd/system/cron.service.d └─override.conf Active: active (running) since Tue 2021-01-05 09:40:41 CST; 8ms ago Docs: man:cron(8) Main PID: 30632 (cron) CGroup: /lxc/Wordpress/system.slice/cron.service └─30632 /usr/sbin/cron -f -L 12
然後在/var/log/syslog中也只會顯示必要的資訊了
Jan 5 09:40:41 localhost cron[30632]: (CRON) INFO (pidfile fd = 3) Jan 5 09:40:41 localhost cron[30632]: (CRON) INFO (Skipping @reboot jobs -- not system startup)