Linux例行性工作(at/cron)
2016-04-01 21:56
453 查看
一.只执行一次的任务调度at
at针对在规定时间按只执行一次的例行工作。类似/etc/host.allow,at也有/etc/at.deny和at.allow,作用和host相同,一般只用at.deny即可。(可不可以添加任务调度)
用法
at [-mldv] TIME at -c 工作号码 -m 即使没有任何输出信息,完成任务后也要发送mail通知用户 -l at -l 相当于atq,列出所有该用户at调度 -d at -d 相当于atrm,取消一个调度 -v 用明显的时间格式列出at调度列表 -c 列出后接的工作的实际命令内容TIME格式:
HH:MM HH:MM YYYY-MM-DD HH:MM[am|pm] [Monyh] [Date] HH:MM[am|pm] + number [minute|hours|days|weeks] eg: ex> now + 5 minutes
使用
启动atd服务:
#/etc/init.d/atd start
添加任务调度:
root@jammg:/etc/init.d# at now + 5minutes warning: commands will be executed using /bin/sh at> ls -la /etc at> <EOT> <===== 这里输入ctrl + d结束 job 1 at Fri Apr 1 21:23:00 2016
root@jammg:/etc/init.d# at -c 1 #!/bin/sh # atrun uid=0 gid=0 # mail jammgit 0 umask 22 ... cd /etc/init\.d || { echo 'Execution directory inaccessible' >&2 exit 1 } ls -la /etc看上面shell脚本,因为这个调度是在/etc/init.d里加进来的,所以执行命令是也会去到/etc/init.d目录。
这就是“后台执行”,和nohup命令类似,命令将交给atd服务程序管理,即使脱机也没问题。
atq/atrm
atq列出主机上有多少at调度atrm [job number] 删除某个工作调度,如上面的job number 是1.
batch:添加负载控制
batch会另系统有空时才进行后台任务。只要在添加任务调度时不用at而用batch即可,命令用法一样,其它atq等等一样使用。
二.周期性任务调度cron
cron任务调度也支持/etc/cron.allow和/etc/cron.deny.用法
crontab [-u username] [-l|-e|-r] -u 只有root才能选,为某任务添加工作调度 -l 查阅crontab的工作内容 -e 编辑crontab的工作内容 -r 删除所有crontab工作内容,若要删除一项,用-e去编辑
使用
启动cron服务:#/etc/init.d/cron start若出现:cron: can't lock /var/run/crond.pid, otherpid may be 751: Resource temporarily unavailable,删除这个文件即可。
jammgit@jammg:~$ crontab -e no crontab for jammgit - using an empty one Select an editor. To change later, run 'select-editor'. 1. /bin/ed 2. /bin/nano <---- easiest 3. /usr/bin/vim.basic 4. /usr/bin/vim.tiny Choose 1-4 [2]:第一次会让你选择编辑环境
选择vim,并输入:
0 12 * * * ls -la
保存退出,查看工作调度列表:
jammgit@jammg:~$ crontab -l 0 12 * * * ls -la 分 时 日 月 周 命令日月和周不可同时设定,不知道系统以哪个为准。
*(星号) | 代表任何时刻都接受的意思 |
,(逗号) | 代表分隔时间;0 3,6, * * * command 指3点和6点 |
-(减号) | 代表一个时间段;20 8-12 * * * command 8点到12点每隔20分钟执行一次 |
/n(斜线) | n代表数字;*/5 * * * * command 代表每5分钟执行一次 |
系统配置文件/etc/crontab
如果是系统例行性任务,可以直接在crontab配置文件里添加。root@jammg:/etc# cat crontab SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )run-parts是在指定目录下找出所有文件执行一次(/usr/bin/run-parts)。
三.anacron
anacron是针对由于关机而没有执行到工作调度的问题,它会在开机后进行相应的执行任务;和crontab并用。相关文章推荐
- 新手学习Linux之grep
- RedHat系统下安装yum
- linux多线程-----同步对象(互斥量、读写锁、条件变量)的属性
- CentOS6.x之emacs安装配置编译
- linux c struct tm宏定义时有时报dereferencing pointer to incomplete type错误,可以将包含头文件改为#include <sys/timeb.h>
- linux skype的安装
- Linux内核协议栈(附4) accept得到新的socket的本端端口号是什么?
- linux c system函数执行命令的返回值
- Linux SD卡驱动开发(一) —— SD 相关基础概念
- Linux内核分析(六)
- linux内核分析 第六周 分析Linux内核创建一个新进程的过程
- 浅谈linux虚拟机没有ip的问题
- 《Linux操作系统分析》之分析Linux内核创建一个新进程的过程
- Linux平台下变量在栈帧中的存储
- linux常用命令之cat使用方法
- CentOS 6.0 启动时出现fstab错误时的修复
- 如何禁用centos7中的ipv6
- linux命令(二)uname命令
- linux中eclipse报错: program g++ not found in path
- linux 文件夹/文件管理