Linux计划任务-定时任务

article/2025/9/15 13:11:07

Linux计划任务-定时任务

    • at单次计划任务
      • at命令格式
      • 查看at任务
      • 取消at计划任务
      • 创建1分钟后的单次任务
    • 定时任务分类
      • cron`系统任务调度`
        • /etc/crontab文件格式
      • 用户任务调度
      • 安装crontab
    • conrtab常用
      • 添加计划任务
        • 指定用户创建计划任务
      • 查看用户的计划任务
        • 计划任务日志存储目录
        • 查看所有用户的计划任务
      • 删除计划任务
      • 查看计划任务日志
      • 禁止任务发邮件
        • 方法1: `&>/dev/null`
        • 方法2:`MAILTO=""`
        • 清空邮件
    • 定时格式
      • 多个时间计划任务
      • 间隔时间计划任务
        • 每分钟执行一次的任务
      • 计划任务加锁

at单次计划任务

at命令:使用它在一个特定的时间运行一些特殊的作业,或在晚一些的非负荷高峰时间段或高峰负荷时间段运行。

# 安装at
yum install at -y# 开启atd服务
systemctl enable --now atd

对于其他用户,是否执行某个命令或脚本取决于/etc/at.allow


at命令格式

# at命令:时间 
# at>要运行的命令
[root@localhost ~]# at 11:32
at> ls
at> reboot
# 写完后CTrl+D 退出

at命令示例:

# 在22年6月8日上午10点执行slocate -u命令
at 10:00 6/8/22
at> socate -u
敲回车

在这里插入图片描述


查看at任务

# 显示用户待执行任务列表
[root@localhost ~]# atq
2	Fri Nov  5 08:08:00 2021 a root# 查看任务
[root@localhost ~]# at -l
3   Sun Aug 15 11:36:00 2021 a root# 查看指定编号的计划任务
## at -l 如果查看处有多条计划任务的话,用at -c 编号,即可查看信息
at -c 1

取消at计划任务

# 取消计划任务 atrm 编号
atrm 1# -r 清除作业--可能不兼容该命令
## -m 作业完成后给用户发邮件
at -rm 作业id# 查看计划任务是否已经删除
at -l

创建1分钟后的单次任务

at now + 1 min
> useradd tgb
# 写完后CTrl+D 退出

定时任务分类

Linux下的任务调度分为两类,系统任务调度用户任务调度

corn运行机制:
cron 会搜索 /var/spool/cron 目录,寻找以 /etc/passwd 文件中的用户名命名crontab文件,然后将crontab文件装入内存;
cron 还将搜索/etc/crontab文件,这个文件(cron时间表)是以特定格式写成的cron启动以后,先检查是否有用户设置了crontab文件,如果没有就转入睡眠状态,释放系统资源;所以该后台进程占用资源极少,之后每分钟被换醒一次,查看当前是否有需要运行的命令。


cron系统任务调度

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

cron系统调度进程可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行。

# 系统级别的crontab会记录在该文件下
cat /etc/crontab

在这里插入图片描述


/etc/crontab文件格式

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

# 前四行是用来配置crond任务运行的环境变量
## SHELL变量指定了系统要使用哪个shell,这里是bash
SHELL=/bin/bash
## PATH变量指定了系统执行命令的路径
PATH=/sbin:/bin:/usr/sbin:/usr/bin
## MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户
MAILTO=""
## HOME变量指定了在执行命令或者脚本时使用的主目录
HOME=/# 任务部分
51 * * * * root run-parts /etc/cron.hourly
24 7 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

用户任务调度

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

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

安装crontab

参考: https://blog.51cto.com/u_15175006/2720985

# yum安装crontab
yum install -y crontab# 开机自启crond服务并现在启动
systemctl enable --now crond

conrtab常用

https://wangchujiang.com/linux-command/c/crontab.html

# 编辑该用户的计时器设置
crontab -e# 列出该用户的计时器设置;
crontab -l# 删除该用户的计时器设置;
crontab  -r <用户名称># 指定要设定计时器的用户名称。
crontab  -u <用户名称>

