Linux 定时任务管理

这篇笔记主要记录一些常见的Linux定时任务

一、定期任务

crontab

最小粒度,1分钟

守护进程 crond

每分钟扫描一次下列文件
    /var/spool/cron/*  命令生成
    /etc/crontab       文本文件
    /etc/cron.d/*      自定义的定时任务

任务格式:分 时 日 月 周

编辑方式

    1、crontab 命令
    2、/etc/crontab 文件
    3、/etc/cron.d/* 文件

限制文件

    /etc/cron.allow  在文件中的可以使用crontab

    /etc/cron.deny   不在文件中的用户可以使用crontab (默认存在空文件)

    /etc/security/access.conf

运行方式

    1、crontab创建工作

    2、系统会将工作以文本格式写入 /var/spool/cron/

    3、创建用户名的定时文件

    4、等待crond执行,观察日志输出

输出日志

/var/log/cron

配置方式

1、命令配置 常用
设置:crontab [-u username] [-l|-e|-r]-u 指定用户,不添加就是当前用户-l 列出crontab列表,默认当前用户-e 编辑crontab-r 移除所有的定时任务,建议编辑处理
内容格式:0 12 * * * mail -s "at 12:00" test_user < /home/test_user/.bashrc分 时 日 月 周 |<==============指令串========================>|特殊字符:* 任意时刻* 任意时刻, 多个值 0 3,6 * * * command 每天3点整和6点整都执行- 一段时间20 8-12 * * * command 每天8:20-12:20 ,执行4次/ 每隔多久*/5 * * * * command 每隔5分钟执行一次
案例:crontab -e进入vi界面,输入i,写入如下内容,按esc,输入q退出0 12 * * * mail -s "at 12:00" test_user < /home/test_user/.bashrc
2、编辑/etc/crontab 较少用

注意:编辑/etc/crontab可能是写入到内存的,需要重启crond服务才会生效

编辑内容:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root# For details see man 4 crontabs# 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
0 12 * * * root echo `date` > /tmp/abc 

重启crond服务

3、编辑其他目录 一般不用

注意:放在下列目录下的文件必须是可执行文件!

/etc/cron.d/      /etc/cron.daily/  /etc/cron.hourly/  /etc/cron.monthly//etc/cron.weekly/

注意事项

    1、日月和周不能同时存在

    2、编辑/etc/crontab可以指定谁接受结果邮件

    3、crond日志在/var/log/cron

    4、用户密码过期,定时任务将会执行失败

    5、定时任务如果有大量输出,需要将结果重定向,可能会出现sendmail的僵尸进程


anacron

用于检测系统未进行的crond任务,没仔细研究过

实现原理

crontd每小时执行一次 anacron 程序,anacron 会读取时间戳,对比上次记录的 anacron 执行时间,如果时间有差异,代表存在未执行的任务,然后会执行未执行的任务

配置文件

放置在/etc/cron.hourly/0anacron

执行流程

  1. 由 /etc/anacrontab 分析到 cron.daily 这项工作名称的天数为 1 天
  2. 由 /var/spool/anacron/cron.daily 取出最近一次执行 anacron 的时间戳
  3. 由上个步骤与目前的时间比较,若差异天数为 1 天以上 (含 1 天),就准备进行指令
  4. 若准备进行指令,根据 /etc/anacrontab 的设定,将延迟 5 分钟 + 3 小时,看 START_HOURS_RANGE 的设定
  5. 延迟时间过后,开始执行后续指令,即 run-parts /etc/cron.daily 这串指令
  6. 执行完毕后, anacron 程序结束

这个是个开机自启的程序,会影响开机速度,如果长时间关机,在开机机后一个小时CPU会忙碌,因为anacron会执行未执行的定时任务


二、定时任务

at

可以在指定时间执行,不过平时用的少,一般crond就能满足绝大多数的需求了

守护进程 atd

运行方式

  1.  at 指令产生要运行的工作
  2.  将工作以文本格式写入/var/spool/at/ 目录内
  3. 等待atd服务执行

限制文件

  • /etc/at.allow 只有在文件中的用户可以使用at
  • /etc/at.deny  不在文件中的用户可以使用at  (默认存在空文件)
  • 都没有,就只有root能执行at
  • 上述情况一般不会同时存在

使用方式

1、设置
at [-mldv] Time-m 结束后以邮件方式通知-l 等价于atq,列出当前系统上该用户的at列表-d 等价于atrm,取消一个at列表中的工作-v 列出at列表,显示较详细-c 列出某个工作的实例指定内容时间格式:HH:MM   04:00   今天的4点执行,如果已经过了,就明天4点执行HH:MM YYYY-MM-DD 04:00 2015-07-30  指定某一时刻执行HH:MM[am|pm] [Month] [Date]  04pm July 30  指定某一时刻执行H:MM[am|pm] + number [minutes|hours|days|weeks] now + 5 minutes  五分钟后执行04pm + 3 days    三天后的下午四点执行注意:单位后面要带s,命令最好使用绝对路径 *

