Linux定时任务详解&crontab -e 编辑之后如何保存并退出(Ubuntu)

这篇具有很好参考价值的文章主要介绍了Linux定时任务详解&crontab -e 编辑之后如何保存并退出(Ubuntu)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

crontab -e 编辑之后如何保存并退出(Ubuntu)

1. 保存

操作命令如下:

  • crontab -e 打开crontab的配置文件,并编辑完成
  • Ctrl + O 写入内容, 出现File name to Write ...,输入Enter
  • Ctrl +X 保存并输出,保存完成
  • service cron restart, 重启crontab定时任务
2. 验证

两种验证方式:

  • 使用crontab -e命令打开任务配置文件,此时可以看到刚才保存的定时任务列表
  • 使用crontab -l命令,查看正在执行的任务列表, 如图所示:
    crond脚本修改后,Linux,linux,ubuntu,运维,定时任务

一、什么是Linux定时任务

Linux定时任务是一种可执行的命令或者脚本,在特定的时间或者时间间隔下自动执行。通过在系统中预设一些需要执行的任务,可以让Linux定时任务自动执行并完成这些任务。定时任务可以用于自动备份、系统清理、监控、自动化维护等任务。

在Linux中,常用的定时任务程序有系统自带的cron和at命令。其中,cron是一个强大的定时任务工具,可以按照设定的实际时间执行命令,非常常用。

二、at一次性定时任务

1.确定at安装
# at服务是否安装
chkconfig --list | grep atd
# at服务的启动
service atd restart
# 对于d结尾的服务,这里d代表daemon,守护进程,一般是作为系统服务
2.at的访问控制
  1. 如果系统中有 /etc/at.allow 文件,那么只有写入该文件(白名单)中的用户可以使用 at 命令( /etc/at.deny 文件会被忽略)
  2. 如果系统中没有 /etc/at.allow 文件,只有 /etc/at.deny 文件,那么写入该文件(黑名单)中的用户不能使用 at 命令,对root不起作用(系统默认有该文件而没有allow文件)
  3. 如果系统中这两个文件都不存在,那么只有root用户可以使用 at 命令
3.at命令

语法:at [选项] 时间
-m: 当at工作完成后,无论是否命令有输出,都用email通知执行at命令的用户

-c 工作号: 显示该at工作的实际内容时间
crond脚本修改后,Linux,linux,ubuntu,运维,定时任务

atq #查询当前服务器上的at工作
atrm [工作号] #删除指定的at任务

4.命令示例

1.在两分钟之后执行hello.sh脚本,在at提示符输入具体的任务后:/root/hello.sh,按 ctrl + d 保存并退出
通过 atq 查看该定时任务,通过 at -c 1 查看该任务内容

[root@localhost ~]# at now +2 minutes
at> /root/hello.sh                                       
at> <EOT>
job 1 at 2019-03-09 22:51

2.在指定的时间重启服务器(生产环境不建议)

[root@localhost ~]# at 02:00 2019-03-10
at> /bin/sync
at> /sbin/shutdown -r now

三、crontab循环定时任务

1.crond服务管理
chkconfig --list | grep crond  #确认是否安装该服务
service crond status  #确认服务是否开启
chkconfig crond on  #设置自启动
yum -y install vixie-cron crontabs  #安装cron服务
2.访问控制
  1. 当系统中有 /etc/cron.allow 文件时,只有写入此文件的用户可以使用 crontab 命令,如果有此文件,/etc/cron.deny文件会被忽略
  2. 当系统中只有 /etc/cron.deny 文件时,则写入此文件的用户不能使用 crontab 命令
3.crontab命令

语法:crontab [选项]
-e: 编辑crontab定时任务
-l: 查询crontab任务
-r: 删除当前用户所有的crontab任务

注意事项

  1. 编辑任务其实是在vim编辑器中进行,所以如果只想删除某个指定的定时任务,直接编辑crontab,删除该行命令即可
  2. 执行 crontab 命令会将当前用户登录的身份绑定在 crontab 命令中,也就是说用户执行的任务不能超出当前用户的权限
4.格式说明

执行 crontab -e 命令会打开vim编辑你的工作
任务具体格式是:* * * * * 执行的任务