在这里插入图片描述


添加计划任务

字段描述
minute分钟(0 – 59)
hour小时(0 – 23)
day-of-month一个月的第几天(1 – 31)
month-of-year一年的第几个月(1 – 12)
day-of-week一周的星期几(0 – 6),0 代表周日
commands需要执行的命令
# 每周一上午 8:00 执行命令 
00 08 * * 1 commands
参数描述
*代表所有可能的值,如month字段为星号,则表示在满足其它字段的制约条件后每月都执行该命令操作
/可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。
-可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
,可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
# 配置计划任务
crontab -e# 配置规则
分 时 日 月 星期 (绝对路径)命令
# 示例 11:57 执行reboot
## &>/dev/null 禁止发邮件
57 11 * * * /usr/sbin/reboot &>/dev/null# 查看计划任务
crontab -l

示例

# 例:晚上11点到早上8点之间每两个小时,在/tmp/test.txt文件中加入sleepy文本
* 23-8/2 * * * echo"sleepy" >> /tmp/test.txt

指定用户创建计划任务

# 指定用户创建计划任务
## -e 编辑crontab文件
## -u 用户名
crontab -e -u natasha

查看用户的计划任务

# 查看用户创建计划任务
## -u 用户名
## -l 列出crontab文件中的内容
crontab -u natasha -l

计划任务日志存储目录

/var/log/cron目录记录了Linux下所有用户计划任务信息,以crontab -u -e方式写入的计划任务都会在此目录下生成文件

# 查看计划任务
cat /var/log/cron

查看所有用户的计划任务

# 查看所有用户的计划任务
cat /etc/passwd | cut -f 1 -d : |xargs -I {} crontab -l -u {}

删除计划任务

## -r 删除crontab文件

查看计划任务日志

# 查看系统计划任务日志
tail --f /var/log/cron# 使用关键字过滤计划任务日志
grep "alidata" /var/log/cron

禁止任务发邮件

计划任务每执行一次,就会发送一封邮件给管理员。

# 发送邮件给指定用户
MAILTO="raj"

方法1: &>/dev/null

# 示例 11:57 执行reboot
## &>/dev/null 禁止发邮件
57 11 * * * /usr/sbin/reboot &>/dev/null## 5个*表示每分钟执行一次
## &>/dev/null表示禁止发邮件
* * * * * rsync -av --delete 10.0.0.8:/data/www/ /data/backup &>/dev/null

在这里插入图片描述


方法2:MAILTO=""

# 在任务的第一行指定邮件地址为空即可
MAILTO=""

在这里插入图片描述


清空邮件

# 清空收件箱
cat /dev/null > /var/spool/mail/root

定时格式

计划任务格式在线生成
https://crontab.guru/

在这里插入图片描述


多个时间计划任务

# 配置示例--2点半,3点半,4点半执行任务
## 2点30分执行一次任务
## 3点30分执行一次任务
## 4点30分执行一次任务
30 2-4 * * * 命令# 分钟间隔段执行命令
## 2点15分执行一次计划任务
## 2点30分执行一次计划任务
## 2点50分执行一次计划任务
15,30,50 2 * * * 命令# 指定星期6的2:15,2:30,2:50执行计划任务
15,30,50 2 * * 6 命令

间隔时间计划任务

*/表示每隔多长时间执行任务

参考: https://www.runoob.com/w3cnote/linux-crontab-tasks.html

# 每间隔两小时的30分时执行一次计划任务 */2
## 分 时 日 月 星期 (绝对路径)命令
30 */2 * * * 命令# 每间隔2分钟执行一次任务
## 分 时 日 月 星期 (绝对路径)命令
*/2 * * * * 命令# 每周日23点0分自动清理日志
0 23 * * */0 echo " " > /alidata/tunnel.log

每分钟执行一次的任务

# 5个*表示每分钟执行
## &>/dev/null表示禁止发邮件
* * * * * rsync -av 10.0.0.8:/data/www /data/backip &>/dev/null

在这里插入图片描述


