LInux之例行工作

news2024/12/27 9:36:52

目录

场景

单一执行例行任务 --- at(一次性)

安装

命令详解

语法格式

参数及作用

时间格式

案例

at命令执行过程分析

循环执行的例行性任务--crontab(周期性)

crontd服务安装

linux 任务调度的工分类

crontab工作过程

crontab命令详解

语法格式

参数及作用

编辑crontab

特殊字符

案例 --- 编写脚本设置周期性任务

书写定时任务的注意事项

系统级别的计划任务

 方法

案例


场景

  • 生活中,我们有太多场景需要使用到闹钟,比如早上 7 点起床,下午 4 点开会,晚上 8 点购物,等等。

  • 在 Linux 系统里,我们同样也有类似的需求。比如我们想在凌晨 1 点将文件上传服务器,或者在晚上 10 点确认系统状态,等等。

  • 但我们不可能一直守在电脑前,毕竟我们也需要下班/睡觉,还要陪女朋友(new一个也行)。而且即使在上班期间,如果到点了还需要人工操作,未免效率太低了。

  • at 命令就是为这个需求而诞生的。使用 at 命令,你可以在特定时间自动完成你所设定的任务,也可以实现自动化,非常方便快捷!

单一执行例行任务 --- at(一次性)

安装

        at命令一般默认预装在操作系统中,可以通过下面的命令查看版本信息

[root@localhost ~]# at -V

        查看执行状态

[root@localhost ~]# systemctl status atd
[root@localhost ~]# systemctl enable atd

命令详解

语法格式

        at  -参数   日期时间

参数及作用

参数

作用
-m当任务完成后,发送邮件信息给用户
-l列出系统的所有任务等价与atq
-d删除一个任务
-v使用时间格式列出at任务
-c可以列出任务后的命令内容
-f从文件读取

时间格式

        HH:MM --- 在今天HH小时的MM分钟后执行,若时间点错过,将在明天执行

        HH:MM  YYYY-MM-DD --- 在某年某月的某一天的特殊时间点执行该工作

        now +2 minutes --- 从现在开始的时间向后推算(hours days  weeks)

案例

        案例1 --- 延迟执行ls /root ,并将结果写入文件at.txt中

[root@server ~]# at  11:05
warning: commands will be executed using /bin/sh
at> ls /root > at.txt
at> <EOT>   --- 按下ctrl+d退出


[root@localhost ~]# at -l --- 查看计划任务列表
[root@localhost ~]# atq --- 查看计划任务列表

        案例2 --- 不使用交互性命令,通过管道符实现

[root@localhost ~]# echo "china" >> at.txt | at now +1 minut

注意:

  • at命令只要指定的时间正确就可以执行对应的命令

  • at命令的输出结果不会显示到屏幕上

  • at命令中执行的命令最好使用绝对路径,不容易报错

  • 过程:输入at 时间 -> 回车 ->输入执行的命令->ctrl+d退出at

  • at命令只会执行一次

at命令执行过程分析

  • 第一步:寻找/etc/at.allow (白名单)是否存在,写在该文件中用户才可执行at命令

  • 第二步:若/etc/at.allow不存在,则寻找/etc/at.deny(黑名单)文件,写在该文件中的用户不能使用at命令

  • 第三步:若两个文件都不存在只有root用户可以使用at命令

注意:

        若拒绝某用户使用at命令则可以将用户名写入到/etc/at.deny中

案例 --- 设置某用户at命令不可用

[root@localhost ~]# useradd cel --- 新建用户
[root@localhost ~]# passwd cel --- 设置密码(123456)

[root@localhost ~]# tail -1 /etc/passwd --- 查看

[root@localhost ~]# vim /etc/at.deny --- 设置黑名单

 

[root@localhost ~]# su cel --- 切换用户
[cel@localhost root]$ at 20:08 --- 尝试执行at

循环执行的例行性任务--crontab(周期性)