2、查看

at -c 工作号码
at -l 任务清单
3、工作目录

at 会将下达命令的目录作为工作目录,所以命令和文件都要写绝对路径,以防万一

4、输出结果

at 的执行与终端机环境无关,所有输出结果发送到mailbox

如果执行的命令没有输出,就不会发送邮件,可以使用-m强制发送邮件

5、案例
编辑:at now + 5 minutesat> /bin/mail -s "testing at job" root < /root/.bashrcat> /bin/syncat>  <EOT> 按Ctrl+d 结束输入job 1 at Fri Oct 27 00:26:00 2023
查看:at -c 2 查看工作内容atq 查看工作列表
取消:at -d 2或者atrm 2
6、其他
man at
NAMEat, batch, atq, atrm - 排队、检查或删除以后要执行的作业。总览at [-V] [-q 队列] [-f 文件] [-mldbv] 时间 at -c 作业 [作业...]  atq [-V] [-q 队列] [-v]atrm [-V] 作业 [作业...]batch [-V] [-q 队列] [-f 文件] [-mv] [时间]描述at 和 batch 从标准输入或一个指定的文件读取命令,这些命令在以后某个时间用 /bin/sh 执行。at      在指定的时间执行命令。atq     列出用户的等待执行的作业;在用户是超级用户的情况下,列出所有人的作业。atrm    删除作业。batch   在系统负载水平允许的时候执行命令;换句话说,当平均负载降到低于0.8,或降到了在  atrun  文件中指定的期望值时运行。  译注:atrun文件参见 atd 手册页。

三、空闲时任务

batch

用来在系统空闲时执行的任务,平时基本没在用,没怎么了解太深

工作时间

在CPU负载低于0.8时,进行下达的命令

使用方式

batch
at>/usr/bin/updatedb
at><EOT>    # ctrl+d
job 2 at Fri Oct 27 00:30:00 2023

管理软件

通过使用可以看出与at的管理方式相同,atq,atrm管理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/604348.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【软考中级-软件设计师】day3:程序设计语言基础知识

概述 练习题 程序设计语言的基本成分 练习题 编译程序基本原理 名词解释 词法分析 词法分析&#xff08;英语&#xff1a;lexical analysis&#xff09;是计算机科学中将字符序列转换为单词&#xff08;Token&#xff09;序列的过程。进行词法分析的程序或者函数叫作…

鸿蒙开发基础运用(ArkTS)-健康生活APP

健康生活应用&#xff0c;主要功能包括&#xff1a; 用户可以创建最多6个健康生活任务&#xff08;早起&#xff0c;喝水&#xff0c;吃苹果&#xff0c;每日微笑&#xff0c;刷牙&#xff0c;早睡&#xff09;&#xff0c;并设置任务目标、是否开启提醒、提醒时间、每周任务频…

迟到的总结:回望 2023 年,期盼 2024 新机会、新挑战

&#x1f52d; 嗨&#xff0c;您好 &#x1f44b; 我是 vnjohn&#xff0c;在互联网企业担任 Java 开发&#xff0c;CSDN 优质创作者 &#x1f4d6; 推荐专栏&#xff1a;Spring、MySQL、Nacos、RocketMQ&#xff0c;后续其他专栏会持续优化更新迭代 &#x1f332;文章所在专栏…

航空公司管理系统(迷你版12306)

要求 今天分享一个之前辅导留学生的作业&#xff0c;作业要求如下&#xff1a; Project E: Airways Management System Overall description: Your team is employed by an Airways company for the implementation of a computer system responsible for a large part of th…

Python从入门到网络爬虫(异常处理详解)

前言 异常即是一个事件&#xff0c;该事件会在程序执行过程中发生&#xff0c;影响了程序的正常执行。一般情况下&#xff0c;在python无法正常处理程序时就会发生一个异常。异常是python对象&#xff0c;表示一个错误。当python脚本发生异常时我们需要捕获处理它&#xff0c;…

Python 全栈体系【四阶】(十一)

第四章 机器学习 机器学习&#xff1a; 传统的机器学习&#xff1a;以算法为核心深度学习&#xff1a;以数据和计算为核心 感知机 perceptron&#xff08;人工神经元&#xff09; 可以做简单的分类任务掀起了第一波 AI 浪潮 感知机不能解决线性不可分问题&#xff0c;浪潮…

Linux下Docker Engine安装后的一些配置步骤

一些安装后的配置令Linux主机可以更好地与Docker配合使用。 0x01 以非root用户身份管理Docker Docker守护进程绑定到Unix套接字&#xff0c;而不是TCP端口。默认情况下,root用户拥有Unix套接字&#xff0c;而其他用户只能使用 sudo. Docker守护进程始终以root用户身份运行。 …

Git提交代码发生冲突的场景与解决方案

问题 当我们在使用 Git 向远程仓库提交代码时&#xff0c;可能会遇到如下所述的错误提示&#xff1a; To https://github.com/xxxxx/gitmerge.git! [rejected] master -> master (fetch first) error: failed to push some refs to https://github.com/xxxxx/gitme…

