概述
简介
配置cron有两种方式,一种是直接编辑 /etc/crontab
文件; 一种是使用 crontab -e
命令(推荐使用这种方式)。
1. 配置crontab文件
Linux下的定时执行主要是使用crontab文件中加入定制计划来执行,
查看/etc/crontab
文件:
$ cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
配置crontab文件:
$ vi /etc/crontab
添加命令示例:
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
2. 使用crontab -e命令
crontab命令:
crontab –e //修改 crontab 文件,如果文件不存在会自动创建。
crontab –l //显示 crontab 文件。
crontab -r //删除 crontab 文件。
crontab -ir //删除 crontab 文件前提醒用户。
service crond status //查看crontab服务状态
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
基本格式:
* * * * * command
分 时 日 月 周 命令
(1)通过 crontab -e 创建用户的crontab文件
$ crontab -e
如果第一次创建,会是空白文件;以后会打开上次创建的文件。
可以在文件头部写入:
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
# Order of crontab fields
# minute hour mday month wday command
(2)添加运行的命令
比如,定时8点运行/data/schdule.sh
脚本,对文件/etc/crontab
进行编辑,添加相应的运行代码:
0 8 * * * /data/schdule.sh
如果希望记录脚本的输出日志:
这个功能/etc/crontab是没有的.
0 8 * * * /data/schdule.sh > /data/schdule.log
如果定时运行python程序,只需要在我们的/data/schdule.sh
脚本里边写上需要运行的python代码:
python send_message_everyday.py
(3)管理crontab文件
查看已有的命令:
% crontab -l
0 14 * * * /usr/home/dru/bin/mycustomscript.sh
删除所有的cron jobs:
% crontab -r
remove crontab for dru? y
2>&1含义
0 1 * * * /data/test.sh > /dev/null 2>&1
>
代表重定向;
/dev/null
代表空设备文件,相当于回收站。
1
表示stdout
标准输出,系统默认值是1
,所以">/dev/null
" 等同于 “1>/dev/null
”
2
表示stderr
标准错误输出;
&
表示等同于的意思,2>&1
表示将标准错误输出重定向到标准输出stdout
。
#整句的意思就是标准输出重定向到空设备文件,也就是不输出任何信息到终端,标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
3. /etc/crontab 和crontab -e的区别
(1)/etc/crontab
是系统范围的crontab
, 它的格式是:
# m h dom mon dow user command
* * * * * someuser echo 'foo'
(2)crontab -e
是针对每一个用户,但可以用 crontab -e -u <username>
指定某个用户。
对每个用户的crontab
, 是没有 user
选项的:
# m h dom mon dow command
* * * * * echo 'foo'
4. 查看定时任务状态
如果认为执行不成功,可以查看定时任务状态:
service crond status
(centos7 版本:systemctl status crond.service
)
Redirecting to /bin/systemctl status crond.service
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-07-01 22:42:35 CST; 4 months 29 days ago
Main PID: 19746 (crond)
CGroup: /system.slice/crond.service
└─19746 /usr/sbin/crond -n
Nov 29 23:24:01 bk-1.localdomain crond[19746]: (*system*) RELOAD (/etc/crontab)
Nov 29 23:27:01 bk-1.localdomain crond[19746]: (*system*) RELOAD (/etc/crontab)
Nov 30 04:00:01 bk-1.localdomain crond[19746]: (/data/project/run_job.sh) ERROR (getpwnam() failed)
Nov 30 09:59:01 bk-1.localdomain crond[19746]: (*system*) RELOAD (/etc/crontab)
重启定时任务: (/etc/crontab
会一分钟重新读取,一般无需重启)
service crond restart
(centos7 版本systemctl restart crond.service
)
参考:
- Linux 定时运行脚本、命令;
- Linux 定时执行shell脚本命令之crontab;
- Difference between /etc/crontab and “crontab -e” Ask Question;
- 排查/etc/crontab不执行的过程;
- /dev/null 2>&1 详解
最后
以上就是炙热皮皮虾为你收集整理的Linux crontab命令定时运行脚本, python程序的全部内容,希望文章能够帮你解决Linux crontab命令定时运行脚本, python程序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复