crontd服务安装

  • at 命令是在指定的时间只能执行一次任务,crontab 命令可以循环重复的执行定时任务,与Windows 中的计划任务有些类似

  • crond 是 Linux 下用来周期地执行某种任务或等待处理某些事件的一个守护进程,在安装完成操作系统后,默认会安装 crond 服务工具,且 crond 服务默认就是自启动的

[root@localhost ~]# yum install crontabs --- 安装
[root@localhost ~]# systemctl status crond --- 查看状态

 

注意:

        crond 进程每分钟会定期检查是否有要执行的任务,如果有,则会自动执行该任务,crontab 命令需要 crond 服务支持

linux 任务调度的工分类

        系统执行的工作 --- 系统周期性所要执行的工作,如备份系统数据、清理缓存

        个人执行的工作 --- 某个用户定期要做的工作,例如每隔 10 分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置

crontab工作过程

  1. 当系统中有 /etc/cron.allow 文件时,只有写入此文件的用户可以使用 crontab 命令,没有写入的用户不能使用 crontab 命令。同样,如果有此文件,/etc/cron.deny 文件会被忽略,因为 /etc/cron.allow 文件的优先级更高

  2. 当系统中只有 /etc/cron.deny 文件时,写入此文件的用户不能使用 crontab 命令,没有写入文件的用户可以使用 crontab 命令

  3. crontab 执行的每一项工作都会被记录到 /var/log/cron 这个日志文件

  4. 当用户使用 crontab 新建工作之后,该项工作就会被记录到 /var/spool/cron/目录里面

crontab命令详解

语法格式

        crontab  [-u  user]  [-l| -r | -e]  

参数及作用

参数说明
-u只有root才能执行该任务
-e==编辑crontab工作内容==
-l查询crontab任务内容
-r删除cronatb任务

编辑crontab

[root@localhost ~]# crontab  -e

写入命令的格式 --- :每一行书写一个工作,每个工作有6个字段

分钟:0-59
小时:0-23
日期:1-31
月份:1-12
星期:0-7(0和7表示周日)
执行动作

特殊字符

*  :  任意时刻
-  :  表示时间范围
,(逗号): 分割时段
*/数字  : 指定时间间隔频率,如:每3分钟执行一次:*/3

         案例

1 2 * * *    :  每天凌晨2点1分执行动作

0 17 * * 1   : 每周一下午17点整执行动作

0 5 1,15 * * : 每月1号和15号凌晨5点执行动作

40 4 * * 1-5 : 每周1到周5的凌晨4点40分执行动作

*/10 4 * * * :  每天凌晨4点每隔10分钟执行动作

3,15 8-11 */2 * * :每隔2天的上午8点到11点的第3分钟和第15分钟执行动作

* * * * *  : 每隔1分钟执行动作

案例 --- 编写脚本设置周期性任务

[root@localhost ~]# vim test.sh --- 编写脚本

#!/bin/bash

while : 
do
        echo  "this  is  my  test  sh"$(date)  >>  /root/cro.txt
        sleep 1
done

[root@localhost ~]# crontab -e --- 设置周期性执行任务
*/1 * * * *  sh /root/test.sh

[root@localhost ~]# crontab -l --- 查看任务

[root@localhost ~]# cat cro.txt  --- 查看结果

[root@localhost ~]# crontab -r --- 删除任务

注意:

        需要还需要删除脚本

[root@localhost ~]# kill -9 pid --- 删除进程

书写定时任务的注意事项

  • 6 个字段都不能为空,如果不确定则使用*表示任意时间

  • crontab命令任务的最小时间单位为分钟最大有效时间为月,如:2024年某时执行、3点30分30秒这样的时间日期无法被识别

  • 定义时间时,日期和星期最好不要一起出现,由于都是以天为单位,非常让管理员混淆

  • 在定时任务中不能,不管是写命令还是在脚本中写命令,最好都用绝对路径,相对路径有时会报错

系统级别的计划任务

        crontab -e 时每个用户都可以执行的命令,但有时定时任务必须由系统执行,此时就需要编辑/etc/crontab配置文件来实现

[root@localhost ~]# vim /etc/crontab 

