Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > crontab定时任务命令

关于crontab定时任务命令解读

作者:为什么要做囚徒

这篇文章主要介绍了关于crontab定时任务命令的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、crontab概述

因此,crontab 主要用于管理和维护定时任务的配置信息,而 cron 则负责实际执行这些定时任务。

需要注意的是,在某些 Linux 发行版中,cron 和 crontab 可能被打包成同一个软件包,并且往往默认安装在系统中。

因此,在使用 crontab 命令之前,建议先确认系统是否安装了 cron 服务。

总之,cron 和 crontab 都是用于管理和维护定时任务的重要工具和服务,它们的作用互补且不可替代。

二、crontab安装

yum install cronie

三、crontab常用操作命令

1.启动、关闭以及状态查看

# 状态查看
systemctl status crond
# 启动
systemctl start crond
# 关闭
systemctl stop crond
# 重启
systemctl restart crond

2.列出当前用户的所有定时任务

crontab -l

3.编辑当前用户的定时任务

crontab -e

运行上述命令后,会打开一个文本编辑器,可以在其中输入要执行的命令和时间规则。

格式如下:

* * * * * command

其中,五个星号分别表示分钟、小时、日、月、周几,command 表示要执行的命令或脚本文件路径。

例如,以下是每天凌晨 3 点执行 /backup.sh 脚本的定时任务配置:

0 3 * * * /backup.sh

4.删除当前用户的所有定时任务

crontab -r

5.查看帮助信息

crontab -h

需要注意的是,crontab 命令只适用于当前用户。

如果需要编辑其他用户的定时任务,需要使用 root 权限。

可以使用以下命令来切换到 root 用户,并编辑指定用户的定时任务:

su -
crontab -u username -e

其中,username 表示要编辑定时任务的用户名。

总之,在 CentOS 中,可以使用 crontab 命令来添加、修改和删除定时任务。

可以使用 crontab -e 命令编辑当前用户的定时任务,crontab -u username -e 命令编辑其他用户的定时任务,并且可以使用 crontab -l 和 crontab -r 命令查看当前用户的定时任务列表和删除所有定时任务。

四、添加定时任务

在 Linux 系统中,可以使用两种方法来新增调度任务:

1. 使用 crontab -e 命令

可以使用 crontab 命令来添加、编辑和删除当前用户的定时任务。具体步骤如下:

需要注意的是,crontab 命令只能用于当前登录用户的定时任务管理。

2. 直接编辑 /etc/crontab 文件

可以直接编辑 /etc/crontab 文件来新增系统级别的定时任务。具体步骤如下:

需要注意的是,直接编辑 /etc/crontab 文件新增的定时任务是针对系统级别的,可以被所有用户共享。同时,如果需要修改或删除该任务,也需要使用 root 权限进行操作。

无论是使用 crontab 命令还是直接编辑 /etc/crontab 文件,都需要设置正确的时间规则和要执行的命令。同时,还需要注意文件的格式和编码方式,避免出现语法错误或者乱码等问题。

以上两种方式都无需重启或加载,直接生效

注意:当程序在你所指定的时间执行后,系统会发一封邮件给当前的用户,显示该程序执行的内容,若是你不希望收到这样的邮件,请在每一行空一格之后加上 > /dev/null 2>&1 即可,如:

`* * * * * root echo "hello world" >> /home/tmp.txt > /dev/null 2>&1`

五、时间格式详解

# 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

时间格式如下:

t1 t2 t3 t4 t5 program

其中 t1 是表示分钟,t2 表示小时,t3 表示一个月份中的第几日,t4 表示月份,t5 表示一个星期中的第几天。program 表示要执行的程序。

示例如下:

// 每月最后一天定时执行一次
0 0 L * *

// 每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "hello world":
20 0-23/2 * * * echo "hello world"

六、使用异常记录

1./etc/crontab方式添加的定时任务不执行

# 不执行
* * * * * echo "hello world" >> /home/tmp.txt;
# 执行  必须指定用户
* * * * * root echo "hello world" >> /home/tmp.txt;

2.如果我们使用 crontab 来定时执行脚本,无法执行,但是如果直接通过命令(如:./test.sh)又可以正常执行,这主要是因为无法读取环境变量的原因。

#!/bin/sh

. /etc/profile
. ~/.bash_profile
20 03 * * * . /etc/profile;/bin/sh /var/www/runoob/test.sh

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文