Linux定时任务-crontab

简介:crontab:定时执行程序,实现脚本中的功能,crontab命令格式:crontab [-u user] [-l | -r | -e] [-i] [-s]

在做定时任务之前我们先来了解一下Linux的用户,用户组及crontab相关的知识。

  1. 首先购买Linux服务器时服务商都会要求设置root账号的密码,这个root就是Linux的超级用户,拥有所有可操作的权限,我们用root用户登录以后可以分配其他用户,还可以设置用户对某些文件的操作权限。
  2. 用户组就是给用户分组,其作用可想而知
  3. crontab是定时执行程序。在Linux中是通过etc/rc.d/init.d(Linux版本的不同服务所在的位置不一样)这个守护进程服务来实现计划任务

crontab命令格式:crontab [-u user] [-l | -r | -e] [-i] [-s]

参数作用:

-u 指定用户

-e 编辑当前用户的crontab

-l 查看当前用户下的定时任务

-r 删除当前用户下的定时任务

注意:-u 后面是用户名如root用户,没有指定用户时默认为当前登录用户,列如:crontab -l

例如:

1:显示 crontab 当前用户下的定时任务:crontab -l
2:编辑www用户的定时任务:crontab -u www -e
3:按 i 进入编辑模式内容如下:

以进程方式查看某个用户下的定时任务

ps  -ef|grep crond

定义crontab命令:

# 使用php-cli模式每1分钟执行一次脚本,并且把返回的内容添加到ceshi.log文件
*/1 * * * * /usr/local/php/bin/php /home/wwwroot/default/crontab/crontab.php >> /home/wwwroot/default/crontab/ceshi.log

# 使用wget定时每1分钟请求一次url,并且把返回的内容添加到ceshi.log文件
*/1 * * * * wget http://baidu.com >> /home/wwwroot/default/crontab/ceshi.log

crontab格式分析

crontab总共分为5位:: * * * * * ,每一位代表的意思是:分 时 日 月 星期 命令

位置 含义 合法值
第一位 分钟,第几分钟执行 0~59:表示第几分钟,*:表示每一分钟都要执行
第二位 小时,几点钟执行 0~23:表示第几个小时,*:表示每一小时
第三位 日,哪一日执行 01~31:表示第几日,*:表示每一天
第四位 月,即执行的月份 01~12:表示第几月,*:表示每个月
第五位 星期,星期几执行 0~6:星期几0表示星期日,*:每一天
第六位 执行的命令(一般都是编程语言) 例如:/usr/local/php/bin/php:安装的php环境,php的全路径
第七位 待执行的脚本(一般都是自己写的脚本代码) 例如:/home/wwwroot/default/crontab/crontab.php:要执行的脚本,可以通过 > 符号将脚本输出内容保存到某个日志文件中(这一步是可选操作)

crontab实操:

每日晚上凌晨3点到5点,每隔30分钟执行一次:

*/30 3-5 * * *

每30分钟执行一次任务:

 */30 * * * *

每日凌晨0点0分执行一次:

0 0 * * *

每个星期六的凌晨0点0分执行一次:

0 0 * * 6

启动crond服务:

systemctl restart crond.service
# 或者使用systemctl对应的service命令
service crond  restart

以日志方式查看定时任务是否有错误:可以查看 /var/log/下的cron文件

cat /var/log/cron

如果你看到这样类似的错误:ERROR chdir failed (/home/apache): No such file or directory

可能是你的权限问题,可以删除当前用户下的定时任务,使root用户去创建定时任务

有遗漏或者不对的可以在我的公众号留言哦

编程经验共享公众号二维码

编程经验共享公众号二维码
更多内容关注公众号
Copyright © 2021 编程经验共享 赣ICP备2021010401号-1