linux 执行sh_Linux系列 之 定时执行任务的方法

预计阅读时间:15分钟

可能在凌晨的某个时刻,可能是在某个非高峰时间点,需要任务在规定的时间点自动运行起来,有些任务应该以固定的间隔时间进行,有些只需要执行以一次。 本文会首先介绍一下不同场景下的自动执行任务的命令以及区别,此外会针对命令详细讲解使用方法和注意事项。

01

定时执行任务的命令

crontab命令和at命令都是可以执行定时任务的命令,下面对两者区别进行列举:

(1)特点
  • crontab:用于调度重复性任务

  • at:用于调度只执行一次的任务

(2)文件位置

  • crontab/var/spool/cron/crontabs

  • at:/var/spool/cron/atjobs

(3)控制访问的文件 
  • crontab/etc/cron.d/cron.allow 和 /etc/cron.d/cron.deny

  • at/etc/cron.d/at.deny

定时任务的命令是如何执行的? 答:cron 服务(守护进程)在系统后台运行,并且会持续地检查 /etc/crontab 文件和 /etc/cron.*/目录,同样也会检查 /var/spool/cron/ 目录。

02

crontab 命令

(1)简介:crontab 是用来安装、卸载或者列出定时任务列表的命令。

(2)建立定时任务的两种方式
  • 用户级:crontab -e

  • 系统级:vi /etc/ crontab

(3)系统级任务调度&用户级任务调度
  • 系统级任务调度主要完成系统的一些维护操作,用户级任务调度主要完成用户自定义的一些任务

  • 可以将用户级任务调度放到系统级任务调度来完成(不建议这么做),但是反过来却不行;

  • 如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个定时重启系统的任务也是无效

(4)crontab 语法
* * * * * 要执行的命令----------------| | | | || | | | ---- 周当中的某天 (0 - 7) (周日为 0 或 7)| | | ------ 月份 (1 - 12)| | -------- 一月当中的某天 (1 - 31)| ---------- 小时 (0 - 23)------------ 分钟 (0 - 59)

例如:

### 每隔 5 分钟运行一次 test 脚本 ##*/5 * * * * /root/test.sh
(5)常用方法
  • 列出crontab文件:crontab -l

  • 编辑crontab文件:crontab -e

  • 删除crontab文件:crontab -r

  • 删除某用户名下的定时任务,此命令需以 root 用户身份执行:crontab -r -u username

03

创建用户级定时任务示例

(1)任意位置输入crontab -e

(2)进入crontab的任务部署文档

(3)vim命令之后,shift+g跳转到最后一行,添加定时任务命令

例如:*/5 * * * * /root/test.sh

*/5 * * * * cd /root/test; ./test.sh >> test.log 2>&1

注:首先进入test所在路径,然后执行该路径下的test.sh脚本,最后通过> test.log输出日志。

(4)vim命令wq退出任务部署文档 (5)test.sh文件中,设置自己要执行的命令 (6)后台验证是否运行预设脚本

注:安装glances,命令行输入glances即可查看自己想要执行的命令行是否会运行

04

注意事项

4.1 创建了一个crontab,但是任务却无法自动执行,而手动执行没有问题原因:一般是由于crontab文件中没有配置环境变量引起的。

4.2 如何禁用邮件输出

(1)如果有内容输出的话,会默认发送到本地邮箱账户中,若想停止接收crontab发送的邮件,需要添加>/dev/null 2>&1这段内容到执行的命令的后面。

*/5 * * * * /root/test.sh >/dev/null 2>&1

(2)如果需要将输出内容发送到指定的邮件帐户,需要定一个变量:

MAILTO="vivek@nixcraft.in"*/5 * * * * /root/test.sh >/dev/null 2>&1
eeddeff4b30014d21646c3f0a8753f06.png 【微语】

记忆如果不整理,它的沉睡速度往往快的惊人。

—— 饶雪漫 离歌

eeddeff4b30014d21646c3f0a8753f06.png

文章推荐 Linux系列 之 curl命令 Linux系列 之 致命命令 Linux系列 之 进程监控 Linux系列 之 磁盘监控 Linux系列 之 网络监控

9a924544f8e40e30d57ff7e60290c482.gif

249022760413cb48db1f1aad3619a355.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值