crontab定时任务执行Scrapyd爬虫以及日志查看

crontab系统自带的调度命令,通过crontab命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。

一、基本操作

查看 crontab 是否启动

sudo launchctl list | grep cron

crontab服务的重启,关闭,开启

mac系统下

sudo /usr/sbin/cron start
sudo /usr/sbin/cron restart
sudo /usr/sbin/cron stop

ubuntu:

$sudo /etc/init.d/cron start
$sudo /etc/init.d/cron stop
$sudo /etc/init.d/cron restart

centos:

$systemctl status crond.service 查看cron服务的启动状态
$systemctl start crond.service  启动cron服务[命令没有提示]
$systemctl stop crond.service 停止cron服务[命令没有提示]
$systemctl restart crond.service 重启cron服务[命令没有提示]
$systemctl reload crond.service 重新加载cron服务[命令没有提示]

crontab命令 

crontab [-u user] file crontab [-u user] [ -e | -l | -r ]

命令参数

-u user:用来设定某个用户的crontab服务;
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并导入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。

# 使用-l参数列出crontab文件
crontab -l

# 使用-r参数删除crontab文件
crontab -r

# 追加 crontab 定时任务,每分钟触发,会已vim方式呈现
crontab -e

# 导入预先编好的脚本文件
crontab filename

crontab基本格式

*  *  *  *  *  command
分  时  日  月  周  命令
第1列分钟0~59
第2列小时0~23(0表示子夜)
第3列日1~31
第4列月1~12
第5列星期0~7(0和7表示星期天)
第6列要运行的命令

例子

*/60  * * * * #每60分钟即每小时执行一次
*/100 * * * * #每100分钟执行一次

二、问题排查 

报错1

默认情况下,crontab中执行的日志写在/var/log下,如:

ls /var/log/cron*
/var/log/cron
/var/log/cron.1
/var/log/cron.2
/var/log/cron.3
/var/log/cron.4

crontab 作为执行文件需要在 liunx 编写,如果在 windows 编写执行文件,会出现格式错误,导致定时任务不执行

crontab的日志比较简单,当crond执行任务失败时会给用户发一封邮件

在 /var/spool/mail/root 文件中,有crontab执行日志的记录,用tail -f /var/spool/mail/root 即可查看最近的crontab执行情况。

linux 清除/var/spool/mail/root日志存储

cat /dev/null>root
cat /dev/null>/var/spool/mail/root

报错2

no crontab for root

[root@localhost ~]# crontab -l
no crontab for root

这个问题非常简单,同样在 root 用户下输入 crontab -e

按 Esc 按: wq 回车

在输入 crontab -l 就没有问题了

三、实战

1.编写 .sh 文件

#!/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/vim/bin:/root/bin
ttime=`date +"%Y-%m-%d %H:%M:%S"`
pppoe-stop
echo "关闭ip等待30s" $ttime
sleep 10s

ttime=`date +"%Y-%m-%d %H:%M:%S"`
pppoe-start
echo "启动ip等待5分钟" $ttime
sleep 2m

ttime=`date +"%Y-%m-%d %H:%M:%S"`
echo "docker jdmain 启动" $ttime
docker restart jdmain
sleep 15s
echo "docker jdmain 结束" $ttime

ttime=`date +"%Y-%m-%d %H:%M:%S"`
echo "docker jdmain_2 启动" $ttime
docker restart jdmain_2
sleep 15s
echo "docker jdmain_2 结束" $ttime

2.编写 定时任务,每半个小时执行一次

*/30  *  *  *  * /root/data/script.sh

3.查询定时任务信息

[root@s251 data]# cat /var/spool/mail/root

From root@s251.localdomain  Wed Oct 20 17:07:02 2021
Return-Path: <root@s251.localdomain>
X-Original-To: root
Delivered-To: root@s251.localdomain
Received: by s251.localdomain (Postfix, from userid 0)
    id 3B79235DD31; Wed, 20 Oct 2021 17:07:02 +0800 (CST)
From: "(Cron Daemon)" <root@s251.localdomain>
To: root@s251.localdomain
Subject: Cron <root@s251> /root/data/script.sh
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
Precedence: bulk
X-Cron-Env: <LANG=en_US.UTF-8>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20211020090702.3B79235DD31@s251.localdomain>
Date: Wed, 20 Oct 2021 17:00:01 +0800 (CST)

SIOCDELRT: No such process
关闭ip等待30s 2021-10-20 17:00:01
SIOCDELRT: No such process
SIOCDELRT: No such process
启动ip等待5分钟 2021-10-20 17:00:33
docker jdmain 启动 2021-10-20 17:05:41
jdmain
docker jdmain 结束 2021-10-20 17:05:41
docker jdmain_2 启动 2021-10-20 17:06:22
jdmain_2
docker jdmain_2 结束 2021-10-20 17:06:22

4.查询定时任务启动状态信息

[root@s251 data]# systemctl status crond.service

● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since 三 2021-10-20 17:20:23 CST; 10min ago
  Process: 7051 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
 Main PID: 7043 (crond)
    Tasks: 6
   Memory: 3.1M
   CGroup: /system.slice/crond.service
           ├─7043 /usr/sbin/crond -n
           ├─7272 /usr/sbin/CROND -n
           ├─7274 /bin/bash /root/data/script.sh
           ├─7290 /usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t -f root
           ├─7292 /usr/sbin/postdrop -r
           └─7304 sleep 2m

10月 20 17:20:23 s251 systemd[1]: Started Command Scheduler.
10月 20 17:20:23 s251 crond[7043]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 68% if used.)
10月 20 17:20:23 s251 crond[7043]: (CRON) INFO (running with inotify support)
10月 20 17:20:23 s251 crond[7043]: (CRON) INFO (@reboot jobs will be run at computer's startup.)
10月 20 17:20:35 s251 systemd[1]: Reloading Command Scheduler.
10月 20 17:20:35 s251 systemd[1]: Reloaded Command Scheduler.
10月 20 17:21:01 s251 crond[7043]: (CRON) INFO (running with inotify support)
10月 20 17:30:01 s251 CROND[7273]: (root) CMD (/usr/lib64/sa/sa1 1 1)
10月 20 17:30:01 s251 CROND[7274]: (root) CMD (/root/data/script.sh)
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是花臂不花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值