欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

crontab定時任務(wù)不執(zhí)行的一些原因總結(jié)

 更新時間:2019年01月09日 09:34:57   作者:田野上的希望  
這篇文章主要給大家總結(jié)介紹了關(guān)于crontab定時任務(wù)不執(zhí)行的一些原因,對每種可能發(fā)生的原因都給出了解決方法,對遇到這個問題的朋友們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

最近在工作中遇到了一些問題,crontab定時任務(wù)居然不執(zhí)行,后來我在網(wǎng)上找的時候發(fā)現(xiàn)網(wǎng)上主要說了這5個原因:

1 crond服務(wù)未啟動

crontab不是Linux內(nèi)核的功能,而是依賴一個crond服務(wù),這個服務(wù)可以啟動當然也可以停止。如果停止了就無法執(zhí)行任何定時任務(wù)了,解決的方法是打開它:

crond

service crond start

如果提示crond命令不存在,可能被誤刪除了,CentOS下可以通過這個命令重新安裝:

yum -y install crontabs

2 權(quán)限問題

比如:腳本沒有x執(zhí)行權(quán)限,解決方法:

增加執(zhí)行權(quán)限,或者用bash abc.sh的方法執(zhí)行

也有可能crontab任務(wù)所屬的用戶對某個目錄沒有寫權(quán)限,也會失敗

3 路徑問題

有的命令在shell中執(zhí)行正常,但是在crontab執(zhí)行卻總是失敗。有可能是因為crontab使用的sh未正確識別路徑,比如:以root身份登錄shell后執(zhí)行一個/root/test.sh,只要執(zhí)行

./test.sh

就可以了。但是在crontab中,就會找不到這個腳本,比如寫完整:

/root/test.sh

4 時差問題

因為服務(wù)器與客戶端時差問題,所以crontab的時間以服務(wù)器時間為準。

時差這個問題還真是搞人,這個我親身體驗了,現(xiàn)象如下:

(1) 我設(shè)置了一個定時腳本,用date命令觀察服務(wù)器的時間到了腳本執(zhí)行的時間點,發(fā)現(xiàn)沒有執(zhí)行

(2) 但是我把腳本設(shè)置成每分鐘執(zhí)行一次,就是OK的

見鬼了,服務(wù)器時間是對的?。磕鞘且觽€什么時區(qū)?于是把腳本的時間減10或者12或者8個小時都嘗試了下,發(fā)現(xiàn)都不行。

但是很明顯是時間不一致導(dǎo)致的不執(zhí)行。

最后用如下兩行解決了問題:

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
service crond restart

參考這篇文章: http://www.dbjr.com.cn/article/154296.htm

5 變量問題

有時候命令中含有變量,但crontab執(zhí)行時卻沒有,也會造成執(zhí)行失敗。

驗證后,我的定時腳本test.sh不執(zhí)行不是上述任何一種原因,其實我的腳本就一句話:

#!/bin/bash
echo 123 >> testFile

我希望通過這種方式來測試 我設(shè)置的定時腳本起作用了,于是我設(shè)置了該腳本每分鐘執(zhí)行一次,但是死活在腳本所在目錄看不到這個文件,我手動執(zhí)行

# sh test.sh

卻能看到在腳本所在目錄能看到這個文件

我懷疑是crontab根本沒有執(zhí)行,于是我在crontab中直接添加了

*/1 * * * * echo 123 >> /home/denglinjie/testFile

testFile文件生成了,說明crontab是執(zhí)行了的,那看來是我腳本自身存在問題

最后發(fā)現(xiàn),原來是testFile這里必須寫完整的路徑,我天真的以為testFile會生成在腳本所在的目錄,所以改成了如下形式

#!/bin/bash
echo 123 >> /data/denglinjie/testFile

然后就可以了。

其實路徑是個非常容易出問題的地方,假設(shè)在/home/denglinjie目錄下有一個腳本文件test1.sh,然后在該目錄下還有一個腳本文件test2.sh

在test1.sh中執(zhí)行了test2.sh,而且用的是相對路徑,即相對test1.sh所在的路徑。

如果在crontab -e中編輯的時候,執(zhí)行的方式是

sh /home/denglinjie/test1.sh,當執(zhí)行到調(diào)用sh test2.sh的時候,系統(tǒng)會認為是從crontab文件所在的目錄去找test2.sh,但是其實是找不到的,造成執(zhí)行失敗

最開始我想的方法是,我要將我寫的待執(zhí)行的腳本文件以及被調(diào)用的其他的腳本和crontab文件放到一個地方,這樣就可以拉,但是失敗了,可能是因為權(quán)限問題,我進不去/var/spool/cron目錄。

