Loading
0

linux/centos下crontab 任务计划详细参数及自动执行某任务的方法

亲爱的:若该文章解决了您的问题,可否收藏+评论+分享呢?
前言:crontab 是linux系统下的计划任务服务,本文章将详细介绍 crontab 任务计划的使用方法和参数,比如如何如何通过 crontab 任务计划在某时间段执行某脚本等操作。
说明: crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。其中
  1. cron是服务名称;
  1. crond是后台进程;
  1. crontab是计划任务表;

安装

yum install crontabs

服务命令

/sbin/service crond start        启动服务

/sbin/service crond stop         关闭服务

/sbin/service crond restart      重启服务

/sbin/service crond reload       重新载入配置

/sbin/service crond status       服务是否运行

crontab 配置文件基本格式

关于 crontab 设定时间的具体配置请自行搜索,这里不做详细说明
命令写法:分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列 表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

# Use the hash sign to prefix a comment
# +—————- 分钟1~59 每分钟用或者 */1表示
# | +————- 小时1~23(0表示0点)
# | | +———- 日期1~31
# | | | +——- 表示月份1~12
# | | | | +—- 星期0~6(0表示星期天)
# | | | | | +—-要运行的命令
# * * * * * command to be executed

使用

      这里我把脚本都放到了 /home/blog.tag.gg 目录下。我们以这个目录讲解

1. 创建一个 test.sh 文件#

# test.sh 文件内容
echo "Hello blog.tag.gg"

2. 给 test.sh 脚本授权#

# 赋予 test.sh 可执行权限
chmod +x test.sh

3. 创建cron脚本文件,命名为crontest.cron(文件名称可以自定义)

# crontest.cron 文件内容
# 每小时运行一遍 test.sh 脚本, 这里 test.sh 是第一步创建的 shell 脚本,我们把想要执行的命令都写到这个脚本里
0 * * * * /home/blog.tag.gg/test.sh
# --这里命令可以写多个--
# 每天 0 点 0 分 执行 test1.sh 脚本
0 0 * * * /home/blog.tag.gg/test1.sh

4. 添加/更新 定时任务。执行命令

crontab crontest.cron

至此操作完成。

日志#

查看日志

cron 的日志目录为: /var/log/cron , 我们可以调用 tail -f /var/log/cron 查看实时日志,也可以调用 tail -n 50 /var/log/cron 查看历史日志

输出 shell 脚本日志

有时候我们想要把执行脚本的日志存储到文件中,我们可以这样写

# 这里需要特别注意 2>&1 是写到后面的。
* * * * * /home/blog.tag.gg/test.sh >> /home/blog.tag.gg/log.log 2>&1

查看定时任务是否成功

方法一

crontab -l

方法二

检测/var/spool/cron下是否生成对应cron脚本

设置秒级别的任务
crontab最小时间单位是分,如果需要在秒级设置定时任务,可以使用sleep延时
如果需要每 10 秒执行一次任务,那么一分钟就需要执行 6 次, 我们每分钟同时执行 6 个 crontab 任务,即:
第一个任务 0 秒执行,第二个任务延时 10 秒执行,第三个任务延时 20 秒执行以此类推,得到

温馨提示#

提示1 环境变量问题#

crond 的任务计划并不会调用用户设置的环境变量,它有自己的环境变量
当你用到一些命令时,比如 curl / sh 等需要环境变量的命令,手工执行脚本时是正常的,但用 crond 执行的时候就会有问题
这里有两种解决办法:
1、使用命令的绝对路径,例如: /usr/bin/curl
2、将环境变量添加到 /etc/crontab 中。/etc/crontab 是cront的配置文件
提示2 多命令处理#

ceontab中不方便执行语句繁多的任务,推荐将多条命令写到shell脚本或 python 脚本中进行执行

提示3 脚本路径问题#

ceontab 中添加的 command 运行脚本必须是全路径命令。不然会找不到脚本

后记#

crontab 命令很重要,也后有用

声明:站长码字很辛苦啊,转载时请保留本声明及附带文章链接:https://blog.tag.gg/showinfo-3-35962-0.html
亲爱的:若该文章解决了您的问题,可否收藏+评论+分享呢?

最后编辑于:2021-04-19 15:45:22作者:

上一篇:Linux下screen管理远程回话命令的详细使用方法
下一篇:Linux系统安装安装pcre的两种方法