Linux系统延时任务和定时任务

系统延时任务——at

简介

  • at命令可以指定某一任务在将来的特定时间运行。该作业可能是一次备份,对您系统的检查或者特定时间发送的通知。那些需要花费很长时间才可以完成的作业正适合at命令。仅需要使用at命令即任务设置为在一分钟或者两分钟之后运行。然后您便可以安全注销,因为该任务会在与shell会话断开连接的情况下运行。

  • at命令必须指定命令应运行的时间。该指定可以是具体的时间或者日期(例如星期一,10:00pm或者7月15日)。也可以是当前时间的相对时间(现在时间加上5分钟,现在时间加上3天或者4:00pm加上一周),通过添加其他选项,可以在任务完成时发送邮件(-m),或者从文件中读取任务(-f 文件),而无需通过标准输入进行。

  • 具体操作:在输入at命令之后,“ENTER”继续键入作业中包含的其他命令,任务可由多个命令组成。在完成键入要运行的命令时,在单独出现的一行“ctrl+d”完成任务。

在shell中输入: at 2:00
at> touch file   任务
at> <EOT>     Ctrl+D结束指定
job 1 at Thu May  9 02:00:00 2019   延时任务编号/执行时间等信息

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

命令含义
at -l查看延时任务列表
at -c job号查看job号对应的任务内容
at -r job号取消对应job号任务内容

延时任务黑名单

vim	/etc/at.deny		写入系统普通用户,则此用户不能使用延时任务

在这里插入图片描述

延时任务白名单(优先级高)

  • 系统中默认没有白名单,我们要按照黑名单的格式新建一个白名单,只有白名单内用户能使用at
  • vim /etc/at.allow
    注意:白名单如果存在,则黑名单不被读取,如果黑白名单都写了student用户,那么黑名单失效,student是唯一可以创建延时任务的用户。

系统定时任务——crontab

简介

  • cron是管理设备必须按计划定期重复执行的程序。后台程序crond每分钟唤醒一次,用户使用crontab命令计划个人任务。
命令含义
crontab -l列出定时任务
crontab -r删除定时任务
crontab -e编辑定时任务内容
crontab -u student -e编辑student用户的定时任务

注意:crontab -u 这个命令只有root用户才能执行,即帮助其他的用户新建或者删除crontab定时任务。

  • crontab -e 编辑定时文件格式为:
* * * * *        command(必须是绝对路径)(而且必须有执行权限x)
 
– 第一个*---------- 分钟   0-59
– 第二个*---------- 小时   0-23
– 第三个*---------- 天    1-31
– 第四个*---------- 月    1-12
– 第五个*---------- 周    0-7
cron语法命令何时运行
05 * * * *每小时整点过5分
05 02 * * *每天的2:05
05 02 01 * *每月第一天2:05
05 02 01 12 *12月1号02:05
30 18 * * 5每个周五下午18:30
*/2 * * * *每隔2分钟
*/5 9-17 1,15 * *每月的1号或15号的早上9:00到晚上17:00之间每隔5分钟
0 10 1 1 51月1号的0:10和1月的每个周五0:10
  • 注意:属于系统的任务通常保存在 /etc/crontab 文件中而不是使用crontab -e 编辑保存在个人文件中。更好的做法是用文本编辑器创建 crontab 文件并保存到 /etc/cron.d 中 ( 避免更新系统软件包 cronie 时出现问题 ) 。
    对于每天、每周、每月运行一次的脚本,可以直接将其设为可执行文件,并保存在/etc/cron.{daily,weekly,monthly}目录。

定时任务的黑名单&白名单

  • 黑名单 /etc/cron.deny,在黑名单中的用户不能执行crontab 命令
    但root用户可以执行crontab -u -e 命令编辑文件并执行
  • 白名单 /etc/cron.allow中写入用户名,除此用户外的其他任何用户都不可以执行定时任务。

脚本执行定时任务

  • 我们上面说了,最好的做法是把创建好的脚本放入到/etc/cron.d对应目录中,那么如何实现呢?
  • (1)首先,在相关目录创建相关脚本,并给其执行权限x.
vim /mnt/test.sh
写入:
#!/bin/bash
touch /mnt/file{1..3}
注意:chmod +x test.sh

在这里插入图片描述

  • (2)然后,vim /etc/cron.d/test
写入:
* * * * * root   run-parts    /mnt

在这里插入图片描述
在这里插入图片描述

系统中的临时文件

  • 系统中服务在正常运行时会产生临时文件。
    在 /usr/lib/tmpfiles.d/ 会标识服务的临时文件存放位置。
vim /usr/lib/tmpfiles.d/test.conf
按照其他配置文件的格式写入:
文件类型,要变成临时的文件位置,权限,所属用户及组,多长时间后可以清理

在这里插入图片描述
在这里插入图片描述

systemd-tmpfiles --create /usr/lib/tmpfiles.d/*      ##创建临时目录,也就是这里的配置文件中指定的目录将会变成临时文件,倒计时后会可以被清理
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/*     ##清理目录下的失效文件

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux中,我们可以使用cron和at命令来创建定时任务延时任务。cron是一个在后台运行的守护进程,它可以根据预定的时间表执行命令或脚本。而at则是一种命令行工具,可以在指定的时间执行一次性任务。 1. 定时任务Linux系统中,定时任务可以使用cron命令进行配置。cron命令允许用户在指定的时间间隔内从命令行或脚本中运行命令。 在cron中,时间间隔由5个字段来定义: ``` * * * * * command to be executed - - - - - | | | | | | | | | +----- day of the week (0 - 6) (Sunday=0) | | | +------- month (1 - 12) | | +--------- day of the month (1 - 31) | +----------- hour (0 - 23) +------------- min (0 - 59) ``` 例如,要在每周一的早上5点运行一个脚本,可以使用以下命令: ``` 0 5 * * 1 /path/to/script.sh ``` 这将在每天的5:00 AM执行/path/to/script.sh脚本,只有当日期为周一时才会执行。 2. 延时任务Linux系统中,我们可以使用at命令来创建延时任务。at命令允许用户在指定的时间运行一次性任务。 使用at命令创建一个延时任务的基本语法格式如下: ``` at TIME <<EOF command1 command2 ... EOF ``` 其中TIME可以是绝对时间或相对时间,也可以使用日期和时间的组合。例如,以下命令将在10分钟后运行命令: ``` at now + 10 minutes <<EOF /path/to/command EOF ``` 此外,也可以使用at命令来指定一个具体的时间运行命令: ``` at 2:00am tomorrow <<EOF /path/to/command EOF ``` 这将在明天的凌晨2点运行命令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值