计划任务加锁

  • 延时任务
    • 例如重启时任务无法运行。
  • flok锁
    • 例如一个备份没完成,又一个备份开始

在这里插入图片描述


http://chatgpt.dhexx.cn/article/EjUbOgU3.shtml

相关文章

Linux 计划任务

计划任务主要是做一些周期性的任务&#xff0c;目前最主要的用途是定期备份数据。 #分类 ##一次性调度执行 at Schedule one-time tasks with at. 语法格式&#xff1a;at 时间点 例如&#xff1a; [rootBJcoud_computing_hp_hao ~]# at now 2min 2分钟之后 [rootBJcoud_co…

Linux基础之计划任务

在Linux的运维中&#xff0c;我们经常会使用到计划任务&#xff0c;所谓计划任务就是在某个时间让计算机做某件事情。我们可以将计划任务分为一次性的调度执行和循环调度执行。 一、一次性调度执行 一次性调度执行在实际情况中使用少于循环调度执行。在Linux操作系统中使用at &…

linux(计划任务)

一、概念 计划任务就是按照计划定时的去执行任务 二、crond程序--是linux里负责执行计划任务的程序 &#xff08;1&#xff09;使用crontab命令调用crond进程 &#xff08;2&#xff09;crond程序--每隔一分钟去检查是否有计划任务要执行. 2、crond进程的启动、重启、停止 …

Excel2019打开文件时会同时打开一个名为Sheet1的未保存空白工作簿

因为安装了MySQL导致 解决办法&#xff1a; 1、右键EXCEL以管理员身份打开 2、点击“文件”——“选项”——“加载项” 在下方“管理”的下拉框中选择“COM加载项” 点击“转到”&#xff0c;在弹出的界面中取消MySQL For Excel的勾选——确定 再次打开Excel便不会出现打开…

EXCEL每次打开文件都会出现一个空白sheet1窗口

不需要禁用所有加载项&#xff0c;禁用所有的加载项会影响功能&#xff0c;找到COM加载项&#xff0c;转到&#xff0c;取消勾选MySQL的加载项&#xff0c;取消后没有自动创建的sheet1工作簿了&#xff0c;希望有帮助

“EXCEL 文件打开后,显示空白”的解决方法

今天遇到一个很奇怪的问题&#xff0c;一个Excel文件&#xff0c;大小大概50K左右&#xff0c;里面肯定是有内容的。 但打开后&#xff0c;显示的却是空白&#xff0c;如下图&#xff1a; 临时解决方案&#xff1a; 选择打开方式“使用IE打开”&#xff0c;之后弹出的对话框&am…

excel表格打开灰色,没有内容

1、修改注册列表&#xff0c;快捷键 winR,然后输入regedit,回车进入&#xff1b; 2、找 HKEY_CLASSES_ROOT ; Excel.Sheet.12 ; shell ; open ; command ; 3、双击右侧“默认”图标编辑&#xff0c;将数值最后的/dde修改成"%1"&#x1f62d;"%1"与前面的…

已解决:EXCEL每次打开文件都会再出现一个空白sheet1文件

问题描述 安装过MySQL后&#xff0c;它自动关联到excel &#xff0c;以引用其数据源。但是这样一来&#xff0c;每次打开&#xff0c;都会加载一个新的文件sheet1&#xff0c;每次都得手动关闭&#xff1b;在网上搜了一大堆&#xff08;什么禁用相关COM加载项&#xff0c;等等…

Excel2016打开文件空白

安装Office 2016&#xff0c;打开excel文件&#xff0c;显示空白 解决方案 winr,输入regedit定位到HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command将原值修后加上"%1"(包括英文半角双引号,前面有一空格)&#xff0c;修改以后为 "C:\Program Files\Micros…

Excel打开之后没有内容显示一片空白

打开一个有内容的excel表格&#xff0c;发现没有任何显示&#xff0c;一片空白 解决办法&#xff1a; 开始 — 运行 — regedit 修改HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command项默认值 原值&#xff1a; "C:\Program Files\Microsoft Office\Root\Offic…

