Linux学习之延时计划任务anacontab和锁文件flock

cat /etc/redhat-release看到操作系统的版本是CentOS Linux release 7.6.1810 (Core)uname -r可以看到内核版本是3.10.0-957.21.3.el7.x86_64
在这里插入图片描述
参考的博客有:
1.《Linux anacron命令用法详解》
2.《详解anacron 命令》
3.《Anacron的用法》
4.《shell脚本实现文件锁功能》
5.《 shell案例解决之flock示例》

anacron

anacron的设计目标是处理可能不会持续运行的系统上的任务,一些在/etc/crontab里的定时任务因为一些情况(比如关机)而错过定时执行的时刻,那么这些任务就有可能以后再执行,而为了避免因这些特殊情况引发的定时任务执行次数减少,可以将这个任务放在/etc/anacrontab里。在开机启动时候能够自动延时执行,或者使用anacron -s手动触发。
/etc/anacrontabanacron的配置文件,格式如下:

period   delay   job-identifier   command

period:任务执行的时间间隔,可以是 daily(每日)、weekly(每周)或 monthly(每月)。
delay:任务启动前的延迟时间(以分钟为单位)。这可以防止系统刚刚启动时就执行任务。
job-identifier:任务的唯一标识符,用于确保每个任务只运行一次。
command:要执行的实际命令或脚本。

我的系统里边,/etc/anacrontab里边默认内容如下:

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly

START_H0URS_RANGE:表示延时任务只能在这段时间内执行
RANDOM_DELAY:最大随机廷迟,会在0~RANDOM_DELAY之间生成一个随机值(这里使用ranDelay,这里是我自己随意起的一个名字),然后就是ranDelay+delay之后执行程序。
1 5 cron.daily nice run-parts /etc/cron.daily就表示每天在START_HOURS_RANGE(在此处是3点至22点之间),间隔开机ranDelay+5分钟之后执行程序。

/etc/cron.d/0hourly记录每小时的计划任务,可以看出里边默认有一条语句:01 * * * * root run-parts /etc/cron.hourly。这条语句就是说明了每小时第1分钟以/etc/cron.hourly中脚本执行任务

flock

A终端执行flock -xn "/tmp/txt.lock" -c "/shelllearn/flocktest.sh"使用/tmp/txt.lock来让/shelllearn/flocktest.sh只有一个实例
在这里插入图片描述

然后在B终端再次flock -xn "/tmp/txt.lock" -c "/shelllearn/flocktest.sh",发现立马就退出了,这表明锁文件还没有被释放。
在这里插入图片描述

此文章为8月Day 3学习笔记,内容来源于极客时间《Linux 实战技能 100 讲》。

你可能感兴趣的:(Linux基础学习,linux,学习,chrome)