例行性工作(at,crontab)

目录

单一执行的例行性工作at

语法

选项

时间格式

at的工作文件存放目录

at工作的日志文件

实例

命令总结:

循环执行的例行性工作crond

语法

选项

crontab工作调度对应的系统服务

crontab工作的日志文件

用户定义计划任务的文件所在目录

动态查看

crontab文件格式

文件中的特殊字符

crond服务

查看crontab服务状态

手动启动crontab服务

实例

可唤醒停机期间的工作任务


单一执行的例行性工作at

单一执行的例行性工作:仅处理执行一次就结束了

语法

at [-V] [-q 队列] [-f 文件] [-mldbv] 时间 at -c 作业 [作业...]

选项

-m 当任务完成之后,即使没有标准输出,将给用户发送邮件

-l atq的别名,可列出目前系统上面的所有该用户的at调度

-d atrm的别名,可以取消一个在at调度中的工作

-v 使用较明显的时间格式,列出at调度中的任务列表

-c 可以列出后面接的该项工作的实际命令内容(脚本)== cat /var/spool/at/xxxxxxx

-f 从文件中读取作作业

时间格式

HH:MM  在今天的HH小时MM分钟执行,如果今天的这个时间点已经过了,则明

天执行

HH:MM YYYY-MM-DD  强制规定在某年某月的某一天的特殊时刻进行该工作

now + 2 minutes 从现在开始几分钟minutes, hours, days, or weeks

at命令 用于在指定时间执行命令。at允许使用一套相当复杂的指定时间的方法。它能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。当然也能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的 词语来指定时间。用户还能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。 也能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。指定的日期必须跟在指定时间的后面。

上面介绍的都是绝对计时法,其实还能够使用相对计时法,这对于安排不久就要执行的命令是很有好处的。指定格式为:now + count time-units,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,究竟是几天,还是几小时,等等。 更有一种计时方法就是直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。

/etc/at.allow,写在该文件的用户可以使用at命令

/etc/at.deny,黑名单

两个文件如果都不存在,只有root能使用

#at工作调度对应的系统服务

[root@localhost ~]# systemctl status atd ---必须写成程序名 或者 ps -ef | grep at

at的工作文件存放目录

[root@localhost ~]# ll  /var/spool/at

创建的at任务目录也能在/var/spool/at 目录下能找到这么一个脚本文件

at工作的日志文件

[root@localhost ~]# ll /var/log/cron

实例

三天后的下午 5 点钟执行/bin/ls

[root@localhost ~]# at 5pm+3 days
at> /bin/ls
at> <EOT>
job 7 at 2024-01-08 17:00

明天17点钟,输出时间到指定文件内:

[root@localhost ~]# at 17:20 tomorrow
at> date >/root/2024.log
at> <EOT>
job 8 at 2024-01-06 17:20

计划任务设定后,在没有执行之前我们可以用atq命令来查看系统没有执行工作任务:

[root@localhost ~]# atq
8       2013-01-06 17:20 a root
7       2013-01-08 17:00 a root

删除已经设置的任务:

[root@localhost ~]# atq
8       2013-01-06 17:20 a root
7       2013-01-08 17:00 a root[root@localhost ~]# atrm 7
[root@localhost ~]# atq
8       2013-01-06 17:20 a root

显示已经设置的任务内容:

[root@localhost ~]# at -c 8
#!/bin/sh
# atrun uid=0 gid=0
# mail     root 0
umask 22此处省略n个字符
date >/root/2013.log

#定义三分钟之后显示hello

[root@server ~]# at now + 3 minutes

-l atq的别名,可列出目前系统上面的所有该用户的at调度,查看系统任务

命令总结:

循环执行的例行性工作crond

循环执行的例行性工作:每隔一定的周期就需要执行一次

语法

crontab(选项)(参数)

选项

-e:编辑该用户的计时器设置;

-l:列出该用户的计时器设置;

-r:删除该用户的计时器设置;