jax.random.PRNGKey创建伪随机数生成器密钥

jax.random.PRNGKey 是 JAX 库中用于创建伪随机数生成器密钥&#xff08;PRNG key&#xff09;的函数。 PRNG key 是 JAX 中用于生成伪随机数序列的关键要素&#xff0c;通过分割&#xff08;splitting&#xff09;可以生成新的 PRNG key&#xff0c;确保生成的随机数序列是不相…

操作系统丨单元测试

文章目录 单元测试选择题填空题单元测试 选择题 【单选题】可以实现虚拟存储器的方案是(D)。 A. 固定分区方式 B. 可变分区方式 C. 纯分页方式 D. 请求页式 【单选题】文件系统中文件存储空间的分配是以(D)为基本单位进行的。 A. 字 B. 字节 C. 文件 D. 块 【单选题】哪种…

Vue2:脚手架Vue-CLI的使用

一、环境准备 vue脚手架&#xff08;vue-CLI&#xff09;的使用是基于nodejs环境下的。 你可以简单理解为&#xff0c;Java项目需要再jvm虚拟机上才能编译运行 nodejs的作用就是将vue文件编译成html、css、js代码文件。 如何安装nodejs 参考&#xff1a;https://blog.csdn.net…

ARMv8-AArch64 的异常处理模型详解之异常等级、执行状态以及安全状态

ARMv8-AArch64 的异常处理模型详解 一&#xff0c;特权和异常等级1.1 异常等级 Exception levels 二&#xff0c;特权的类型2.1 内存特权2.2 访问寄存器的特权 三&#xff0c;执行状态和安全状态3.1 执行状态 Execution states3.2 执行状态切换 3.3 安全状态 Security states3.…

第16课 播放rtsp流

在现实生活中有许多rtsp摄像头&#xff0c;这些摄像头如果能充分利用起来可以生成很多有趣、有用的应用&#xff1a;比如户外互动大屏等。在第4课&#xff0c;我们实现了一个播放器&#xff0c;当时来用它播放rtmp流和mp4时它好象工作的很好。这节课我们就用它来播放rtsp流试试…

二进制介绍

十进制转相应进制 (十进制)231 转 八进制 除八取余法 从下而上取余 231/828 ....7 28/83.......4 3/80........3 (十进制)231(八进制)0o347 (十进制)231 转 16进制 除十六取余法 从下而上取余 231/1614......7 14/160..........14 (十进制) 231(十六进制)0xe7 (十进制)231.3 转…

[EFI]Thinkpad L380 Yoga电脑 Hackintosh 黑苹果efi引导文件

硬件型号驱动情况主板 Thinkpad L380 Yoga 处理器 1.7 GHz Intel Core i5-8250U Quad-Core 已驱动内存16GB DDR 4 2400mhz已驱动硬盘m.2 nvme 256gb Kingston NV2已驱动显卡Integrated Intel UHD Graphics 620已驱动声卡暂无详细信息已驱动网卡以太网控制器 i225-LM已驱动无线网…

C++动态内存分配(动态内存分配函数)栈区

内存拷贝函数&#xff1a; void *memcpy(void *dest,const void *src,size_tn);#include<string.h>功能&#xff1a;从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest内存地址的起始位置 分配内存使用new 例如&#xff1a;salarynew int[num]; 最后需要释放…

Linux文件操作命令(touch、cat、more、cp、mv、rm)

之前我们学习了对目录&#xff08;即文件夹的操作&#xff0c;那么现在我们来一起看一下怎么操作文件吧&#xff09; 1.touch命令 功能&#xff1a;创建文件 语法&#xff1a;touch 参数 参数&#xff1a;被创建的文件路径 注意&#xff1a;touch命令无选项&#xff0c;参…

(二)C++新手入门必知

C只是一门语言 通常说的学习C仅仅是学习C这门语言本身&#xff0c;网上有很多的教程&#xff0c;也有很多的书籍都是在介绍C语言&#xff0c;C语法以及一些使用C实现的算法。C 语法应该是现在高级语言中最复杂的&#xff0c;特别是C11 之后加入了很多的新特性。其他的高级语言…

【Docker-Dev】Mac M2 搭建docker的redis环境

Redis的dev环境docker搭建 1、前言2、官方文档重点信息提取2.1、创建redis实例2.2、使用自己的redis.conf文件。 3、单机版redis搭建4、redis集群版4.1、一些验证4.2、一些问题 结语 1、前言 本文主要针对M2下&#xff0c;相应进行开发环境搭建&#xff0c;然后做一个文档记录…

面试算法88:爬楼梯的最少成本

题目 一个数组cost的所有数字都是正数&#xff0c;它的第i个数字表示在一个楼梯的第i级台阶往上爬的成本&#xff0c;在支付了成本cost[i]之后可以从第i级台阶往上爬1级或2级。假设台阶至少有2级&#xff0c;既可以从第0级台阶出发&#xff0c;也可以从第1级台阶出发&#xff…