【Linux】定时运行shell脚本
1、at命令
at命令允许指定Linux系统何时运行脚本,它会将作业提交到队列中,指定shell在什么时候运行该作业。
at 的守护进程 atd 在后台运行,在作业队列中检查待运行的作业。
at 守护进程会检查系统的一个特殊目录(一般位于/var/spool/at 或 /var/spool/cron/atjobs),并从中获取at命令提交的作业。默认情况下,atd守护进程会每隔60秒检查一次此目录,如果目录下有作业,atd守护进程就会查看此作业的运行时间,若时间跟当前时间一致,就运行此作业。
格式:
at [-f filename] time
默认情况下,at命令会将STDIN的输入放入队列。可以用-f选项指定用于从中读取命令的文件名。
time选项指定用户希望运行该作业的时间。如果用户指定的时间已经过去,那么at命令会在第二天的同一时刻运行该作业。
at 命令能识别多种时间格式:
- 标准的小时和分钟:11:25
- AM/PM指示符:4:18 PM
- 特定的时间名称:now、noon、midnight、teatime(4:00 p,m.)
- 标准日期:MMDDYY、MM/DD/YY、DD.MM.YY
- 文本日期:Feb 7、Sept 15;可加可不加年份
- 时间增量:Now+25minutes、4:30 PM tomorrow、4:13 + 5 days
使用at命令后,作业就会被提交至作业队列。作业队列保存着通过 at 命令提交的待处理作业。针对不同优先级,共有52种作业队列。作业队列通常用小写字母a~z和大写字母A~Z来指代。
作业队列的字母排序越高,此队列中的作业运行优先级就越低(谦让度更大)。默认情况下,at 命令提交的作业会被放入a队列。如果想降低优先级,可以使用 -q 选项指定其他的队列,比如如果想少占用cpu时间,可以将其放入z队列。
获取作业的输出
默认情况下,Linux系统会将提交该作业的用户email作为STDOUT和STDERR,即通过邮件系统传给该用户。
但这种输出很不方便,尤其是未安装sendmail的情况下。故而可以在脚本中对STDOUT和STDERR进行重定向。
#!/bin/bashoutfile=$HOME/outfile.outecho "此脚本会在$(date +%B%d,%T)运行" > outfile
echo >> outfile
echo "此脚本使用的是$SHELL shell." >> outfile
echo >> outfile
sleep 4
echo "脚本运行结束" >> outfile
exit
-M选项,禁止作业产生的输出信息。
查询等待中的作业
atq 命令可以查询系统中有哪些作业在等待。
如下所示,atq命令列出了作业号,系统运行该作业的日期和时间,该作业所在的作业队列及用户账户名
删除作业
atrm 命令用于删除等待中的作业,通过指定作业号即可。只能删除自己的作业,不能删除其他人的作业(root用户除外)
2、cron程序
Linux系统使用cron程序调度需要定期执行的作业。cron在后台运行,并且会检查一个特殊的表,即cron时间表,从中获取已安排执行的作业。
格式:
minutepasthour hourofday dayofmonth month dayofweek command
cron时间表允许使用特定值、取值范围(如1~7)或者通配符(星号*)来指定各个字段。
- 20 7 * * * command:在每天的7:20执行command命令
- 00 11 1 * * command:在每月第一天的中午11点执行命令。
设置在每月的最后一天执行:使用date命令检查明天的日期是不是某个月份的第一天(01)。
00 11 28~31 * * if [ "$(date +%d -d tomorrow)" = 01 ];then command; fi
命令列表必须指定要运行的命令或脚本的完整路径。同时可以像在命令行中那样,添加所需的任何选项和重定向符。
20 7 * * * /home/csb_user1/tesh.sh > backup.out
cron程序会以提交作业的用户身份运行该脚本,因此运行前得确认有访问该脚本以及输出文件的权限。
cron时间表
crontab -e:创建定时任务
crontab -l:列出当前用户下的全部定时任务
cron目录
如果定时任务对执行时间的精确性要求不高,可以使用预配置的cron脚本目录。预配置的基础目录共有4个:hourly、daily、monthly、weekly
如果脚本要每天都执行,则将脚本复制到daily目录下,cron就会每天运行它。
3、anacron程序
cron程序唯一的缺点是它假定Linux系统是7x24小时运行的。但如果某个作业在cron时间表中设置的运行时间已到,且此时Linux系统处于关闭状态,那么该作业就不会运行。当再次启动系统时,cron程序不会再去运行那些已错过的作业。
anacron程序判断出某个作业错过了设置的运行时间,它会尽快运行该作业。即使Linux系统关闭了几天,等再次启动时,原计划在关机期间运行的作业会自动运行。
但anacrom程序只处理位于cron目录的程序,比如/etc/cron.daily。它通过时间戳判断作业是否在正确的计划时间间隔内运行了。每个cron目录都有一个时间戳文件,该文件位于/var/spool/anacron
anacron程序使用自己的时间表(/etc/anacrontab)来检查作业目录。
anacron时间表格式:
period delay identifier command
- period:定义了作业的运行频率(以天为最小单位)。anancron程序利用该字段检查作业的时间戳文件。
- delay:指定了在系统启动后,anacron程序需要等待多少分钟再开始运行错过的脚本。
- identifier:是一个特殊的非空字符串,如:cron.weekly。它唯一的作用是标识出现在日志消息和错误email中的作业。
- command:包含run-parts程序和一个cron脚本目录名。run-parts程序负责运行指定目录中的所有脚本。
anacron不会运行位于/etc/cron.hourly目录的脚本,因为anacron并不处理执行时间需求少于一天的脚本。
相关文章:
【Linux】定时运行shell脚本
1、at命令 at命令允许指定Linux系统何时运行脚本,它会将作业提交到队列中,指定shell在什么时候运行该作业。 at 的守护进程 atd 在后台运行,在作业队列中检查待运行的作业。 at 守护进程会检查系统的一个特殊目录(一般位于/var/…...
ARM 汇编基础总结
GNU 汇编语法 编写汇编的过程中,其指令、寄存器名等可以全部使用大写,也可以全部使用小写,但是不能大小写混用。 1. 汇编语句的格式 label: instruction comment label即标号,表示地址位置,有些指令前面可能会有标…...
L27.【LeetCode笔记】2 的幂(五种解法)
目录 1.题目 2.自解 方法1:调用log函数 代码 提交结果 方法2:循环 提交结果 3.优解 方法3:位运算n & (n-1) 0 代码 提交结果 方法4:位运算lowbit 代码 提交结果 4.投机取巧的方法 代码 提交结果 1.题目 https://leetcode.cn/problems/power-of-two/?env…...
【MyBatis-Plus】让 MyBatis 更简单高效
如果你曾经使用过 MyBatis,你一定知道它的强大和灵活。然而,随着项目规模的增长,手写 SQL 成为了一件既繁琐又容易出错的事。这时,MyBatis-Plus(简称 MP)应运而生,它为 MyBatis 增强了许多功能&…...
如何使用OpenCV进行抓图-多线程
前言 需求: 1、如何使用OpenCV捕抓Windows电脑上USB摄像头的流、 2、采用多线程 3、获知当前摄像头的帧率。 这个需求,之前就有做了,但是由于出现了一个问题,人家摄像头的帧率目前都可以达到60帧/s 了,而我的程序…...
解决安装pynini和WeTextProcessing报错问题
点击这里,访问博客 0. 背景 最近在给别人有偿部署ASR-LLM-TTS项目时遇到安装pynini和WeTextProcessing依赖报错的问题,报错信息如下: IC:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt" "-IC:\Program Files…...
数据中台与数据治理服务方案[50页PPT]
本文概述了数据中台与数据治理服务方案的核心要点。数据中台作为政务服务数据化的核心,通过整合各部门业务系统数据,进行建模与加工,以新数据驱动政府管理效率提升与政务服务能力增强。数据治理则聚焦于解决整体架构问题,确保数据…...
springCloud 脚手架项目功能模块:Java分布式锁
文章目录 引言分布式锁产生的原因:集群常用的分布式锁分布式锁的三种实现方式I ZooKeeper 简介zookeeper本质上是一个分布式的小文件存储系zookeeper特性:全局数据一致性II 基于ZooKeeper 实现一个排他锁创建锁获取锁释放锁Apache ZooKeeper客户端III 分布式锁方案非公平锁方…...
一文讲清楚HTTP常见的请求头和应用
文章目录 一文讲清楚HTTP常见的请求头和应用1. 啥是个HTTP请求头2. 常见的请求头,作用和示例3.协商缓存4.会话状态 一文讲清楚HTTP常见的请求头和应用 1. 啥是个HTTP请求头 一句话,说白了就是限定HTTP传输的一些规则参数,比如Accept…...
ImportError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32‘ not found
这个问题之前遇到过,没有记录,导致今天又花了2小时 原因是没有GLIBC——2.32 使用以下命令查一下有哪些版本: strings /lib/x86_64-linux-gnu/libm.so.6 | grep GLIBC_ 我已经安装好了,所有有2.32版本 原因是当前的ubuntu版本…...
如何安装适配pytorch版本的torchvision
一、对照版本 版本对照pytorch/vision: Datasets, Transforms and Models specific to Computer Vision 二、下载对应版本的torchvision 下载连接1download.pytorch.org/whl/torch_stable.html 下载连接2download.pytorch.org/whl/cu110/torch_stable.html 笔者认为1会比2更…...
UE4_用户控件_3_用户控件输入数据的方法
祝愿大美兰陵越来越好! 一、效果展示: 二、先制作一个角色 1、新建个父类为pawn的蓝图类。更名为BP_Image_Character。 2、这个角色只是用于观察场景,并与场景中的物体相碰撞用的,所以不需要骨骼网格体, 3、但是我们…...
以往博客的复习补充——part1
之前没更新是因为期末考试要复习,没空写博客。1月3号才考完,现在有空,打算从头看一遍,既是复习以前知识点,又是对原来的博客进行补充。刚好寒假,有大把时间。 一,希尔排序(Shell So…...
数据挖掘——决策树分类
数据挖掘——决策树分类 决策树分类Hunt算法信息增益增益比率基尼指数连续数据总结 决策树分类 树状结构,可以很好的对数据进行分类; 决策树的根节点到叶节点的每一条路径构建一条规则;具有互斥且完备的特点,即每一个样本均被且…...
Kafka 快速实战及基本原理详解解析-01
一、Kafka 介绍 1. MQ 的作用 消息队列(Message Queue,简称 MQ)是一种用于跨进程通信的技术,核心功能是通过异步消息的方式实现系统之间的解耦。它在现代分布式系统中有着广泛的应用,主要作用体现在以下三个方面&…...
大模型在自动驾驶领域的应用和存在的问题
大模型在自动驾驶领域的应用与挑战 大模型(如 GPT-4、BERT等)已经在多个领域取得了突破,自动驾驶是其中一个受益颇多的行业。随着人工智能和深度学习的快速发展,自动驾驶技术正在向更加智能化、自动化和安全的方向发展。大模型在…...
【0x0014】HCI_Read_Local_Name命令详解
目录 一、命令概述 二、命令格式 三、返回事件及参数说明 3.1. HCI_Command_Complete 事件 3.2. Status 3.3. Local_Name 四、命令执行流程 4.1. 命令发送 4.2. 控制器接收并处理命令 4.3. 控制器返回结果 4.4. 主机接收并解析事件包 4.5. 示例代码 五、应用场景 …...
理解Java领域中的 DTO、PO 和 VO
在 Java 开发中,DTO(Data Transfer Object)、PO(Persistent Object)和 VO(Value Object)是在不同层面用于数据处理和传递的概念,它们各自有着独特的作用: 一、DTO&#…...
成都和力九垠科技有限公司九垠赢系统Common存在任意文件上传漏洞
免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...
框架模块说明 #09 日志模块_01
背景 日志模块是系统的重要组成部分,主要负责记录系统运行状态和定位错误问题的功能。通常,日志分为系统日志、操作日志和安全日志三类。虽然分布式数据平台是当前微服务架构中的重要部分,但本文的重点并不在此,而是聚焦于自定义…...
Unity热更文件比较工具类
打包出来的热更文件,如果每次都要全部上传到CDN文件服务器,不进耗费时间长,还浪费流量。 所以让AI写了个简单的文件比较工具类,然后修改了一下可用。记录一下。 路径可自行更改。校验算法这里使用的是MD5,如果使用SH…...
Python性能分析深度解析:从`cProfile`到`line_profiler`的优化之路
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在软件开发过程中,性能优化是提升应用质量和用户体验的关键环节。Python作为广泛应用的高级编程语言,其性能分析工具为开发者提供了强大的…...
EF Core配置及使用
Entity Framework Core是微软官方的ORM框架。 ORM:Object Relational Mapping。让开发者用对象操作的形式操作关系数据库。 EF Core是对于底层ADO.NET Core的封装,因此ADO.NET Core支持的数据库不一定被EF Core支持。 代码创建数据库Code First 建实…...
EPS32基础篇开发
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 开发 EPS32基础篇 前言一、GPIO输入输出GPIO可设置一下4种状态代码示例:检测按键,按下时:LED亮,松开时,LED灭 二、…...
【时时三省】(C语言基础)常见的动态内存错误2
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 对非动态开辟空间内存使用free释放 示例: 这个arr数组是在栈上的 *p指向的就是arr 对非动态空间也用了free ferr只能在动态开辟空间使用 使用free释放一块动态开辟空间的一部分…...
Harmony OS开发-ArkUI框架速成四
程序员Feri一名12年的程序员,做过开发带过团队创过业,擅长Java相关开发、鸿蒙开发、人工智能等,专注于程序员搞钱那点儿事,希望在搞钱的路上有你相伴!君志所向,一往无前! 1.图标库 1.1 图标库概述 HarmonyOS 图标库为 HarmonyOS 开发者提供丰富的在线图…...
vulnhub Earth靶机
搭建靶机直接拖进来就行 1.扫描靶机IP arp-scan -l 2.信息收集 nmap -sS -A -T4 192.168.47.132 得到两个DNS; 在443端口处会让我们加https dirb https://earth.local/ dirb https://terratest.earth.local/ #页面下有三行数值 37090b59030f11060b0a1b4e0000000000004312170a…...
ScheduledExecutorService详解
ScheduledExecutorService 是 Java 并发工具包 (java.util.concurrent) 中的一个接口,用于在指定的延迟后执行任务,或者以固定的时间间隔周期性执行任务。它是 ExecutorService 的子接口,提供了更强大的调度功能。 ScheduledExecutorService…...
logback日志文件多环境配置路径
项目中遇到问题,springboot项目 本地jar包部署到现场后,经常遇到现场的日志存放的路径会更改,经过查阅,有两种方式,下面简单说明一下。 一、第一种 启动jar包时 添加参数 --logging.configF:\hgtest\config\logback.x…...
判断一个变量是否为NaN
1. JS代码 NaN(不是一个数字,但数据类型为number)是执行数学运算没有成功,返回失败的结果。 另外,NaN 不等于 NaN 。 //利用 NaN 是唯一一个不等于自身的特点 function _isNaN(val) {if (val ! val) {return true;}ret…...
Flask 快速入门
1. Flask 简介 1.1 什么是 Flask Flask 是一个用 Python 编写的轻量级 Web 框架,被誉为 微框架。它提供基础功能,如路由、请求处理和模板引擎,但不强迫开发者使用特定库或工具,赋予开发人员高度的自由选择权,以满足不…...
性能测试03|JMeter:断言、关联、web脚本录制
目录 一、断言 1、响应断言 2、json断言 3、持续时间断言 二、关联 1、正则表达式介绍 2、正则表达式提取器 3、Xpath提取器 4、JSON提取器 5、JMeter属性 三、web脚本录制 一、断言 定义:让程序自动判断实际的返回结果是否与预期结果保持一致 自动校验…...
微信小程序调用 WebAssembly 烹饪指南
我们都是在夜里崩溃过的俗人,所幸终会天亮。明天就是新的开始,我们会变得与昨天不同。 一、Rust 导出 wasm 参考 wasm-bindgen 官方指南 https://wasm.rust-lang.net.cn/wasm-bindgen/introduction.html wasm-bindgen,这是一个 Rust 库和 CLI…...
java_配置使用nacos完整示例
参考:49 尚上优选项目-平台管理端-整合ESMQ实现商品上下架-流程分析_哔哩哔哩_bilibili 1. 下载安装nacos https://github.com/alibaba/nacos/releases 2. 解压,运行 PS D:\path/to\nacos-server-2.4.3\nacos\bin> .\startup.cmd -m standalone 3.…...
Go语言性能优化-字符串格式化优化
在 Go 语言中,格式化字符串(例如使用 fmt.Sprintf、fmt.Printf 等函数)确实可能对性能产生影响,尤其是当频繁执行格式化操作时。格式化字符串涉及对格式符的解析和数据类型的转换,这会增加额外的开销。为了减少格式化字符串带来的性能影响,可以采取以下一些优化策略: 1…...
Spring源码分析之事件机制——观察者模式(二)
目录 获取监听器的入口方法 实际检索监听器的核心方法 监听器类型检查方法 监听器的注册过程 监听器的存储结构 过程总结 Spring源码分析之事件机制——观察者模式(一)-CSDN博客 Spring源码分析之事件机制——观察者模式(二ÿ…...
机器学习和深度学习
机器学习(Machine Learning,简称 ML)和深度学习(Deep Learning,简称 DL)都是人工智能(AI)领域的重要技术,它们的目标是使计算机通过数据学习和自主改进,从而完…...
MetaGPT - 多Agent框架
文章目录 一、关于 MetaGPT功能介绍快速开始的演示视频教程 二、安装Pip安装Docker安装 一、关于 MetaGPT MetaGPT 为GPTs分配不同的角色,以形成一个协作实体来完成复杂的任务。 github : https://github.com/geekan/MetaGPTtwitter : https://twitter.com/MetaGP…...
Hyperbolic dynamics
http://www.scholarpedia.org/article/Hyperbolic_dynamics#:~:textAmong%20smooth%20dynamical%20systems%2C%20hyperbolic%20dynamics%20is%20characterized,semilocal%20or%20even%20global%20information%20about%20the%20dynamics. 什么是双曲动力系统? A hy…...
TIM的输入捕获
IC(Input Capture)输入捕获 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中 我们使用测周法测频率 void IC_Init(void) {RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB1PeriphCl…...
SCAU期末笔记 - 数据库系统概念往年试卷解析
数据库搞得人一头雾水,题型太多太杂,已经准备摆烂了。就刷刷往年试卷,挂不挂听天由命。 2019年 Question 1 选择题 1. R ∩ S R∩S R∩S等于一下哪个选项? 画个文氏图秒了 所以选A. R ∩ S R − ( R − S ) R∩SR-(R-S) R∩…...
黑马跟学.苍穹外卖.Day01
黑马跟学.苍穹外卖.Day01 苍穹外卖-day01课程内容1. 软件开发整体介绍1.1 软件开发流程1.2 角色分工1.3 软件环境 2. 苍穹外卖项目介绍2.1 项目介绍2.2 产品原型2.3 技术选型 3. 开发环境搭建3.1 前端环境搭建3.2 后端环境搭建3.2.1 熟悉项目结构3.2.2 Git版本控制3.2.3 数据库…...
获取系统启动时间
获取系统启动时间 uptime命令 gbgb:~$ uptime09:29:41 up 2:21, 4 users, load average: 0.00, 0.00, 0.00 gbgb:~$ 这里的up 13 min表示系统已经运行了2个小时13分钟。 date 命令 /proc/uptime gbgb:~$ date -d "$(awk -F. {print $1} /proc/uptime) second ago&…...
Istio 补充 Kubernetes 的不足
1 Istio 补充 Kubernetes 的不足 Kubernetes 强大但无法解决复杂分布式系统中的非功能性需求,如流量路由、协议转换、请求重试和负载均衡。Istio作为Service Mesh,通过独立的代理进程处理这些需求,避免直接修改业务代码。 2. 独立的代理进程…...
以图像识别为例,关于卷积神经网络(CNN)的直观解释
大家读完觉得有意义记得关注和点赞!!! 作者以图像识别为例,用图文而非数学公式的方式解释了卷积神经网络的工作原理, 适合初学者和外行扫盲。 目录 1 卷积神经网络(CNN) 1.1 应用场景 1.2 起…...
使用PyTorch实现基于稀疏编码的生成对抗网络(GAN)在CIFAR-10数据集上的应用
使用PyTorch实现基于稀疏编码的生成对抗网络(GAN)在CIFAR-10数据集上的应用 目录 使用PyTorch实现基于稀疏编码的生成对抗网络(GAN)在CIFAR-10数据集上的应用1. 引言2. 数据集介绍3. 模型网络结构3.1 网络结构3.2 编码器3.3 生成器3.4 判别器4. 模型优化器与损失函数4.1 优…...
Java重要面试名词整理(十八):Sentinel
文章目录 服务雪崩及其解决方案技术选型: Sentinel or Hystrix 流量治理组件Sentinel**基于SentinelResource注解埋点实现资源保护** Sentinel控制台**限流阈值类型****流控模式****直接****关联** **流控效果**系统规则——系统自适应保护 限流算法**计数器法****滑动时间窗口…...
【微信小程序获取用户手机号
微信小程序获取用户手机号有2种,一种是前端自己解密,一种是获取后发给后端,后端去解密 重点:要在微信公众平台设置里面绑定微信开放平台账号,不然反解不出来用户手机号上代码: <button style"font-size: 16px;" open-type"getPhoneNumber" getphonenumb…...
Profinet转EtherNet/IP网关连接AB PLC的应用案例
某大型制造企业的生产车间同时采用了西门子 S7 - 1500 PLC 作为核心控制系统的一部分,负责主要生产流程的控制与数据处理;而在特定生产环节,由于历史设备遗留或工艺配套需求,存在使用 AB PLC 的情况。这就导致了在整个自动化生产系…...
Maven的依赖管理
1. 依赖管理 依赖管理,可以将有关依赖项的所有信息放在共同的POM中,并对子POM中的工件进行更简单的引用。举个例子: 父POM <project>......<dependencyManagement><dependencies><dependency><groupId>gro…...