crond脚本修改后,Linux,linux,ubuntu,运维,定时任务
特殊符号的含义
crond脚本修改后,Linux,linux,ubuntu,运维,定时任务
示例
crond脚本修改后,Linux,linux,ubuntu,运维,定时任务

4.简单演示
# 测试定时任务,每1分钟输出一句话到文件中
*/1 * * * * echo "silly" >> test.log 
# 每周二5点5分重启服务器,仅测试(不推荐定时重启,容易出错)  
5 5 * * 2 /sbin/shutdown -r now  
# 每月1,10,15号凌晨5点整执行备份脚本
0 5 1,10,15 * * /root/sh/autobak.sh
5.格式注意事项

六个选项都不能为空,必须填写。如果不确定使用“*”代表任意时间
crontab定时任务,最小有效时间是分钟,最大时间范围是月,像2018年某时执行,3点30分30秒这样的时间都不能识别
在定义时间时,日期和星期最好不要在一条定时任务中出现,因为它们都是以天作为单位,非常容易让管理员混乱
在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都是用绝对路径(因为定时任务有定义自己的PATH)

四、系统的crontab设置

“crontab -e” 是每个用户执行的命令,也就是说不同的用户身份可以执行自己的定时任务。可是有些定时任务需要系统执行,这时我们就需要编辑 /etc/crontab 这个配置文件了

vim /etc/crontab
# 文件内容如下,默认仅定义了一些变量
# 使用标准的bash作为定义任务执行shell
SHELL=/bin/bash
# 定时任务使用的PATH环境变量
PATH=/sbin:/bin:/usr/sbin:/usr/bin
# 如果定时任务发生了任何报错或者出现提示,都会向root用户发送邮件
MAILTO=root
# 标识主目录
HOME=/
# 以下内容都是注释内容,说明了定义定时任务的格式,需要额外指定用户名
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
1.CentOS 5中的配置文件

在centos5中该配置文件除了基本变量定义外,还包含了以下内容

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

也就是说centos5这4个目录 /etc/cron.*** 下的文件会按指定规则定时执行,只需将脚本拷贝到这些目录下即可。
这样的好处是不需要自己手工指定定时任务的规则了,而且进入相应的目录就能看到系统需要执行哪些定时任务。
即使在CentOS 6中这几个目录的功能依然生效,只是centos6以后使用 anacron 来取代管理。

2.执行定时任务方法
  1. 通过 crontab -e 手工执行
  2. 系统定时任务
    ① 把需要定时执行的脚本复制到 /etc/cron.{hourly,daily,weekly,montly} 目录中的任意一个
    ② 修改 /etc/crontab 配置文件,添加需要执行的任务
3.anacron配置

anacron是用来保证在系统关机的时候错过的定时任务,可以在系统开机之后再执行,也就是说有时候因为某种原因或者故障导致的系统无法执行该执行的定时任务,使用anacron管理就非常实用

4.anacron检测周期
  1. anacron会使用一天,七天,一个月作为检测周期
  2. 在系统的 /var/spool/anacron/ 目录中存在 cron.{daily,weekly,monthly} 文件,用于记录上次执行cron的时间
  3. 和当前时间做比较,若果两个时间的差值超过了anacron的指定时间差值,证明有cron任务被漏执行
5.配置文件
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# 指定延迟是为了保证目录下的脚本不会同时执行,错开时间避免造成服务器过大压力
# 最大随机延迟
RANDOM_DELAY=45
# anacron的执行时间范围是3:00 - 22:00
START_HOURS_RANGE=3-22
 
#天数 强制延迟(分)  工作名称             实际执行的命令
1        5        cron.daily           nice run-parts /etc/cron.daily
7        25       cron.weekly          nice run-parts /etc/cron.weekly
@monthly 45       cron.monthly         nice run-parts /etc/cron.monthly
6.执行过程

以 cron.daily 工作来说明执行过程

  1. 首先读取 /var/spool/anacron/cron.daily 中的上一次anacron执行的时间
  2. 和当前时间比较,如果两个时间的差值超过1天,就执行cron.daily工作(准备执行)
  3. 执行这个工作只能在03:00-22:00之间
  4. 执行工作时强制延迟时间为5分钟,再随机延迟0-45分钟时间
  5. 使用nice命令指定默认优先级,使用 run-parts 脚本(命令)执行 /etc/cron.daily 目录中的所有可执行文件
