了解linux计划任务

本章主要介绍如何创建计划任务
  • 使用 at 创建计划任务
  • 使用 crontab 创建计划任务
有时需要在某个指定的时间执行一个操作,此时就要使用计划任务了。计划任务有两种:
一个是at计划任务,另一个是 crontab计划任务。
下面我们分别来看这两种计划任务的使用方法。
21.1 at
at计划任务是一次性的,到了指定的时间点就开始执行指定的命令,执行完成之后,不会
重复执行这个命令。
首先查看系统中是否存在at计划任务,命令是atq或at -1(字母1),命令如下。
[root@pp ~]# atq
[root@pp ~]# at -l
[root@pp ~]# 

这两个命令都没有任何输出,说明当前系统中并不存在任何计划任务。下面开始创建at计 划任务,at的用法如下。

1 at 时间点 <按【Enter】键>
2 > 输入要执行的命令
3 Ctrl+D 提交
例如,要在2025年12月12日执行hostname命令,命令如下。
[root@pp ~]# at 2025-12-12
warning: commands will be executed using /bin/sh
at> hostname
at> <EOT>
job 1 at Fri Dec 12 00:35:00 2025
[root@pp ~]# 
这里只是指定了日期,并没有指定在2025年12月12日的几点执行。那么,创建这个计划
任务时是几点几分,例如,这里是在19点11分创建的at计划任务,那么到了2025年12月12
日的19点11分就要自动执行hostname命令了。
如果要指定某个时间点,格式如下。
1 at 时间 日期 <按【Enter】键>
2 > 输入要执行的命令
3 Ctrl+D 提交
注意
(1)这里是24小时制的,所以10:00指的是上午10点,如果想指定下午10点,则要写成22:00。
(2)写时间最多只能精确到分,不能精确到秒。
这里上午用am表示,下午用pm表示。例如,要在2025年12月12日下午10点执行
hostname命令,命令如下。
[root@pp ~]# at 10pm 2025-12-12
warning: commands will be executed using /bin/sh
at> hostname
at> <EOT>
job 2 at Fri Dec 12 22:00:00 2025
[root@pp ~]# 
at也支持某天之后的某个时间点运行一个命令。例如,要在3天之后的下午4点执行,
hostname命令,命令如下。
[root@pp ~]# at 4pm + 3days
warning: commands will be executed using /bin/sh
at> hostname
at> <EOT>
job 3 at Mon Dec 11 16:00:00 2023
[root@pp ~]# 
这里“+”两边有没有空格都可以,days可以换成weeks,表示3周之后的下午4点。
用关键字tomorrow,如果使用关键字tomorrow,则不需要加“+”,命令如下。
[root@pp ~]# at 4pm tomorrow
warning: commands will be executed using /bin/sh
at> hostname
at> <EOT>
job 4 at Sat Dec  9 16:00:00 2023
[root@pp ~]# 
上面的两条命令都是表示第二天的下午4点执行hostname命令。

如果要表示几分钟或几小时之后,可以用关键字now。例如,要在2小时之后执行
hostname命令,命令如下。
[root@pp ~]# at now+2hours
warning: commands will be executed using /bin/sh
at> hostname
at> <EOT>
job 5 at Fri Dec  8 02:40:00 2023
[root@pp ~]# 

21.2 crontab

