docker映象中的定時任務

2021-08-03 07:29:31 字數 3117 閱讀 6731

crond作為linux定時任務的服務提供者,基本上linux上都會將此服務啟動起來.但是在docker映象中就未必如此了。很多時候映象中沒有crond服務,如果又不太方便安裝,或者統一的映象不太好為乙個特殊的需求特意提供此項功能的時候,可以考慮使用外部的crontab通過docker exec來執行確認結果。

centos7上已經使用了systemd,所以不再是init.d,使用systemctl status crond則可確認crond的執行狀態。

[root@liumiaocn ~]# systemctl status crond

● crond.service - command scheduler

loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)

active: active (running) since mon 2017-05-08

05:16:54 edt; 1 months 24 days ago

main pid: 2334 (crond)

memory: 84.0k

cgroup: /system.slice/crond.service

└─2334 /usr/sbin/crond -n

may 08

05:16:54 liumiaocn systemd[1]: started command scheduler.

may 08

05:16:54 liumiaocn systemd[1]: starting command scheduler...

may 08

05:16:54 liumiaocn crond[2334]: (cron) info (random_delay will be scaled with factor 77% if used.)

may 08

05:16:55 liumiaocn crond[2334]: (cron) info (running with inotify support)

jun 19

02:37:01 liumiaocn crond[2334]: (*system*) reload (/etc/crontab)

jun 19

02:53:01 liumiaocn crond[2334]: (root) reload (/var/spool/cron/root)

jul 01

20:49:01 liumiaocn crond[2334]: (root) reload (/var/spool/cron/root)

jul 01

20:54:01 liumiaocn crond[2334]: (root) reload (/var/spool/cron/root)

jul 01

21:04:01 liumiaocn crond[2334]: (root) reload (/var/spool/cron/root)

jul 02

02:00:01 liumiaocn crond[2334]: (root) reload (/var/spool/cron/root)

[root@liumiaocn ~]#

在systemctl status crond 中確認到了其啟動的pid,所以使用其可以確認狀態

[root@liumiaocn ~]# ps -ef |grep 2334 |grep -v grep

root 233410

may08 ? 00:00

:17 /usr/sbin/crond -n

[root@liumiaocn ~]#

使用如下常見命令可以當前使用者或者指定使用者的定時任務進行編輯或者檢視

項番命令

說明no.1

crontab -l

列出當前使用者的crontab資訊

no.2

crontab -e

編輯當前使用者的crontab資訊

no.3

crontab -u

指定某一使用者,可以與其他選項結合起來,比如crontab -u root -l列出root的crontab資訊

no.4

crontab -r

刪除當前使用者crontab資訊

以root為例,其crontab的設定檔案為/var/spool/cron/root

crontab例: 每分鐘執行一次/tmp/check_system.sh

* 

* ** * /tmp/check_system.sh

格式說明:

項番內容

說明no.1

*表示分鐘,範圍為1~59

no.2

*表示小時,範圍為1~23(0表示子夜)

no.3

*表示日期,範圍為1~31

no.4

*表示月份,範圍1~12

no.5

*表示星期的某一天,範圍為0~6(0表示星期天)

no.6

/tmp/check_system.sh

執行的命令或者檔案

cron執行結果的日誌如下所示:

專案詳細

cron log

/var/log/cron

例子資訊如下

liumiaocn crond[15747]: (root) cmd (docker exec -it ...
其他確認資訊,有時mail的日誌也能提示一定資訊. 比如在cron日誌可以看到docker exec -it 的資訊,但是沒有報錯,發現沒有執行,

結果在如下的mail日誌中發現了」the input device is not a tty」的錯誤提示,提示了t(for tty),所以直接docker exec 就沒有問題了,錯誤資訊的提示有的時候還是很重要的,不然有可能很簡單的錯誤都容易被視而不見。

專案詳細

mail log

/var/spool/mail/root

linux定時任務 at定時任務

at命令是一次性定時計畫任務,at的守護程序atd會以後臺模式執行,檢查作業佇列來執行作業。atd守護程序會檢查系統上的乙個特殊目錄來獲取at命令的提交的作業,預設情況下,atd守護程序每60秒檢查一次目錄,有作業時,會檢查作業執行時間,如果時間與當前時間匹配,則執行此作業。注意 at命令是一次性定...

Linux中的延時任務以及定時任務

root localhost at 23 37 設定任務執行時間 at rm fr mnt 任務執行動作 at ctrl d 用ctrl d發起任務 root localhost at now 1min 延時1分鐘 at rm fr mnt at 命令 注釋at l 檢視任務列表 at c 檢視任務...

定時任務中,cronExpression的設定規則

單純針對時間的設定規則 org.springframework.scheduling.quartz.crontriggerbean允許你更精確地控制任務的執行時間,只需要設定其cronexpression屬性。乙個cronexpression表示式有至少6個 也可能是7個 由空格分隔的時間元素。從左...