注意: 

        仅能通过root定义,不可以使用普通账户身份去执行计划任务

 方法

        在/etc/crontab 最后一行新增计划任务即可

解析: 

  • SHELL=/bin/bash --- 指定系统使用哪个shell解释器去执行

  • PATH=/sbin:/bin:/usr/sbin:/usr/bin --- 系统执行命令的搜索路径

  • MAILTO=root --- 表示执行任务的信息通过邮件发送给谁

  • user-name --- 表示执行命令的用户是谁

案例

         每天6:00点将日志文件/var/log/messages 文件备份到/backup目录中,备份后文件名称修改为logfileYYYY-MM-DD-HH:MM:SS

0 6 * * *  root  /bin/cp  /var/log/messages  /backup/logfile`date  +\%Y-\%m-\%d-\%H:\%M:\%S` 

注意:

        反引号 --- 表示将引起的内容识别为命令

        在cronatb中%表示换行,需要增加转义符\

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

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

相关文章

网银快捷支付接口怎么申请?

快速支付是一种方便的支付方式&#xff0c;允许用户在不重复输入卡号、密码等详细信息的情况下&#xff0c;使用预绑定的银行卡或支付账户进行快速支付。 在快速支付中&#xff0c;用户可以选择在商家网站、移动应用或支付平台上使用快速支付选项&#xff0c;并选择绑定的银行…

云上的甜蜜早安:腾讯云云函数助力PHP打造女友专属每日推送

用腾讯云的云函数做一个微信公众号早安&#xff0c;每天定时发送早安给你的女朋友&#xff01; 1.首先我们登录腾讯云&#xff0c;在搜索栏搜索云函数 2.进入云函数&#xff0c;点击立即体验 3.这里我们选择 按照步骤选择 php 4.再就是配置页面&#xff0c;这里我们只需要配…

ChatGPT对于留学生带来了哪些影响?留学生又应该如何使用?

悉尼大学的赶DUE高峰期来得总是那么早&#xff0c;才开学四周&#xff0c;图书馆就已经被赶DUE人占领地满满当当。 面对即将到来的大批量写作任务&#xff0c;不少同学们打起了ChatGPT的主意。 2022年11月&#xff0c;人工智能&#xff08;AI&#xff09;工具ChatGPT&#xff…

jmeter CSV 数据文件设置

创建一个CSV数据文件&#xff1a;使用任何文本编辑器创建一个CSV文件&#xff0c;将测试数据按照逗号分隔的格式写入文件中。例如&#xff1a; room_id,arrival_date,depature_date,bussiness_date,order_status,order_child_room_id,guest_name,room_price 20032,2023-8-9 14:…

天翼物联首款自研RedCap终端完成测试

近日&#xff0c;天翼物联在中国电信国家双创基地物联网开放实验室完成了首款自研RedCap网关终端CTW-GW-01的认证测试工作。该款终端由天翼物联终端模组产品团队研发打造&#xff0c;以天翼物联CTWing终端能力仓为基础&#xff0c;旨在为产业提供差异化的终端服务&#xff0c;助…

Vue3.X 路由与导航栏、侧边栏(四)

我们接着上一节的 Vue3.x 生命周期&#xff08;三&#xff09; 的说明&#xff0c;我们这一节讲解了项目中路由的配置与导航栏、侧边栏的关系。 一、路由配置 vue项目中路由配置有一个固有文件夹&#xff0c;可以配置路由&#xff0c;这样的优点使项目更加清晰明了。 如图&a…

c++11 标准模板(STL)(std::basic_stringbuf)(五)

定义于头文件 <sstream> template< class CharT, class Traits std::char_traits<CharT>, class Allocator std::allocator<CharT> > class basic_stringbuf : public std::basic_streambuf<CharT, Traits> std::basic_stringbu…

华为数通方向HCIP-DataCom H12-821题库(单选题:21-40)

第21题 在广播类型网络中,DIS默认发送Hello时间间隔为多少? A、10s B、3.3s C、5S D、40s 答案&#xff1a;B 解析&#xff1a; 在广播环境中,DIS 发送 hello 报文的周期更加的短,是普通ISIS路由器的1/3,普通ISIS路由器发送hello的时间为10s,所以DIS发送hello的周期是3.3s …

