Linux定时任务详解&crontab |
您所在的位置:网站首页 › linux退出编辑命令不保存 › Linux定时任务详解&crontab |
crontab -e 编辑之后如何保存并退出(Ubuntu)
1. 保存
操作命令如下: crontab -e 打开crontab的配置文件,并编辑完成Ctrl + O 写入内容, 出现File name to Write ...,输入EnterCtrl +X 保存并输出,保存完成service cron restart, 重启crontab定时任务 2. 验证两种验证方式: 使用crontab -e命令打开任务配置文件,此时可以看到刚才保存的定时任务列表使用crontab -l命令,查看正在执行的任务列表, 如图所示:![]() Linux定时任务是一种可执行的命令或者脚本,在特定的时间或者时间间隔下自动执行。通过在系统中预设一些需要执行的任务,可以让Linux定时任务自动执行并完成这些任务。定时任务可以用于自动备份、系统清理、监控、自动化维护等任务。 在Linux中,常用的定时任务程序有系统自带的cron和at命令。其中,cron是一个强大的定时任务工具,可以按照设定的实际时间执行命令,非常常用。 二、at一次性定时任务 1.确定at安装 # at服务是否安装 chkconfig --list | grep atd # at服务的启动 service atd restart # 对于d结尾的服务,这里d代表daemon,守护进程,一般是作为系统服务 2.at的访问控制 如果系统中有 /etc/at.allow 文件,那么只有写入该文件(白名单)中的用户可以使用 at 命令( /etc/at.deny 文件会被忽略)如果系统中没有 /etc/at.allow 文件,只有 /etc/at.deny 文件,那么写入该文件(黑名单)中的用户不能使用 at 命令,对root不起作用(系统默认有该文件而没有allow文件)如果系统中这两个文件都不存在,那么只有root用户可以使用 at 命令 3.at命令语法:at [选项] 时间 -m: 当at工作完成后,无论是否命令有输出,都用email通知执行at命令的用户 -c 工作号: 显示该at工作的实际内容时间 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> job 1 at 2019-03-09 22:512.在指定的时间重启服务器(生产环境不建议) [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.访问控制 当系统中有 /etc/cron.allow 文件时,只有写入此文件的用户可以使用 crontab 命令,如果有此文件,/etc/cron.deny文件会被忽略当系统中只有 /etc/cron.deny 文件时,则写入此文件的用户不能使用 crontab 命令 3.crontab命令语法:crontab [选项] -e: 编辑crontab定时任务 -l: 查询crontab任务 -r: 删除当前用户所有的crontab任务 注意事项 编辑任务其实是在vim编辑器中进行,所以如果只想删除某个指定的定时任务,直接编辑crontab,删除该行命令即可执行 crontab 命令会将当前用户登录的身份绑定在 crontab 命令中,也就是说用户执行的任务不能超出当前用户的权限 4.格式说明执行 crontab -e 命令会打开vim编辑你的工作 任务具体格式是:* * * * * 执行的任务
六个选项都不能为空,必须填写。如果不确定使用“*”代表任意时间 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.执行定时任务方法 通过 crontab -e 手工执行系统定时任务 ① 把需要定时执行的脚本复制到 /etc/cron.{hourly,daily,weekly,montly} 目录中的任意一个 ② 修改 /etc/crontab 配置文件,添加需要执行的任务 3.anacron配置anacron是用来保证在系统关机的时候错过的定时任务,可以在系统开机之后再执行,也就是说有时候因为某种原因或者故障导致的系统无法执行该执行的定时任务,使用anacron管理就非常实用 4.anacron检测周期 anacron会使用一天,七天,一个月作为检测周期在系统的 /var/spool/anacron/ 目录中存在 cron.{daily,weekly,monthly} 文件,用于记录上次执行cron的时间和当前时间做比较,若果两个时间的差值超过了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 工作来说明执行过程 首先读取 /var/spool/anacron/cron.daily 中的上一次anacron执行的时间和当前时间比较,如果两个时间的差值超过1天,就执行cron.daily工作(准备执行)执行这个工作只能在03:00-22:00之间执行工作时强制延迟时间为5分钟,再随机延迟0-45分钟时间使用nice命令指定默认优先级,使用 run-parts 脚本(命令)执行 /etc/cron.daily 目录中的所有可执行文件 7.anacron总结 anacron最小检测周期是天,使用anacron管理的定时任务应该最小是每隔一天执行将需要定时执行的脚本拷贝到/etc/cron.{daily,weekly,monthly}目录下即可被anacron管理使用anacron优点是全自动执行,不用人为干预和配置,缺点是执行时间不可控制可以将定时任务(天周期及以上)手工指定或系统crontab配置,同时放到anacron管理目录下做双重保障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
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |