Crontab 安装
# 服务器是否安装了crontab
rpm -qa | grep crontab
# 使用yum命令安装Crontab
# vixie-cron软件包是cron的主程序
yum install vixie-cron
# crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序
yum install crontabs
Crontab 启动,停止,重启命令
# 启动服务
service crond start
# 关闭服务
service crond stop
# 重启服务
service crond restart
# 重新载入配置
service crond reload
# 查看crontab服务状态
service crond status
# 同样可以设置开机自启动
chkconfig --level 345 crond on
查看任务,添加任务,删除任务
# 查看crontab定时任务
crontab -l
# 添加任务,cron表达式 sh脚本路径
crontab -e
# 删除所有的定时任务
crontab -r
crontab -e 配置文件位置
全局配置文件
crontab 在/etc目录下面存在cron.hourly,cron.daily,cron.weekly,cron.monthly,cron.d五个目录crontab,cron.deny二个文件
[root@uc-jumpbox-uat etc]# find cron.*
cron.d # 是系统自动定期需要做的任务
cron.daily # 是每天执行一次的job
cron.deny # 文件就是用于控制不让哪些用户使用Crontab的功能
cron.hourly # 是每小时执行一次的job
cron.monthly # 是每月执行一次的job
cron.weekly # 是每周只一次的job
crontab # 是设定定时任务执行文件
用户配置文件
每个用户都有自己的cron配置文件,可以通过 crontab -e 就可以编辑,一般情况下我们编辑好的用户的cron配置文件保存退出后,系统会自动就存放于 /var/spool/cron/目录中 文件以用户名称命令,liunx的cron服务是每隔一分钟取读取一次 /var/spool/cron , /ect/crontab , /etc/cron.d 下面的所有内容
[root@uc-jumpbox-uat cron]# ll
total 4
-rw-------. 1 root root 103 Jul 27 05:34 root
-rw-------. 1 abc abc 0 Jul 27 02:08 abc
crontab 日志查看
crontab的运行日志 可以在 /var/log/cron.log 文件中
如果没有 /var/log/cron.log 可能是在 /var/log/cron
# 查看crontab日志
[root@uc-wqw log]# tail -2 cron
Jul 27 03:11:01 uc-wqw CROND[27438]: (root) CMD (/home/temp/test.sh)
crontab有时候找不到日志
需要通过配置打开crontab的日志记录功能
sudo vim /etc/rsyslog.d/50-default.conf
cron.* /var/log/cron.log # 将cron前面的注释去掉
# 重启rsyslog
sudo /etc/init.d/rsyslog restart
# 重启rsyslog
sudo service rsyslog restart
# 重启cron程度
sudo service cron restart
# 重启crond。 在有的系统中,定时任务程序名称是crond
sudo service crond restart
demo
创建 sh脚本 test.sh
#!/bin/bash
# 进入指定目录
cd /home/temp/
#输出内容
echo "just test" >> test1.txt
echo `date` >> test1.txt
手动执行 test.sh 有可能会保找不到路径
你需要 重新设置下文件格式 用vim打开该sh文件,输入
set ff=unix
设置任务
# 设置任务
crontab -e
*/1 * * * * /home/test/test.sh
# 设置 文件权限
chmod 777 test.sh
cron表达式
cron表达式在线工具
https://tool.lu/crontab
Crontab不执行原因
时区的问题
# 设置时区
timedatectl set-timezone Asia/Shanghai
# Linux 修改时间和时区为上海时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 重启服务
/bin/systemctl restart crond.service
# 查看服务状态
service crond status