Files
Obsidian-Main/21.01. Linux/crontab.md
Awin Huang afeb207be2 vault backup: 2025-08-20 14:35:48
Affected files:
Too many files to list
2025-08-20 14:35:48 +08:00

4.4 KiB
Raw Blame History

加入

使用crontab -e,然後加入這一行: */1 * * * * /home/awin/script/ddns.sh

說明

!Pasted image 20240111231507.png 依序是 分鐘,   小時,   日期,   月份,    星期,   command 參數為 0-59,   0-23,   1-31,  1-21,   0-6,   需要執行的command ※ 星期參數為 0 代表星期日

  • 【*】:星號,代表任何時刻都接受的意思
  • 【,】逗號代表分隔時段。例如30 9,17 * * * command代表早上 9 點半和下午五點半都執行 command。
  • 【-】減號代表一段時間範圍。例如15 9-12 * * * command代表從 9 點到 12 點的每個 15 分都執行 command。
  • 【/n】斜線n 代表數字,表示每個 n 單位間隔。例如:*/5 * * * * command代表每隔 5 分鐘執行一次 command。

還有一些人性化的參數,一次取代全部五個數字參數

  • 【@reboot】 僅在開機的時候執行一次。
  • 【@yearly】 一年執行一次和0 0 1 1 * command效果一樣。
  • 【@annually】和@yearly一樣
  • 【@monthly】一個月執行一次和0 0 1 * * command效果一樣。
  • 【@weekly】一個星期執行一次和0 0 * * 0 command效果一樣。
  • 【@daily】每天執行和0 0 * * * command效果一樣。
  • 【@midnight】和@daily一樣
  • 【@hourly】 每小時執行和0 * * * * command效果一樣。

範例

  • 每 5 分鐘執行一次:
    • */5 * * * *  root    /usr/libexec/atrun
  • 每 5 小時執行一次
    • * */5 * * * root    /usr/libexec/atrun
  • 每天 AM 5:00 執行指令(星號與星號之間要有空隔)
    • 00 05   * * *  username /bin/bash /路徑/command
  • 1 至 20 號每天執行一次
    • 0 1 1-20  * * root    /usr/libexec/atrun
  • 當分針移到第 5 分時,執行此 cron
    • 5 * * * * root    /usr/libexec/atrun
  • 當時針移到 1 點 1 分時,執行此 cron
    • 1 1 * * * root    /usr/libexec/atrun
  • 每週一的 1 點 1 分,執行
    • 1 1 * * 1 root    /usr/libexec/atrun
  • 2 月 29 日時針到 1 點 1 分,執行
    • 1 1 29 2 * root    /usr/libexec/atrun
  • 8 點到 16 點每 5 分鐘執行一次 cron
    • /5 8-16 * * *   root    /usr/libexec/atrun

crontab 命令

啟動

sudo service cron start

重新啟動

/etc/init.d/cron restart

查詢service狀態

sudo /etc/init.d/cron status

編輯 crontab

crontab -e

awin 的 crontab

# m     h  day mon weekday   command
*/5     *  *   *   *         /home/awin/script/clean_nextcloud.sh

root 的 crontab

# m     h  day mon dow       command
*/3     *  *   *   *         /home/awin/script/ddns.sh                               > /home/awin/log/ddns.log                      2>&1
*/5     *  *   *   *         /home/awin/script/clean_nextcloud.sh                    > /home/awin/log/clean_nextcloud.log           2>&1
1       2  *   *   1         /home/awin/script/backup_adguardhome.sh                 > /home/awin/log/backup_docker_adguardhome.log 2>&1
2       2  *   *   1         /home/awin/script/backup_filebrowser.sh                 > /home/awin/log/backup_docker_filebrowser.log 2>&1
3       2  *   *   1         /home/awin/script/backup_freshrss.sh                    > /home/awin/log/backup_docker_freshrss.log    2>&1
4       2  *   *   1         /home/awin/script/backup_gitea.sh                       > /home/awin/log/backup_docker_gitea.log       2>&1
5       2  *   *   1         /home/awin/script/backup_immich.sh                      > /home/awin/log/backup_docker_immich.log      2>&1
1       2  *   *   2         /home/awin/script/backup_nextcloud.sh                   > /home/awin/log/backup_docker_nextcloud.log   2>&1
*       *  1   *   *         /home/awin/script/backup_dotfiles_awin-pc2.sh           > /home/awin/log/backup_dotfiles_awin-pc2.log  2>&1
1       1  *   *   *         /home/awin/script/rsync_nasphoto.sh                     > /home/awin/log/rsync_nasphoto.log            2>&1
@reboot                      /home/awin/script/reboot_echo.sh                        > /home/awin/log/reboot.log                    2>&1

## Restart Docker containers
# m     h  day mon dow       command
0       4  *   *   *         docker restart grafana-prometheus-local_data_exporter-1 > /home/awin/log/restart_grafana-prometheus-local_data_exporter-1.log 2>&1