萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux crontab 定時任務完整指南:從基礎語法到實戰範例

在 Linux 系統管理中,crontab 是實現自動化排程的核心工具。無論是定時備份、日志輪轉、腳本巡檢,還是系統維護重啟,掌握 crontab 的語法與最佳實踐都是運維人員的必修課。本文系統整理 crontab 的核心概念、指令操作、時間格式詳解與多個實戰範例,助你快速上手。

核心概念與服務管理

  • cron 守護進程(crond):每分鐘檢查一次排程表,觸發到期任務。
  • 用戶級 crontab:每位用戶擁有獨立排程表,存放於 /var/spool/cron/(以用戶名命名)。
  • 系統級 crontab:/etc/crontab 與 /etc/cron.d/ 目錄,需指定執行用戶欄位。

服務控制指令

# 查看服務狀態
service crond status
# 啟動/重啟/停止
service crond start|restart|stop
# 設定開機自啟(SysVinit)
chkconfig --level 35 crond on
# systemd 系統
systemctl enable --now crond

crontab 指令速查表

指令功能
crontab -e編輯當前用戶排程(啟動編輯器)
crontab -l列出當前用戶排程內容
crontab -r刪除當前用戶所有排程
crontab -u user -eroot 管理其他用戶排程
crontab file從檔案導入排程表

時間欄位格式詳解

*    *    *    *    *    command
分   時   日   月   周   命令
(0-59)(0-23)(1-31)(1-12)(0-7)  (0或7=週日)

特殊符號:

  • *:所有合法值
  • ,:列舉值,如 1,3,5
  • -:範圍,如 1-5
  • /:步長,如 */10 表示每 10 分鐘;0-23/2 表示每 2 小時

實戰範例集錦

基礎範例

# 每天 06:10 執行
10 6 * * * date

# 每 2 小時執行一次
0 */2 * * * /path/to/script.sh

# 每月 4 號及週一至週三 11:00 執行
0 11 4 * mon-wed /backup.sh

# 每分鐘執行(測試用)
* * * * * /root/run_sh/run.sh

腳本封裝最佳實踐

建議將複雜邏輯寫入 Shell 腳本,crontab 僅調用腳本:

# /root/run_sh/run.sh
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
cd /root/javaExe/
java TestCron/Test >> /var/log/testcron.log 2>&1

關鍵提醒:

  1. 腳本必須使用絕對路徑;
  2. 腳本內自行 export 環境變量,cron 環境極簡;
  3. 修改 crontab 後無需重啟 crond,守護進程會自動讀取新排程表;
  4. 輸出重定向至日志檔便於排查:>> /var/log/xxx.log 2>&1。

系統級排程範例(/etc/crontab)

# 每天 05:30 重啟系統
30 5 * * * root /sbin/reboot

# 每天 21:30 重啟 lighttpd
30 21 * * * root /usr/local/etc/rc.d/lighttpd restart

常見坑點與排查

  • 任務不執行:檢查 crond 是否運行、腳本是否有執行權限、路徑是否絕對、環境變量是否完整。
  • 時間不準:確認系統時區 timedatectl 與硬體時鐘同步。
  • 日誌查看:grep CRON /var/log/syslog 或 /var/log/cron。

crontab 實操截圖

掌握 crontab 精髓在於「理解時間格式、善用腳本封裝、重視環境變量隔離」。將本文收藏備查,定時任務配置將不再是難題。

copyright © 萬盛學電腦網 all rights reserved