Linux服务器查看任务计划,Linux的任务计划

article/2025/9/15 11:47:37

Linux的任务计划

我们在使用系统的过程中,经常需要在以后的某个时间点执行一个任务,而我们又不在机器旁边的时候,比如在半夜时服务器访问的用户很少,宽带资源很充足的时候,要去镜像软件包、重启服务器(虽然Linux很稳定)等,或者需要服务器在每天的特定时间去备份数据库或者做其它周期性的任务。

这时就需要任务计划去满足我们的需求,在Linux中任务计划分为一次性任务计划和周期性任务计划,只在某个时间点执行一次的任务计划,比如:下载镜像、重启服务器等就用一次性任务计划。而需要周期性、重复执行的任务就用周期性任务计划。

一次性任务用at命令,而周期性任务计划用crontab命令

at命令的用法很简单,在命令后跟上一个时间点回车后在at>提示符后输入需要执行的命令,按ctrl+d提交任务即可。

如:在5分钟后执行一次echo命令

3c8ce6380daa33c267ccb0e2e66a02de.png

创建任务后如何查看?使用如下命令就可以:

#at -l或atq

3c8ce6380daa33c267ccb0e2e66a02de.png

任务创建后想要删除怎么办?更简单,使用-d选项加上要删除的任务编号即可。如删除刚刚创建的任务计划

#at -d #

3c8ce6380daa33c267ccb0e2e66a02de.png

但这样一次一条或多条命令输入时不觉得麻烦吗?没关系at很贴心的为你设计了批处理模式,让你一次可以创建多项任务,在使用时需要先准备一个文件,在文件中写入要执行的命令。然后通过-f选项去读取这个文件。比如:在家目录下用vim编辑一个文件,在文件中写入要执行的命令,echo “hello”,ls -l /etc/,当然你可以输入更多的命令。然后保存文件名为at.txt的文件。接着再用at -f ~/at.txt 16:00去执行即可。如下图

3c8ce6380daa33c267ccb0e2e66a02de.png

前面提到的时间点有:now、noon(正午)、midnight(午夜)、teatime(pm4:00)、tomorrow,当然你也可以使用精确的时间,如15:00等。

任务计划执行结果会通过邮件发送给任务提交者,查看邮件时,使用#mail命令,然后输入相应的邮件编号就可以查看邮件内容。如下图:

3c8ce6380daa33c267ccb0e2e66a02de.png

是不是很简单?那么再接着来看看crontab命令。crontab是用来创建周期性任务计划的。也就是说那些需要重复执行的任务就需要用到它,那它是如何实现周期性的呢?在系统中有一个叫crond的守护进程。就是因为它的存在,才得以让我们可以很放心的把这么重要的任务交给它去执行。而cron又分为系统cron和用户cron。

系统cron在/etc/crontab文件中有其详细定义,只要我们按照这个格式去创建任务计划。系统就能很愉快的工作。那么它的格式是什么呢?请看下图:

3c8ce6380daa33c267ccb0e2e66a02de.png

有没有觉得晕?没关系,其实它已经很明确的告诉你要怎么去创建一个任务计划了。但这里我们只是去看这里的字段都是一些什么含义,而不建议去直接修改这个文件。具体什么原因你懂的,Linux可不会阻止你自杀的。比如:rm -rf /这个命令你可以很轻松的去执行,但后果可是很严重的。下面说说里面字段的含义:

SHELL=/bin/bash:用于解释执行任务计划里面的命令的解释器

PATH=/sbin:/bin:/usr/sbin:/usr/bin:PATH环境变量,shell执行命令时会以这些路径下去寻找命令的路径。

MAILTO=root:任务计划的结果发送给谁。

下面的5个*号从左至右分别代表的是分、时、日、月、周。紧接着的是要执行的命令,在写命令时建议使用命令的绝对路径,以免在执行时不能正确解释执行。

那我们要怎样去定义一项任务呢?在这之前先说说*号的有效取值范围以及如何去表示它们:

1.每个时间位都应该使用其可用的有效取值范围内的值;

2.某时间位上的*号表示对应位的所有有效取值;

3.-:连续的时间点取值,如:30-35 7 * * *

4.,:离散的时间点取值,如:5,35 * * * *

5./#:表示在指定范围时间内每隔#一次,如:5-45/3 * * * *

在此文件中每一行表示一个独立的任务。

用户cron是普通用户和管理员(强烈建议用此种方式创建任务计划)以安全的方式创建任务计划的,因为在保存退出后,crontab命令会检查命令是否有语法错误。创建成功后会在/var/spool/cron/目录下创建一个同用户名的文件。而crontab的用法也很简单,在命令后跟上-e选项就可以创建任务计划。

例:每周2、4、6的凌晨3点02分把/etc目录下的文件备份至/backup目录下并以etc_开头后面跟上当天的日期。而后保存即可(友情提示:在命令中使用%时,要记得转义,或者用引号。)。如下图:

3c8ce6380daa33c267ccb0e2e66a02de.png

查看自己的cron任务列表,使用-l选项。如下图就是刚刚创建的任务计划。

3c8ce6380daa33c267ccb0e2e66a02de.png

那么要删除任务计划怎么办?对此我们直接用crontab -e去编辑/var/spool/cron/目录下的文件。如果连这个文件都不想要了?那好办,执行crontab -e后这个文件就被删除,从此一切烦恼就随往事烟消云散了。

当然身为管理员无时无刻不体现着特权,使用-u选项还可以别的用户创建任务计划。请看下图

3c8ce6380daa33c267ccb0e2e66a02de.png

上图创建了一个每天6、9、12、15、18点查看当前系统挂载的所有文件系统,并将结果追加至/tmp/mounts.txt文件中的任务。

-u选项还可以配合-l、-r选项实现查看和移除任务计划。

如果我们创建的任务计划在某天不能正常的执行,比如系统宕机、重启等,别担心还有一个小工具:anacron。

anacron是cron的补充,它的主要功能就是去检查crontab中的任务在过去的一个周期内是否有成功执行。如果没有执行,则在开机以后在系统的某个时间点内让其执行一次,无论周期是否到达。

anacron很完美的解决了我们的忧虑。

原创文章,作者:人字拖,如若转载,请注明出处:http://www.178linux.com/71377


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

相关文章

Linux 计划任务讲解

目录 计划任务 一次性计划任务 长期性计划任务 计划任务 管理员可以编辑自己的和普通用户的计划任务 普通用户只可以编辑自己的计划任务 计划任务根据执行方式分为一次性计划任务、长期性计划任务 一次性计划任务 此计划只执行一次,执行后或就不会再执行了 通…

Linux计划任务-定时任务

Linux计划任务-定时任务 at单次计划任务at命令格式查看at任务取消at计划任务创建1分钟后的单次任务 定时任务分类cron系统任务调度/etc/crontab文件格式 用户任务调度安装crontab conrtab常用添加计划任务指定用户创建计划任务 查看用户的计划任务计划任务日志存储目录查看所有…

Linux 计划任务

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

Linux基础之计划任务

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

linux(计划任务)

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

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

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

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

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

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

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

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

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

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

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

Excel2016打开文件空白

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

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

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

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

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

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

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

Excel:打开后有空白的Sheet1

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

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

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

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

问题描述 在一次偶然的请款下,我发现在打开本机上的所有Excel文件时,都会自动打开一个名为“Sheet1”的未保存的空白工作簿,虽然不影响原有工作簿的使用,但是每次都要手动关闭空白的工作簿,让人很恼火。如果是打开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 对象,该对象代表与…

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

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