-u<用户名称>:指定要设定计时器的用户名称。

crontab的工作过程

/etc/cron.allow,写在该文件的人可以使用at命令

/etc/cron.deny,黑名单

两个文件如果都不存在,只有root能使用此处提一下PATH与windows上的也是原理在path里面计算机会自动扫描这里的文件,比如说一些可执行文件touch 命令的就放在这个目录下所以可以不使用绝对路径直接使用他

crontab工作调度对应的系统服务

[root@localhost ~]# systemctl status crond

crontab工作的日志文件

[root@localhost ~]# ll /var/log/cron

用户定义计划任务的文件所在目录

[root@localhost ~]# ll /var/spool/cron/

动态查看

[root@localhost ~]# tail -f /var/log/cron

补充说明

crontab命令 被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

参数

crontab文件:指定包含待执行任务的crontab文件。

知识扩展

Linux下的任务调度分为两类: 系统任务调度 和 用户任务调度 。

系统任务调度: 系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

/etc/crontab文件包括下面几行:

#run-parts ---此处的功能为将脚本每个小时、每天、每周、每个月运行一次

SHELL=/bin/bash
PATH=
/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=
""HOME=/

# run-parts

5 1* * * * root run-parts /etc/cron.hourly
2 4 7 * * * root run-parts /etc/cron.daily
2 2 4* * 0root run-parts /etc/cron.weekly
4 2 4 1* * root run-parts /etc/cron.monthly

前四行是用来配置crond任务运行的环境变量,第一行SHELL变量指定了系统要使用哪个shell,这里是bash,第二行PATH变量指定了系统执行命令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户,第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。

用户任务调度: 用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在/var/spool/cron目录中。其文件名与用户名一致,使用者权限文件如下:

/etc/cron.deny     该文件中所列用户不允许使用crontab命令
/etc/cron.allow    该文件中所列用户允许使用crontab命令
/var/spool/cron/所有用户crontab文件存放的目录,以用户名命名

 

crontab文件的含义:用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,

crontab文件格式

Minute hour day month week   command(命令)     顺序:分 时 日 月 周

其中:

  • minute: 表示分钟,可以是从0到59之间的任何整数。
  • hour:表示小时,可以是从0到23之间的任何整数。
  • day:表示日期,可以是从1到31之间的任何整数。
  • month:表示月份,可以是从1到12之间的任何整数。
  • week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
  • command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

文件中的特殊字符

  • 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
  • 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
  • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
  • 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

注:%在crontab里面有特殊含义,如果有命令里面需要使用%,需要使用\转义。

crond服务

/sbin/service crond start    # 启动服务

/sbin/service crond stop     # 关闭服务

/sbin/service crond restart  # 重启服务

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

查看crontab服务状态:

service crond status

手动启动crontab服务:

service crond start

实例

每1分钟执行一次command

* * * *  command

每小时的第3和第15分钟执行

3,15 * * * * command

在上午8点到11点的第3和第15分钟执行

3,158-11* * * command

每隔两天的上午8点到11点的第3和第15分钟执行

3,15 8-11 */* * command

每个星期一的上午8点到11点的第3和第15分钟执行

3,15 8-11 * * command

每晚的21:30重启smb 

30 21 * * * /etc/init.d/smb restart

每月1、10、22日的4 : 45重启smb 

45 41,10,22 * * /etc/init.d/smb restart

每周六、周日的1:10重启smb

10 * * 6,/etc/init.d/smb restart

每天18 : 00至23 : 00之间每隔30分钟重启smb 

0,30 18-23 * * *  /etc/init.d/smb restart

每星期六的晚上11:00 pm重启smb 

0 23 * * 6/etc/init.d/smb restart

每一小时重启smb 

* */1 * * * /etc/init.d/smb restart

晚上11点到早上7点之间,每隔一小时重启smb

* 23-7/1 * * * /etc/init.d/smb restart