vue3新建的项目如何配置

如何创建vue项目链接&#xff1a;http://t.csdn.cn/tX8wY 点击src删除一些没有用的东西 首先查看node_modules文件夹有没有pnpm文件夹&#xff0c;有的话删除node_modules文件夹 重新使用npm i进行安装 在APP.vue下面删除无用代码 删除前 删除后 在views下面找到Home首页删…

用大模型“介绍如何用不同的编程语言编写出七夕的爱情感觉”

前言 七夕是中国传统的情人节&#xff0c;也是向心爱的人表达情感的好时机。而今&#xff0c;技术发展日新月异&#xff0c;让我们一起用创意和技术的力量来营造浪漫的氛围吧&#xff01; 在这篇博客文章中&#xff0c;我将向您展示如何用大模型去实现。 文心一言 Python编程…

LeetCode863. 二叉树中所有距离为 K 的结点(相关话题:深度遍历,广度遍历)

题目描述 给定一个二叉树(具有根结点 root), 一个目标结点 target ,和一个整数值 k 。 返回到目标结点 target 距离为 k 的所有结点的值的列表。 答案可以以 任何顺序 返回。 示例 1: 输入:root = [3,5,1,6,2,0,8,null,null,7,4], target = 5, k = 2 输出:[7,4,1] 解释…

【【萌新的STM32学习-13之GPIO寄存器的用法】】

萌新的STM32学习-13之GPIO寄存器的用法 从外部来看我们有很多个GPIO 分为ABCDEF等等 每个GPIO都有&#xff11;&#xff16;个引脚 每个引脚的名字是PA&#xff10;到PA&#xff11;&#xff15; 这是外部的看法 对于内部 引脚自然会有引脚的功能传入的模式 状态 频率 等…

fatal: not a git repository (or any of the parent directories): .git

提示说没有.git这样一个目录 在命令行 输入 git init 然后回车就好了 git remote add origin https:/.git git push -u origin "master"

通达信指标公式13:涨跌星期密码升级2.0

★★★★★博文原创不易&#xff0c;我的博文不需要打赏&#xff0c;也不需要知识付费&#xff0c;可以白嫖学习小技巧&#xff0c;喜欢的老铁可以多多帮忙点赞&#xff0c;小红牛在此表示感谢&#xff0c;就是对作者的最大支持。愿与诸君共勉&#xff0c;悟道于股市★★★★★…

excel文本函数篇2

本期主要介绍LEN、FIND、SEARCH以及后面加B的情况&#xff1a; &#xff08;1&#xff09;后缀没有B&#xff1a;一个字节代表一个中文字符 &#xff08;2&#xff09;后缀有B&#xff1a;两个字节代表一个中文字符 1、LEN(text)&#xff1a;返回文本字符串中的字符个数 2、…

【QT】progressBar的使用(13)

progressBar多用于记录程序运行的时间、文件下载的时间等等&#xff0c;今天就来看一下&#xff0c;如何熟练运用progressBar。 一.环境配置 1.python 3.7.8 可直接进入官网下载安装&#xff1a;Download Python | Python.org 2.QT Designer 官方下载路径&#xff1a;Qt…

三维模型OSGB格式轻量化的跨平台兼容性技术分析

三维模型OSGB格式轻量化的跨平台兼容性技术分析 在三维模型应用中&#xff0c;OSGB格式轻量化处理是一种常见的技术手段&#xff0c;可以通过数据压缩、简化、滤波等操作&#xff0c;降低三维模型数据的存储空间和传输带宽需求&#xff0c;提高应用程序的性能和用户体验。但是&…

UaExpert使用教程

1.安装好UaExpert后&#xff0c;填写下列信息 2.使用UaExpert作为client连接server&#xff08;server可使用KEPServerEX 模拟服务端&#xff0c;或自己搭建一个测试服务&#xff0c;测试服务搭建代码点击获取&#xff09; 点击“”号 填写配置名称&#xff0c;双击Custom …