at计划任务是一次性的,执行完成就结束,不会重复执行。如果想定期执行某个任务,例
如,每周日凌晨2点执行一个命令,这时就要用到crontab了。
查看当前用户是否有 crontab计划任务,可以用crontab-1命令。如果要查看其他用户是
否有crontab计划任务,可以用“crontab -1-u用户名”命令,不过-u选项只有root才能
用。
步骤①:使用root用户查看自己有没有crontab计划任务,命令如下。
[root@pp ~]# crontab -l
no crontab for root
[root@pp ~]# 
步骤②:使用root用户查看iu用户是否有crontab计划任务,命令如下。
[root@pp ~]# crontab -l -u iu
no crontab for iu
[root@pp ~]# 
创建crontab计划任务的命令是crontab -e,如果为其他用户创建crontab计划任务,则
用“crontab -e -u用户名”命令。当使用crontab-e命令时,会打开一个临时文件,用与
vim 一样的语法来编辑此文件即可。先按【i】键进入插入模式,编辑完成之后,按【Esc】
键退回到命令模式,在末行模式中输入“wq”保存退出。在此文件中凡是以“#”开头的,都
是注释行。
crontab定义计划任务的语法如下。
1 分 时 天 月 周 命令
注意
因为在crontab中使用的并非系统的PATH变量,所以此处语法中要执行的命令最好能加上路径,
例如,要执行ifconfig命令,则写作/sbin/ifconfig;要执行hostname命令,则写作
bin/hostname。命令的路径可以通过which命令来查询。

几个时间单位的意义如下。
(1)分:几点几分的分。
(2)时:几点,24小时制。
(3)天:几号。
(4)月:几月份。
(5)周:星期几。
这几个时间单位可以用空格,也可以用【Tab】键来分隔。
如果不考虑某个时间单位,例如,不管今天是几号,只要不是周末我们就上班,不考
虑“天”的情况下,那么可以用*表示。
这里每个时间点都可以写多个值,用英文逗号“,”隔开,例如,在分的位置写“0,1.,5,10",
表示0分、1分、5分、10分。
也可以用横杠“-”表示“到”的意思,例如,在分的位置写“0-10”,表示0到10分。
这里“0-10”的完整写法是“0-10/1”,表示从0分到10分的每一分钟,从0开始每次增
加1,然后到10。如果表示“每N分钟”,则写成“0-10/N”,例如,0到10中每2分钟,则
写成“0-10/2”,表示0分、2分、4分、6分、8分、10分。
练习1:每天上午7点整执行hostname命令,如果写成如下命令。
1 # 分 时 天 月 周
2 * 7 * * * hostname
这种写法是不对的,第一个位置是分,这里写成了*,表示7点的每一分,包括0分、1
分……但是所谓7点整的意思是7点0分,所以要写成如下命令。
练习2:每周一到周五的上午7点整执行hostname命令,命令如下。
1 # 分 时 天 月 周
2 0 7 * * 1,2,3,4,5 hostname
现在最终的crontab计划任务内容如下。
[root@pp ~]# crontab -l
0 7 * * * hostname
0 7 * * 1,2,3,4,5 hostname[root@pp ~]
如果要编辑 crontab计划任务,通过crontab -e来重新编辑;如果要删除,执行 crontab -
r命令即可
普通用户也是可以创建crontab计划任务的,如果不想让这个用户创建crontab计划任务,
则把这个用户写入/etc/cron.deny中即可,一行一个用户。这个文件默认为空,命令如下。
[root@pp ~]# cat /etc/cron.deny 
[root@pp ~]# 
如果不希望iu用户创建crontab计划任务,则把tom用户写入这个文件中,命令如下。
[root@pp ~]# echo iu > /etc/cron.deny 
[root@pp ~]# cat /etc/cron.deny 
iu
[root@pp ~]# 
如果又想让 tom用户可以创建crontab计划任务,有以下两种方法。
(1)把tom用户从/etc/cron.deny 中删除,这种方法大家自行练习。
(2)创建/etc/cron.allow,这个文件默认不存在,把tom用户名写到此文件中,命令如
下。
[root@pp ~]# echo > /etc/cron.allow
[root@pp ~]# 
现在tom既出现在/etc/cron.allow中,又出现在/etc/cron.deny中
在第二个标签中用tom登录,crontab计划任务是能够创建的。
系统中也自带一些crontab计划任务,在/etc 中存在几个以cron开头的目录,命令如下。
[root@pp ~]# ls /etc/cron*
/etc/cron.allow  /etc/cron.deny  /etc/crontab/etc/cron.d:
0hourly  raid-check/etc/cron.daily:
logrotate/etc/cron.hourly:
0anacron/etc/cron.monthly:/etc/cron.weekly:
[root@pp ~]# 
每天都会执行一次/etc/crondaily中的脚本,每小时都会执行一次/etc/cron.hourly中的
脚本,每月都会执行一次/etc/cron.monthly中的脚本,每周都会执行一
次/etc/cron.weekly中的脚本。

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

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