7.anacron总结
  1. anacron最小检测周期是天,使用anacron管理的定时任务应该最小是每隔一天执行
  2. 将需要定时执行的脚本拷贝到/etc/cron.{daily,weekly,monthly}目录下即可被anacron管理
  3. 使用anacron优点是全自动执行,不用人为干预和配置,缺点是执行时间不可控制
  4. 可以将定时任务(天周期及以上)手工指定或系统crontab配置,同时放到anacron管理目录下做双重保障
  5. cron.hourly 由 /etc/cron.d/0hourly 调用,所以放在该目录下的脚本也会生效


Linux【定时任务】

1. 开启定时服务

注意:如果想要在Linux操作系统中执行定时任务需要先保证crond服务是开启的(默认是开启的)

# 查看crond服务状态
service crond status
# 启动crond服务(如果已经启动可以不用设置)
systemctl start crond
#关闭crond服务
systemctl stop crond

2.编辑查看指定用户的定时任务

# 编辑指定用户的定时任务
crontab -u 用户名 -e
# 编辑root用户下的定时任务
1.crontab -u root -e 

# 查看指定用户下所有的定时任务
crontab -u 用户名 -l
#查看root下所有的定时任务
1.crontab -u root -l
#查看ztt1用户下的定时任务
2.crontab -u ztt1 -l

crond脚本修改后,Linux,linux,ubuntu,运维,定时任务
1.通过制定、编辑和开启定时任务。添加定时任何的格式是: 时间 需要执行的任务文章来源地址https://www.toymoban.com/news/detail-796070.html

# 创建一个完整的定时任务,需要确定时间和任务
# 1.时间
 .---------------- minute (0 - 59)   # 指的是分
 |  .------------- hour (0 - 23)     # 指的是时
 |  |  .---------- day of month (1 - 31)  # 指的是日
 |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...  # 指的是月
 |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
 |  |  |  |  |
 *  *  *  *  * 
 
 * * * * *   		- 每分钟执行一次任务(每隔一分钟)
 */1 * * * *        - 每分钟执行一次任务(每隔一分钟)
 */2 * * * *        - 每2分钟执行一次任务(每隔2分钟)
 
 * */1 * * *        - 每隔1小时
 * * */1 * *        - 每隔1天
 * * * */2 *        - 每隔两个月
 
 * * * *  */1       - 每隔一周
 
 * * * *  fri       - 每周五执行任务
 * * * *  mon       - 每周一执行任务
 
 30 * * * *         - 时间点到30分的时候做
 0  * * * *         - 时间点到整点的时候执行任务
 30 2 * * *         - 时间到 02:30 的时候执行任务
 0  12 28 * *       - 每月28号12:00执行任务
 0  12 2 1 *        —每年的1月2号12:00执行任务
 
# 2.任务
写Linux指令, 指令如果有结果,结果是看不到的
* * * * * echo aaa >> /root/test.txt     - 每隔一分钟往root下面的test.txt中添加一行aaa	
* */1 * * * python3 /root/test.py		 - 每隔1小时运行一次test.py中的python程序

3.设置定时任务步骤

步骤1.
date   #查看日期
步骤2.
date '+%Y-%m-%d %H:%M:%S' #查看详细日期
步骤3.
touch task.txt #创建一个文件
步骤4.
date '+%Y-%m-%d %H:%M:%S' >> task.txt  #重定向
步骤5.
crontab -u root -e  #编辑定时任务
步骤6.
进入编辑模式输入:
* * * * * echo aaa >> /root/task.txt #每分钟间隔输入aaa

4.在shell脚本下设置定时任务

1.创建一个结果文件以便存储输出结果
touch result.txt
2.创建一个shell脚本,编写所要输出的结果和代码
vim task1.sh
编辑模式输入:
time1=`date "+%Y-%m-%d %H:%M:%S" `
content="${time1} 每隔两分钟输入"
echo $content >> /root/code/result2.txt

3.编辑root用户下的定时任务
crontab -u root -e 

4.进入编辑模式,输入需要定时任务的内容
*/2 * * * * sh /root/code/task2.sh
# 每两分钟输入

5.查看定时任务的结果
cat result2.txt

