crontab定時器任務以及不執行的原因

2021-09-17 07:21:46 字數 2741 閱讀 6499

crontab -e
35 14 * * * python3 /home/yanyouscrapy/tutorial/lucas_scrapy_auto_run.py >/dev/null 2>&1
前五個*代表分,時,幾號,幾月,星期幾

sudo service cron restart  

service cron status

vi /etc/rsyslog.d/50-default.conf
開啟cron的log,把cron面前的*去掉,然後重啟log服務

sudo  service rsyslog  restart
目標:定時任務:每分鐘向螢幕輸出"hello world!"。

有兩種實現方式:

1)輸入crontab -e命令,根據提示直接在當前cron task文字最後面插入如下命令(記得回車):

* * * * * echo "hello world!"

sudo vim /var/spool/cron/crontabs/waterfronter             #注:waterfronter為當前使用者名稱

同樣在檔案末行插入:

* * * * * echo "hello world!"

儲存退出,並通過crontab -l檢視定時任務建立成功。

2、然後等待,若干分鐘後發現螢幕並未輸出"hello world!"怎麼回事?!

1)剛開始懷疑是cron服務沒有啟動,遂執行:

sudo service cron status

發現cron服務是running的,排除;

2)繼而懷疑是任務檔案建立後未能被系統及時get到,因而執行:

sudo service cron restart

重啟cron後問題依舊,排除;

sudo vim /etc/rsyslog.d/50-default.conf

sudo  service rsyslog  restart

執行less -10 /var/log/cron.log再次檢視cron執行日誌,log出來了,提示如下資訊:

no mta installed, discarding output

原因是cron把螢幕輸出都傳送到email了,而當前環境並未安裝email server,於是系統報錯,解決方面就是不要直接向螢幕輸出內容,而是重定向到乙個檔案。

3、修改任務檔案

sudo vim /var/spool/cron/crontabs/waterfronter

將末行改為:

* * * * * echo "hello world!" >> /tmp/cron_log.txt

儲存退出,同時reload cron服務:

sudo service cron reload

若干分鐘後檢視/tmp/cron_log.txt,「hello world!」每隔一分鐘輸出一次,問題解決。

如果在日誌中能看到有這樣的記錄

jan 23 12:55:01 izbp12o440hd7llqz14ebpz cron[3990]: (root) mail (mailed 1 byte of output; but got status 0x00ff, #012)

這是乙個很常見的錯誤,很多新手都會碰到這個問題,這個錯誤原因是cron執行完你的命令後就會給你發一封郵件,但是我郵件都沒配置往哪發啊,所以就報錯了。難道真的要我把郵箱配置起來嘛,當然不要,也不知道怎麼配,更不想去配,你執行完就完事了唄,給我發郵件幹啥呢。可能老外比較喜歡用郵件,想每天登入郵箱都能看到滿滿的一箱信,哈哈,扯遠了。

回歸正題,我們只需要在每條cron命令空一格後加上這幾個字

>/dev/null 2>&1

比如我的一條命令

*/5 * * * * sh /var/***/***.sh >/dev/null 2>&1

明確告訴你,完事別給我發什麼郵件了,老子不需要。然後

service cron restart

把cron重啟一下,靜靜的等待奇蹟的出現。。。

如果還有問題,看日誌,一步步排查,還有乙個很值得注意的就是要確保你的指令碼命令盡量使用全路徑,有些環境變數沒配的話是執行不起來的。

使用python指令碼來實現:

新建個crawl.py檔案,寫入以下字元:

# -*- coding: utf-8 -*-

import scrapy

from scrapy import cmdline

import os

os.chdir("/home/yanyouscrapy/tutorial")

cmdline.execute("scrapy crawl quotes ".split())

# -*- coding: utf-8 -*-

import scrapy

from scrapy.crawler import crawlerprocess

from scrapy.utils.project import get_project_settings

from spiders.test_spider import *

process = crawlerprocess(get_project_settings())

process.crawl(testspider)

process.start()

cron風格定時器 crontab定時器工具

要使用crontab定時器工具,必須要啟動cron服務 service cron start crontab各引數說明 e 執行文字編輯器來編輯crontab,內定的文字編輯器是vi r 刪除目前的crontab l 列出目前的crontab 檢視專用 代表所有的取值範圍內的數字。特別要注意哦!代表...

定時器任務

步驟 在springboot 入口中,開啟定時器任務。新建任務類,將任務類交給spring 容器管理。啟動類加入註解 enablescheduling 開啟定時器任務 新建定時器任務包,新建任務類 在任務類中 寫上乙個任務 在任務的上面加上註解 scheduled fixdrate 毫秒 每隔 毫秒...

freertos 定時器 不啟動 定時器

工作方式0,13位定時器 計數器。下面以定時器0為例講解。上圖可以知道定時器工作方式0的邏輯結構,與工作方式1相差不遠,只是方式1是兩個8位計數器,而方式0是乙個8位,乙個低5位組成的13位計數器。程式設計控制兩個非常像。方式0的計數器最大值為2的13次方 8192,計數一次時間最大值為8192 1...