相关文章

Python 几个简单的案例

1.1 作业讲解 输入一个数字&#xff0c;求解此数字的所有因子之和&#xff01; 如 6 的因子有 1&#xff0c;2&#xff0c;3&#xff0c;6&#xff0c;所有因子相加 123612 numint( input("请输入一个数字:")) #两个核心逻辑&#xff1a; 因子&#xff0c;求和 s0 fo…

c++实验多态程序设计

运行程序&#xff0c;分析结果。 #include <iostream> using namespace std; class B { public: virtual void f1(double x) { cout<<"B::f1(double)"<<x<<endl; } void f2(double x) { cout<<"B::f2(double)"<<…

IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Mybatis中参数传递问题

第一章 Mybatis中参数传递问题 1.1 单个普通参数 可以任意使用&#xff1a;参数数据类型、参数名称不用考虑 1.2 多个普通参数 Mybatis底层封装Map结构&#xff0c;封装key为param1、param2…【支持&#xff1a;arg0、arg1、…】 1.3 命名参数 语法&#xff1a; Param(val…

时间序列预测实战(二十五)PyTorch实现Seq2Seq进行多元和单元预测(附代码+数据集+完整解析)

一、本文介绍 本文给大家带来的时间序列模型是Seq2Seq&#xff0c;这个概念相信大家都不陌生了&#xff0c;网上的讲解已经满天飞了&#xff0c;但是本文给大家带来的是我在Seq2Seq思想上开发的一个模型和新的架构&#xff0c;架构前面的文章已经说过很多次了&#xff0c;其是…

MySQL数据库,函数与分组

单行函数&#xff1a; 操作数据对象 接受参数返回一个结果 只对一行进行变换 每行返回一个结果 可以嵌套 参数也可以是一列或一个值 数值函数 基本函数&#xff1a; 注&#xff1a;ROUND(x,y)函数的y是负数时&#xff0c;即往高位进行四舍五入&#xff0c;如-3就是按百位…

Python-函数详解(局部、全局变量)

函数:一段可以被重复利用的代码 函数定义&#xff1a; def 函数名 (参数) 函数体 return 返回值(可有可无) def 函数名()#函数参数#函数体return #返回值&#xff08;可有可无&#xff09; 函数的调用&#xff1a;先定义&#xff0c;后调用 警告和错误&#xff1a; …

出生率持续下降,而低代码,成了!

低代码这个概念在IT界应该是火了很久&#xff0c;在十年前就有低代码的概念。 在最初的时候&#xff0c;我们都是用高级语言或者脚本来开发页面或者应用&#xff0c;比如Java、C&#xff0c;前端会使用Vue、React等等。但是我们发现经常写的功能或者页面都是重复的&#xff0c;…

Python实现内网穿透和端口转发代理

对于大型的爬虫项目&#xff0c;肯定需要有良好的反爬机制&#xff0c;还应该配合代理iP使用&#xff0c;只有这两种结合才能让你的爬虫更高效准确。今天我就借用我一点空闲时间&#xff0c;来谈一谈有关python爬虫网络方面的解决方案&#xff0c;这里提供内网穿透和端口转发两…

分治法解决众数重数

问题 D: 22-数组-2-众数问题 [命题人 : 外部导入] 时间限制 : 1.000 sec 内存限制 : 128 MB 题目描述 问题描述&#xff1a; 给定含有n个元素的多重集合S&#xff0c;每个元素在S中出现的次数称为该元素的重数&#xff0c;其中重数最大的元素称为众数。 例如&#xff0c;S{1&a…

基于多波束和时间调制平均的相位量化栅瓣抑制方法极其性能极限