结果:
[root@ztt code]# cat result2.txt 
2023-03-03 09:34:01 每隔两分钟输入
2023-03-03 09:36:01 每隔两分钟输入
2023-03-03 09:38:01 每隔两分钟输入
。。。

到了这里,关于Linux定时任务详解&crontab -e 编辑之后如何保存并退出(Ubuntu)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Crontab(定时任务)使用: Linux-Centos7使用crontab制定定时任务,定时执行某任务

    参考:https://blog.csdn.net/m0_49605975/article/details/120701771 1.用yum命令安装Crontab 2.启动,关闭,重启 3.设置开机启动 1.设置定时任务-进入编辑模式 -和vim操作一至 2.查看定时任务列表 3.添加定时任务 样例: 添加一个定时任务,定时清空某个文件夹里面日志文件的内容 3.1 编写一个清

    2024年02月01日
    浏览(75)
  • 【Linux】crontab 定时任务

    当你需要在Linux系统中定期执行某些任务时,crontab(cron table)是一个非常有用的工具。它允许你根据预定的时间表创建和管理定时任务。 按照进程的功能和运行的程序分类,进程可划分为两大类。 系统进程 :可以执行 内存资源分配和进程切换等 管理工作;而且,该进程的

    2024年02月10日
    浏览(55)
  • Linux 定时任务调度(crontab)

    Crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。 可以使用Crontab定时处理离线任务,比如每天凌晨2点更新数据等,经常用于系统任务调度。 一般Linux系统中都会装有Crontab,如果没有安装可以使

    2024年02月07日
    浏览(75)
  • Linux Crontab命令定时任务

    1,crontab:是Linux,unix的定时任务,需要系统安装crontab程序,存储的指定被守护进程crond激活,每分钟去检查一次需要执行的job, 2,新创建的cron任务,不会马上执行,至少要过 2 分钟后才可以,可以重启 cron 来马上执行。 3,检查是否安装crontab: rpm -qa | grep crontab 4,全局配置文

    2024年02月16日
    浏览(51)
  • Linux 定时任务 crontab 用法学习整理

    lsb_release -a linux中crontab命令用于设置周期性被执行的指令,该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。cron 系统调度进程。可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行。cron是系统主要的调度

    2024年02月11日
    浏览(44)
  • Linux通过crontab定时执行脚本任务

    在Linux中可以使用crontab来定时执行脚本。crontab是一个用于管理定时任务的工具,可以让在特定的时间间隔内自动运行脚本或命令。 需求 : 在Linux中每分钟写入一条信息到指定文件中,使用 cron 来定期执行一个写入命令或脚本 首先,在 home 目录下创建一个名为 testscript.sh 的脚

    2024年02月17日
    浏览(50)
  • linux-crontab每分钟定时执行/定时任务调度

    本文讲解linux上如何调用定时任务,如每分钟打印日志,每日24点执行日志切割脚本等等。 在Linux系统中,crontab命令是一个用于执行定时任务的命令, crond(crontab)是系统默认自带的定时服务 。我们可以通过编辑crontab文件来设置定时任务,使系统可以自动按照设定的时间和频率

    2024年02月06日
    浏览(58)
  • Linux学习笔记-Ubuntu下使用Crontab设置定时任务

    白衣沽酒绮罗生 百代繁华一朝都,谁非过客;千秋明月吹角寒,花是主人。 crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρνο

    2024年02月04日
    浏览(43)
  • 如何在Django中使用django-crontab启动定时任务、关闭任务以及关闭指定任务

    安装django-crontab包: 在Django项目的settings.py文件中,找到INSTALLED_APPS配置,并添加\\\'django_crontab\\\'到列表中: 在settings.py文件的末尾,添加以下配置以设置定时任务的时间间隔: 假设我们有一个名为myapp的应用,其中定义了task1、task2和task3三个定时任务。具体参数设置看这里 在终端中

    2024年02月09日
    浏览(48)
  • 【Linux】在服务器上创建Crontab(定时任务),自动执行shell脚本

    业务场景:该文即为上次编写shell脚本的姊妹篇,在上文基础上,将可执行的脚本通过linux的定时任务自动执行,节省人力物力,话不多说,开始操作! 连上服务器后,在任意位置都可以执行: crontab -e 如果没有进入 编辑cron任务模式 根据提示查看我们的服务器上是否未安装crontab没有则

    2024年02月14日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包