直接打开xls、xlsx文件,Excel显示灰色空白

。。。 最近我需要使用visio&#xff0c;但是我的office365里没有&#xff0c;于是我下载了一个visio 2016&#xff0c;安装的时候连着office2016一同安装了&#xff0c;不知道能不能共存&#xff0c;之后直接打开xls、xlsx等文件会出现灰色空白&#xff0c;必须进入excel程序…

【软件】Excel打开空白,需要在里面再次选择文件位置打开

前面介绍了Excel打开报错 0xc0000022的解决办法&#xff0c;方法请点击连接&#xff1a; https://blog.csdn.net/qq_26741933/article/details/111225800 但是发现打开表格全部是灰色&#xff0c;需要点击"文件"--“打开” 选择文件位置才能打开&#xff1a; 需要修…

Excel:打开后有空白的Sheet1

我是在装了MySQL 5.8以后&#xff0c;就出现了这个问题。 无论开什么Excel文件&#xff0c;甚至直接打开excel这个程序&#xff0c;都会出现一个空白的Sheet1。 查到了资料&#xff0c;禁用MySQL的加载项即可。 Excel - 文件 - 选项 - 加载项 - MySQL For Excel - 管理选到“…

office2016中EXCEL文件第一次打开是空白文档,第二次才能打开处理方式

1、开始–>运行–>regedit2、修改HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command项默认值。原值&#xff1a;C:\Program Files\Microsoft Office\Root\Office16\EXCEL.EXE增加"%1"&#xff0c;如下&#xff1a; C:\Program Files\Microsoft Office\Root…

解决“打开Excel文件时会同时打开一个名为Sheet1的未保存空白工作簿”的问题

问题描述 在一次偶然的请款下&#xff0c;我发现在打开本机上的所有Excel文件时&#xff0c;都会自动打开一个名为“Sheet1”的未保存的空白工作簿&#xff0c;虽然不影响原有工作簿的使用&#xff0c;但是每次都要手动关闭空白的工作簿&#xff0c;让人很恼火。如果是打开Exce…

关于EasyExcel出现空白数据列的问题

NoArgsConstructor AllArgsConstructor Data Builder public class Title {ExcelProperty(value "字符串标题")private String stringTitle;ExcelProperty(value "日期标题")private Date dateTitle;ExcelProperty(value "数字标题")private …

VBA小代码--确认筛选后的第一个可见单元格的行号

Sub test()MsgBox (Rows("2:" & Rows.Count).SpecialCells(12).Row) End Sub另附vba SpecialCells(Type,Value) 参数说明 下面内容转自https://www.cnblogs.com/hdl217/p/3494790.html Range.SpecialCells 方法可以返回一个 Range 对象&#xff0c;该对象代表与…

Excel VBA:实现自动下拉填充公式至最后一行

问题场景&#xff1a; 如下所示&#xff0c;需要根据B列“项目”内容&#xff0c;查找G-H列中&#xff0c;各个项目是属于支出还是收入&#xff0c;再匹配填充进D列中。 PS&#xff1a;此处通过if()函数识别金额正负输出支出/收入。本文不考虑这种方法&#xff0c;主要是通过…

excel打开空白如何解决

有时候不知道怎么搞的&#xff0c;双击打开某个excel文件&#xff0c;却发现什么也没有&#xff0c;这时怎么办呢&#xff1f; 很简单&#xff0c;修复下&#xff0c;不行就联机修复。 我的是office 365&#xff0c;点击开始–设置–应用&#xff0c;找到office&#xff0c;点…

每次打开excel文件都会出现两个窗口(mysql for excel),一个是空白的sheet1,另一个是自己的文档

目录 一、问题描述 二、问题原因 三、解决步骤 3.1 Office解决步骤 3.2 WPS解决步骤 一、问题描述 每次打开Excel&#xff08;WPS、Office都会出现&#xff0c;当前版本是Office2016&#xff09;文件都会出现两个窗口,一个是空白的sheet1&#xff0c;&#xff0c;另一个是…