Linux任务计划

本文介绍了Linux系统中at和cron两种任务调度工具的基本用法,包括at命令的一次性任务执行、cron的周期性任务设置,以及它们之间的区别。详细解释了如何创建、查看、编辑和删除这些任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

at任务

单次定时执行任务

at命令:at [option] TIME

u 常用选项:

-V 显示版本信息:

-l: 列出指定队列中等待运行的作业;相当于atq

-d: 删除指定的作业;相当于atrm

-c: 查看具体作业任务

-f /path/from/somefile:从指定的文件中读取任务

-m:当任务被完成之后,将给用户发送邮件,即使没有标准输出

u 注意:作业执行命令的结果中的标准输出和错误以邮件通知给相关用户

u TIME:定义出什么时候进行 at 这项任务的时间

HH:MM [YYYY-mm-dd]

noon, midnight, teatime4pm

tomorrow

now+#{minutes,hours,days, OR weeks}

u执行方式:

1)交互式 2)输入重定向 3at –f 文件

uat队列存放在/var/spool/at目录中

u/etc/at.{allow,deny}控制用户是否能执行at任务

白名单:/etc/at.allow 默认不存在,只有该文件中的用户才能执行at命令

黑名单:/etc/at.deny 默认存在,拒绝该文件中用户执行at命令,而没有在

at.deny 文件中的使用者则可执行

如果两个文件都不存在,只有 root 可以执行 at 命令

例如,

                 taskplan1.png

 

 

周期性计划任务cron

 

命令及程序包

            taskplan2.png

 

确保服务运行:

      CentOS 7: systemctl status crond

      CentOS 6: service crond status

         taskplan3.png

 

系统cron任务:系统维护作业

/etc/crontab文件中设置

         taskplan4.png

其中本身带有配置信息的使用规则:

第一位*代表每分钟,可取值0-59,例如取值5则表示每小时的05分开始执行

第二位*代表每小时,可取值0-23,例如取值1则表示每天的1点(AM

第三位*代表每月的哪一号,可取值1-31

第四位*代表一年的哪一月份,可取值1-12

第五位*代表星期几,可取值(0-6)星期天是0

如果所在位数是*则代表,每xx时间执行,所有都是*则代表每分钟执行

 

例如,

下图第一个任务表示 65145分已root身份运行free -m >>  /data/memstat.log

第二个任务表示每个星期二的145分已root身份运行free -m >>  /data/memstat.log

                taskplan5.png 

 

用户cron任务:

因为这里是root执行crontab -e所以这里表示root用户每10分钟执行一次后面的任务

taskplan6.png

crontab命令定义

每个用户都有专用的cron任务文件: /var/spool/cron/USERNAME

crontab命令: crontab [-u user] [-l | -r | -e] [-i] -l: 列出所有任务

      -e: 编辑任务

      -r: 移除所有任务

      -i:同-r一同使用,以交互式模式移除指定任务

      -u user: root可运行,指定用户管理cron任务

控制用户执行计划任务: /etc/cron.{allow,deny}

    crontab -e 命令


         at和crontab的区别         

 


atcrontab

一次性作业使用重复性作业使用crontab Create
Createat timecrontab   -e
Listat -lcrontab   -l
Detailsat -c jobnumN/A
Removeat -d jobnumcrontab   -r
EditN/Acrontab   -e


其他注意事项:

    没有被重定向的输出会被邮寄给用户

    根用户能够修改其它用户的作业

         crontab的日志信息:/var/log/cron*

 


### 配置和管理 Linux 系统中的 Cron 定时任务 #### 使用 `crontab` 命令创建和编辑定时任务 为了管理和配置个人用户的定时任务,可以通过 `crontab -e` 编辑当前用户的 crontab 文件。此命令会打开默认的文本编辑器,在其中可以定义新的定时任务或者修改已有的条目[^3]。 对于系统级别的全局 cron 任务,则通常位于 `/etc/crontab` 或者 `/etc/cron.d/` 目录下的文件中进行设定。这些位置允许管理员为整个系统安排周期性工作而不局限于单个用户账户。 #### 设置具体的调度时间和频率 每一条 cron 表达式由五个字段组成,分别代表分钟、小时、日期、月份以及星期几,后面跟着要执行的具体命令或脚本路径。例如: ```bash 0 * * * * /usr/bin/command_to_run_every_hour.sh ``` 上述例子表示每天每隔一小时整点时刻运行指定 Shell 脚本。 另外还存在一些特殊的字符串简化写法来表达常见的间隔模式,比如 @daily (每日凌晨), @hourly (每小时),@reboot (每次重启之后立即执行一次)等特殊关键词可用于更方便地描述某些固定时间触发条件[^4]。 #### 控制哪些用户能够使用 Cron 功能 如果希望限制谁可以在服务器上建立自己的计划任务列表,那么就需要关注两个特别重要的文件——`cron.allow` 和 `cron.deny`. 当两者都为空的时候,默认情况下所有合法登录系统的用户都可以拥有自己独立的一份 crontab;但如果指定了某个用户名到 deny 列表里边的话就会被禁止访问该特性除非同时也出现在 allow 名单之中. #### 启动与监控 Cron 服务的状态 确保 cron 的守护程序正在运行是非常必要的。可以通过如下指令开启并验证其活动状况: ```bash service crond start # 开启服务 service crond status # 查询状态 ``` 以上操作适用于基于 Red Hat/CentOS 发行版系列的操作环境; 对于 Debian/Ubuntu 用户而言可能需要替换为 `sudo systemctl start cron` 及相应变体形式。 #### 记录日志以便后续审计追踪 大多数现代发行版本都会自动将 cron 执行的日志记录至 syslog 中去, 一般存放在 `/var/log/syslog` 或者专门针对此类事件设立的日志文件如 `/var/log/cron.log`, 这取决于具体平台上的配置情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值