Linux系统的计划任务

本文介绍了Linux系统中如何管理计划任务,包括周期性任务的crontab命令使用,如编辑周期性任务、命令格式、实例及权限设置;一次性计划任务的at命令,包括其简介、命令格式、时间设置和实例;还讲解了如何通过crontab执行.sh脚本以及权限控制。内容详细,覆盖了从基本概念到实际操作的多个方面。
摘要由CSDN通过智能技术生成

一、周期性计划任务-crontab

1、命令简介

按照预先设置的时间周期重复执行用户指定的命令操作;执行此命令需要运行守护进程:crond,但是现在系统一般都是自动运行的。
主要配置文件
全局配置文件:/etc/crontab
系统默认的设置:/rtc/cron.*/
用户定义的设置:/var/spool/cron/用户

其中全局配置文件内容看一下:/etc/crontab

在这里插入图片描述

、命令格式

在这里插入图片描述

在这里插入图片描述

3、命令选项crontab
编辑周期性任务

-e:编辑周期性任务;打开vi编辑器,最好加上绝对路径
-l:查看周期性任务

修改周期性任务

-e:打开vi编辑器进行删除操作
-r:删除当前用户所有的任务;慎用!

超级用户root可以通过命令管理其他用户

-u 用户名 -e
-u 用户名 -l
-u 用户名 -r

4、实例
每月10日10点复制/etc/hostname 到opt目录下,并查看任务
首先查询cp的绝对路径

crontab -e
crontab -l

每三天的16点复制文件:0 16 *3/ * * /usr/bin/cp -p/erc/hostname /opt
0 0 1 * *:每天12点(0代表12点)
50 7 * * * :每天7点50
0 * */5 * * :每隔5天的每个整点
crontad -u zhangsan -e:通过用户zhangsan创建任务计划

二、一次性计划任务

1、at命令简介
at命令允许指定Linux系统何时运行脚本,at命令会将作业提交到队列中,指定shell在何时运行该作业。at的守护进程atd会以后台模式运行,检查作业队列来运行作业。atd守护进程会检查系统上的一个特殊目录来获取at命令的提交的作业。默认情况下,atd守护进程每60秒检查一次目录。有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业

2、at命令格式
在使用at命令的时候,一定要保证atd进程启动

at [ HH:MM] [yyyy-mm-dd] //创建一次性任务;若在任务内创建系统已存在的文件,会更改文件的创建时间为当前
ctrl+d   //结束at命令的输入
atq:查询一次性任务:查询没有完成的任务,完成时间之前
atrm id号:删除一次性的任务
/var/spool/at/:计划任务的存储目录
/var/spool/mail:到执行任务时间时,不会显示在前台进行,系统会发送一个邮件mail,进入存储目录查询

3、时间设置
at允许使用一套相当复杂的指定时间的方法

at now +2min:2分钟之后执行创建的任务
at teatime:默认代表当天下午四点执行任务
at teatime +3day:代表三天后的下午四点执行任务
at noon:默认代表当天中午12点
at May 30 2021:2021530日执行任务
at 3pm:下午三点执行任务

4、实例
2天后晚上8点拷贝网卡配置文件到/op目录下,3天后中午12点再把拷贝的文件
/etc/sysconfig/network- scripts/ifcfg- ens33 //网卡配置文件

[root@localhost ~]$at 8pm +2day
at> cp -p /etc/sysconfig/network-scripts/ifcfg-ens33 /opt/ens33.bak
at> <EOT>
job 11 at Sat May 15 20:00:00 2021
[root@localhost ~]$at noon +3day
at> cp -p /opt/ens33.bak /etc/sysconfig/network-scripts/ifcfg-ens33
at> <EOT>
job 12 at Sun May 16 12:00:00 2021

三、计划任务crontab执行.sh脚本

实验步骤如下,结合实例说明

新建一个目录(可以是你当前的项目,如果.sh脚本执行结果和你项目相关的话。如果是系统本身相关的,建议放在其他位置)

cd /opt

在新建的目录下创建一个hell.sh文件内容:echo “hello world”

vim hello.sh
echo “hello world”

  1. 运行脚本文件的两种方法
sh hello.sh【hello.sh可以没有x权限】
使用绝对路径运行脚本文件:/opt/hello.sh【需要赋予执行权限】
赋予文件属主执行权限:执行chmod u+x hello.sh;

在这里插入图片描述

/opt/hello.sh 就变成一个命令
crontab -e:打开计划任务的列表

将内容写入计划任务表

*/1 * * * *  /opt/hello.sh (需赋予可执行权限的内容)

四、计划任务crontab权限设置

crontab默认所有用户都可以执行crontab设置计划任务。若有需要可以通过在/etc/cron.deny中添加用户来禁止该用户设置计划任务,也可以自行创建/etc/cron.allow来使用白名单

黑名单cron.deny目录:/etc | grep “cron.deny”

在这里插入图片描述

当系统安排任务计划时

查找allow文件–>查找deny文件
若两个文件中存在同一用户,因为allow权限更高,所以还是允许该用户创建计划任务
白名单是系统默认没有的,需要自己创建cron.allow//vim cron.allow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值