概要 为了抑制相位量化所导致的量化栅瓣,在波束合成中引入随机虚拟相移(RVPS,Random Virtual Phase Shift),采用多波束平均(MBS,Multi-beam Average)或时间调制平均(TMA,Time-Modulated Average)方法实现了对量化栅瓣的抑制,仿真验证了方法的有效性及限制,并进一…

印刷企业实施数字工厂管理系统有几个步骤

随着科技的飞速发展&#xff0c;许多传统行业正面临着前所未有的挑战。印刷行业也不例外&#xff0c;尤其在面对生产效率低下&#xff0c;资源浪费严重等问题时&#xff0c;数字工厂管理系统的实施成为了必然选择。那么&#xff0c;印刷企业实施数字工厂管理系统具体有几个步骤…

echarts 柱状图 定时自动轮播(非提示框轮播)

看了很多文档都是实现提示框轮播的&#xff0c;而我要实现的功能是&#xff1a;柱状图有多条数据时&#xff0c;轮播展示其中几条&#xff0c;比如我有100条数据&#xff0c;不能全部展示&#xff0c;设置轮播5条或者10条&#xff0c;依次显示数据&#xff0c;并形成闭环。 &a…

zabbix配置snmp trap--使用snmptrapd和Bash接收器--图文教程

1.前言 我的zabbix的版本是5.0版本&#xff0c;5.0的官方文档没有使用bash接收器的示例&#xff0c;6.0的官方文档有使用bash接收器的示例&#xff0c;但是&#xff0c;下载文件的链接失效&#xff1f;&#xff01; 这里讲解zabbix-server端配置和zabbix web端配置 2.zabbix-…

11、pytest断言预期异常

官方用例 # content of test_exception_zero.py import pytestdef test_zero_division():with pytest.raises(ZeroDivisionError):1/0# content of test_exception_runtimeerror.py import pytestdef test_recursion_depth():with pytest.raises(RuntimeError) as excinfo:def…

高效的单行python脚本

#-- coding: utf-8 -- “”" Created on Wed Dec 6 13:42:00 2023 author: czliu “”" 1. 平方列表推导 #使用列表推导法计算从 1 到 10 的数字平方 squares [x**2 for x in range(1, 11)] print(squares)2.求偶数 #可以使用列表推导式从列表中筛选偶数。还可以…

【Docker】 Docker attach 命令卡死的解决方案

在启动较早期的容器时&#xff0c;出现了使用 docker attach container_name 命令后卡死的问题。本文介绍了如何解决该问题。 首先&#xff0c;在使用 docker attach container_name 命令前需要先保证容器已经开启。此时&#xff0c;输入 docker attach container_name 命令后…

ncnn模型部署——使用VS2019把项目打包成DLL文件

一、项目打包成DLL文件 1.创建动态链接库DLL项目 创建完成&#xff0c;项目中包含源文件dllmain.cpp, pch.cpp&#xff0c;头文件framework.h, pch.h 2.编写和配置DLL项目 &#xff08;1&#xff09;配置pch.h文件&#xff0c;在头文件pch.h中定义宏&#xff0c;宏的作用的是…

【PyTorch】模型

文章目录 1. 模型的创建1.1. 创建方法1.1.1. 通过使用模型组件1.1.2. 通过继承nn.Module类 1.2. 将模型转移到GPU 2. 模型参数初始化3. 模型的保存与加载3.1. 只保存参数3.2. 保存模型和参数 1. 模型的创建 1.1. 创建方法 1.1.1. 通过使用模型组件 可以直接使用模型组件快速…

【Unity动画】Unity 2D动画创建流程

本文以2D为案例&#xff0c;讲解Unity 播放动画的流程 准备和导入2D动画资源 外部导入序列帧生成的 Unity内部制作的 外部导入的3D动画 2.创建动画过程 打开时间轴Ctrl6 选中场景中的一个未来需要播放动画的物体 回到时间轴点击Create一个新动画片段 拖动2D动画资源放入…

什么是SPA(Single Page Application)?它的优点和缺点是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…