docker容器中cron任務(wù)未執(zhí)行的原因分析及解決
前提
- cron正確安裝: apt-get cron
- cron-job格式正確:*/1 * * * * /bin/sh xxx
- cron-job的文件位置正確:/var/spool/cron/crontabs/root
現(xiàn)象
在宿主機(jī)安裝能成功,反復(fù)檢查沒問題,只要安裝到ubuntu:22.04鏡像中就執(zhí)行不了
(無解)解決一:pam權(quán)限問題
網(wǎng)上有部分是這原因,但我不是~
RUN echo '*/1 * * * * /bin/sh xxx.sh'>>/var/spool/cron/crontabs/root RUN sed -i '/session required pam_loginuid.so/c\#session required pam_loginuid.so' /etc/pam.d/cron
(可行)解決二:動(dòng)態(tài)加載到cron執(zhí)行任務(wù)中
此方法測試可行,強(qiáng)制加入文件到crontab執(zhí)行任務(wù)中,且文件的位置可任意指定
RUN echo '*/1 * * * * /bin/sh xxx.sh'>>/var/spool/cron/crontabs/root RUN crontab /var/spool/cron/crontabs/root
(推薦,最終原因)解決三:job文件權(quán)限修改為600
/var/spool/cron/crontabs下的文件必須是600(-rw-------)的文件權(quán)限,而不應(yīng)該使用容器的644權(quán)限(容器里一般umask=0022),權(quán)限低的能執(zhí)行成功,權(quán)限高的反而執(zhí)行失敗。
此種方法使用了cron默認(rèn)操作方式,推薦使用。
RUN echo '*/1 * * * * /bin/sh xxx.sh'>>/var/spool/cron/crontabs/root \
&& chmod 600 /var/spool/cron/crontabs/root
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用docker創(chuàng)建集成服務(wù)lnmp環(huán)境
本篇文章主要介紹了使用docker創(chuàng)建集成服務(wù)lnmp環(huán)境,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04
CentOS8上用Docker部署開源項(xiàng)目Tcloud的教程
這篇文章主要介紹了CentOS8上用Docker部署開源項(xiàng)目Tcloud,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
詳解使用export/import導(dǎo)出和導(dǎo)入docker容器
本篇文章主要介紹了詳解使用export/import導(dǎo)出和導(dǎo)入docker容器,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07
docker網(wǎng)絡(luò)端口映射的實(shí)現(xiàn)步驟
本文主要介紹了docker網(wǎng)絡(luò)端口映射的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
docker配置openGauss數(shù)據(jù)庫的方法詳解
這篇文章主要介紹了docker配置openGauss數(shù)據(jù)庫,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
docker安裝redis并以配置文件方式啟動(dòng)詳解
這篇文章主要介紹了docker安裝redis并以配置文件方式啟動(dòng)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12