每月的4号与每周一到周三的11点重启smb 

0 114* mon-wed /etc/init.d/smb restart

一月一号的4点重启smb

0 411 * /etc/init.d/smb restart

每小时执行/etc/cron.hourly目录内的脚本

0 1 * * * *  root run-parts /etc/cron.hourly

每次执行任务时都会将日志文件存到 /var/log/cron 下面

动态查看crontab的任务情况

tail -f /var/log/cron

可唤醒停机期间的工作任务

anacron 可以处理关机状态时未执行的计划任务,anacron不能指定何时执行某项任务,而是以天为单位或是在开机后立刻进入anacron的操作(`/etc/anacrontab`)。它会去检测停机期间应该进行但是并没有进行的crontab任务,并将该任务执行一遍,然后anacron就会自动停止了

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

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

相关文章

尤雨溪:Vue 未来展望新的一轮

十年&#xff0c;一个既漫长又短暂的时光跨度&#xff0c;对于技术世界来说&#xff0c;更是沧海桑田的瞬间。在这十年里&#xff0c;Vue.js 从无到有&#xff0c;从默默无闻到蜚声全球&#xff0c;不仅改变了前端开发的面貌&#xff0c;更成为了无数开发者手中的得力工具。 在…

【RT-DETR有效改进】全新的SOATA轻量化下采样操作ADown(轻量又涨点,附手撕结构图)

一、本文介绍 本文给大家带来的改进机制是利用2024/02/21号最新发布的YOLOv9其中提出的ADown模块来改进我们的Conv模块,其中YOLOv9针对于这个模块并没有介绍,只是在其项目文件中用到了,我将其整理出来用于我们的RT-DETR的项目,经过实验我发现该卷积模块(作为下采样模块)…

多路归并总结

1.鱼塘钓鱼 1262. 鱼塘钓鱼 - AcWing题库 多路归并的模型。 对于每个鱼塘构成的等差数列&#xff0c;我们每次在数列最头部进行选择&#xff0c;选完后再顺延到下一个数即可。我们可以通过维护一个包含所有等差序列首元素的大根堆&#xff0c;使每次可以很容易地选出最大的数…

Vivado使用记录(未完待续)

一、Zynq开发流程 二、软件安装 三、软件使用 字体大小修改&#xff1a;Setting、Font 四、Vivado基本开发流程 1、创建工程 Quick Start 组包含有 Create Project&#xff08;创建工程&#xff09;、 Open Project&#xff08;打开工程&#xff09;、 Open Example Project&…

List之ArrayList、LinkedList深入分析

集合 Java 集合&#xff0c; 也叫作容器&#xff0c;主要是由两大接口派生而来&#xff1a;一个是 Collection接口&#xff0c;主要用于存放单一元素&#xff1b;另一个是 Map 接口&#xff0c;主要用于存放键值对。对于Collection 接口&#xff0c;下面又有三个主要的子接口&…

洗衣洗鞋店小程序对接水洗唛打印,一键预约,支付无忧

随着社会的进步和科技的发展&#xff0c;我们的生活幸福感与日俱增。为了让我们从琐碎中解脱出来&#xff0c;干洗店洗鞋店行业也日新月异。今天&#xff0c;我为大家推荐这款优秀的干洗店小程序系统&#xff0c;让您的洗衣洗鞋服务体验更上一层楼。 干洗店管理系统是一款专为洗…

阿里云和腾讯云区别价格表,云服务器费用对比2024年最新

2024年阿里云服务器和腾讯云服务器价格战已经打响&#xff0c;阿里云服务器优惠61元一年起&#xff0c;腾讯云服务器61元一年&#xff0c;2核2G3M、2核4G、4核8G、4核16G、8核16G、16核32G、16核64G等配置价格对比&#xff0c;阿腾云atengyun.com整理阿里云和腾讯云服务器详细配…

力扣热题100_普通数组_73_矩阵置零

