Linux shell(06)计划任务

计划任务

在工作中,很多脚本是要到凌晨才运行,或者需要反复不断运行,这时就需要程序定时调起执行,这种我们就叫计划任务。

  • 一次性计划任务 at
  • 周期性计划任务
  • 计划任务加锁 flock

一次性计划任务

计划任务:让计算机在指定的时间运行程序

date

at 18.31   // 18.31分执行
# 计划任务是没有终端的,不能进行标准输出,输出要加重定向指定对应的文件
# 执行的命令很有可能没有命令搜索路径,执行计划任务的时候,如果不是内部命令的话,建议加上命令的完整路径;如果是shell脚本的话,记得用source引入环境变量
echo hello > /tmp/hello.txt  // ctrl+d 提交计划任务

atq // 查询一次性计划任务还没有被执行的

周期性计划任务

  • cron
    • crontab -e 编辑周期性计划任务
    • crontab -l 查看周期性计划任务
    • 配置格式
      • 分钟 小时 日期 月份 星期 执行的命令
      • 注意命令的路径问题
#!/bin/bash
crontab -e

# which date  /usr/bin/date
* * * * * /usr/bin/date >> /tmp/date.txt  // 每分钟运行一次,因为最小单位是分钟

vim /var/log/cron // 计划任务日志

* * * * 1,5 /usr/bin/date >> /tmp/date.txt // 周一和周五,每分钟执行一次

* * * * 1-5 /usr/bin/date >> /tmp/date.txt // 周一到周五,每分钟执行一次

* * 7 7 1-5 /usr/bin/date >> /tmp/date.txt // 7月7日,如果这一天是周一至周五,每min执行一次

15 18 7 7 1-5 /usr/bin/date >> /tmp/date.txt // 7月7日18:15,如果这一天是周一至周五,每min执行一次

30 3 * * 1 /usr/bin/date >> /tmp/date.txt   // 周一的3:30

30 3 15 * * /usr/bin/date >> /tmp/date.txt // 每月15日的3:30

0 3 15 * * // 每月15号的3点整(要写成0,写成*会运行60次)
使用crontab -e的时候,每个用户会有自己的计划任务,保存在/var/spool/cron/目录下(ls /var/spool/cron/)

计划任务加锁

如果计算机不能按照预期时间执行。

  • anacontab 延时计划任务 (如果计划任务是3:00,2:30关机了,3:30又开机了。延时计划任务可以在开机后延后运行。)
  • flock 锁文件 (一个备份脚本正在备份,还没完成的时候又一个备份脚本执行了,可能破坏备份的完整性)
vim a.sh
sleep 10000
flock -xn "/tmp/f.lock"  -c "/root/a.sh"  // -x 排它锁,可以应用到备份脚本,防止多实例运行
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值