所以另外一個解決方法就是在執(zhí)行腳本之前先通過 cd   /home/denglinjie 命令進入到腳本所在目錄

------------------------------------------------------------------

最近又發(fā)現(xiàn)一種新的引起crontab不執(zhí)行的原因

這里我要執(zhí)行的是python腳本,我python腳本的目錄為:

/data/denglinjie/work/UpdateModuleSwitch

一開始我的定時任務(wù)是這樣寫的:

0 * * * * cd /data/denglinjie/work/UpdateModuleSwitch;python update_switch.py

發(fā)現(xiàn)到了時間點居然沒有執(zhí)行,其中update_switch.py的部分內(nèi)容如下:

import pymongo

就是我的腳本中引入了自己安裝的pymongo, 注意,這個pymongo是安裝到了指定的python版本上的

不執(zhí)行原因:crontab定時任務(wù)執(zhí)行的時候,使用的python不是我的那個python,使用的這個python沒有安裝pymongo,導(dǎo)致import失敗

解決辦法,改成如下形式:

0 * * * * cd /data/denglinjie/work/UpdateModuleSwitch;/data/zhoumi/install_evn/bin/python update_switch.py

指定運行使用的python,這個python已經(jīng)安裝綁定了pymongo,或者用如下形式:

0 * * * * export PATH=/data/zhoumi/install_evn/bin/:$PATH;cd /data/denglinjie/work/UpdateModuleSwitch;python update_switch.py

因為我的這個python是安裝在我自己的用戶目錄下,所以系統(tǒng)找不到這個python,所以只要將我的python也加入到系統(tǒng)PATH環(huán)境變量中就可以了

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • linux中sed命令的使用與注意小結(jié)

    linux中sed命令的使用與注意小結(jié)

    sed本身也是一個管道命令,可以分析standard input的,sed可以將數(shù)據(jù)進行替換、刪除、新增、選取特定行等。下面這篇文章主要介紹了linux中sed命令的用法和注意事項,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • Centos7.3開機自動啟動或執(zhí)行指定命令操作

    Centos7.3開機自動啟動或執(zhí)行指定命令操作

    這篇文章主要介紹了Centos7.3開機自動啟動或執(zhí)行指定命令操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Linux服務(wù)器如何使用網(wǎng)絡(luò)代理

    Linux服務(wù)器如何使用網(wǎng)絡(luò)代理

    這篇文章主要介紹了Linux服務(wù)器如何使用網(wǎng)絡(luò)代理問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 詳解Linux(Centos)之安裝Nginx及注意事項

    詳解Linux(Centos)之安裝Nginx及注意事項

    Nginx是一個高性能的HTTP和反向代理服務(wù)器,這篇文章主要介紹了詳解Linux(Centos)之安裝Nginx及注意事項,有興趣的可以了解一下。
    2017-03-03
  • Linux 中不輸入密碼運行 sudo 命令的方法

    Linux 中不輸入密碼運行 sudo 命令的方法

    sudo命令允許受信任的用戶作為另一個用戶運行程序,默認情況下是root用戶。這篇文章主要介紹了Linux 中不輸入密碼運行 sudo 命令的方法,需要的朋友可以參考下
    2019-07-07
  • 關(guān)于安裝LNMP集成包后上傳圖片報500錯誤的解決方法

    關(guān)于安裝LNMP集成包后上傳圖片報500錯誤的解決方法

    這篇文章主要給大家介紹了關(guān)于安裝LNMP集成包后上傳圖片報500錯誤的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • grub命令行啟動系統(tǒng)簡明教程

    grub命令行啟動系統(tǒng)簡明教程

    這篇文章主要介紹了grub命令行啟動系統(tǒng)的簡明教程,以及GRUB啟動命令詳解,需要的朋友可以參考下
    2014-03-03
  • CentOS7如何執(zhí)行PHP定時任務(wù)詳解

    CentOS7如何執(zhí)行PHP定時任務(wù)詳解

    這篇文章主要給大家介紹了關(guān)于在CentOS7中如何執(zhí)行PHP定時任務(wù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • Linux實現(xiàn)科學(xué)上網(wǎng)

    Linux實現(xiàn)科學(xué)上網(wǎng)

    本文給大家介紹的是Linux下使用plink ssh + privoxy 實現(xiàn)局域網(wǎng)共享代理,非常的全面細致,這里推薦給大家。
    2015-03-03
  • linux刪除環(huán)境變量步驟詳解

    linux刪除環(huán)境變量步驟詳解

    在本篇文章里小編給大家分享了關(guān)于linux如何刪除環(huán)境變量的詳細方法和步驟,需要的朋友們學(xué)習(xí)下。
    2019-04-04

最新評論