文章目录 题目链接解题思路解题代码 题目链接 73.矩阵置零 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&…

lvs集群介绍

目录 一、LVS集群基本介绍 1、什么是集群 2、集群的类型 2.1 负载均衡群集&#xff08;Load Balance Cluster) 2.2 高可用群集(High Availiablity Cluster) 2.3 高性能运算群集(High Performance Computing Cluster) 3、负载均衡集群的结构 ​编辑 4、LVS集群类型中的…

3D资产管理

3D 资产管理是指组织、跟踪、优化和分发 3D 模型和资产以用于游戏、电影、AR/VR 体验等各种应用的过程。 3D资产管理也称为3D内容管理。 随着游戏、电影、建筑、工程等行业中 3D 内容的增长&#xff0c;实施有效的资产管理工作流程对于提高生产力、减少错误、简化工作流程以及使…

足球俱乐部管理系统:Java与SpringBoot的管理系统实践

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

MySQL存储函数

存储函数是有返回值存储过程&#xff0c;存储函数的参数只能还是IN类型的 1、语法 create function 存储函数名称 &#xff08;[参数列表]&#xff09;Returns type [characterrastic...]Begin--SQL语句Return ..;End;characterrastic说明&#xff1a;Deterministic:相同的输…

uniapp使用openlayers加载地图服务

uniapp使用openlayers加载地图服务 <!-- 地图组件 --> <template><view id"myMap" :regionChangeItem"regionChangeItem" :change:regionChangeItem"olRender.selectAdministrativeRegion":tagSelectProducetagSelectProduce :t…

Visual Studio 2022之Release版本程序发送到其它计算机运行

目录 1、缺少dll​ 2、应用程序无法正常启动 3、This application failed to start because no Qt platform plugin could be initialized. 代码在Debug模式下正常运行&#xff0c;然后切换到Release模式下&#xff0c;也正常运行&#xff0c;把第三方平台的dll拷贝到exe所在…

IPv6扩展头(四)——分片头

分片头部&#xff08;Fragment Header&#xff09;用于IPv6源节点向目的节点发送一个大于路径MTU的数据报。 一、优势 IPv6 分片头具有多种优势&#xff0c;可提高网络效率&#xff0c;包括减少数据包延迟和减少网络拥塞。使用 IPv6 分片头&#xff0c;数据包在源处而不是中间…

Uninty 鼠标点击(摄像机发出射线-检测位置)

平面来触发碰撞&#xff0c;胶囊用红色材质方便观察。 脚本挂载到胶囊上方便操作。 目前实现的功能&#xff0c;鼠标左键点击&#xff0c;胶囊就移动到那个位置上。 using System.Collections; using System.Collections.Generic; using UnityEngine;public class c6 : MonoBe…

数据结构-线段树

&#x1f4d1;前言 本文主要是【线段树】——线段树简单使用的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句&…

PyCharm Community Edition 2023.3.3,UI界面设置成旧版

File->Settings->Appearance & Behavior->New UI->Enable new UI(取消勾选)->重启PyCharm 旧版UI: 新版UI&#xff1a;

对 JVM 的类加载机制以及寻找字节码文件的“双亲委派模型”的理解

目录 1、JVM 的类加载机制 1.1、加载 1.2、验证 1.3、准备 1.4、解析 1.5、初始化 2、双亲委派模型 2.1、工作过程 1、JVM 的类加载机制 类加载指的是 Java 进程运行的时候&#xff0c;需要把 .class 文件从硬盘读取到内存&#xff0c;并进行一系列的校验解析的过程。…

人民日报:用好“人工智能+” 赋能产业升级

以下文章来源&#xff1a;北京日报 文生视频、智能家居、智慧工厂……近年来&#xff0c;人工智能发展速度之快、应用范围之广备受瞩目。 政府工作报告提出&#xff0c;深化大数据、人工智能等研发应用&#xff0c;开展“人工智能”行动&#xff0c;打造具有国际竞争力的数字产…