一、crontab 定时任务:
1、crontab后跟参数详解:
crontab -l : 查看服务是否创建成功
crontab -r : 删除目前的时程表
crontab -e 定时任务编辑
crontab -i:在删除用户的crontab文件时给确认提示
crontab -u: 只有root才能进行这个任务,也即帮其他用户新建/删除crontab工作调度;
1) 在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
2)直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务
root查看自己的cron设置:crontab -u root -l
root想删除fred的cron设置:crontab -u fred -r
2、查看服务是否已经运行
ps -ef |grep crontab
ps -ef |grep cron
0 12 * * * mail dmtsai -s "at 12:00" < /home/dmtsai/.bashrc #分 时 日 月 周 |《==============命令行=======================》|
代表意义 |
分钟 |
小时 |
日期 |
月份 |
周 |
命令 |
数字范围 |
0~59 |
0~23 |
1~31 |
1~12 |
0~7 |
就命令啊 |
特殊字符 |
代表意义 |
*(星号) |
代表任何时刻都接受的意思,例如:一内那个日、月、周都是*,就代表着不论 何月、何日的礼拜几的12:00都执行后续命令的意思 |
,(逗号) |
代表分隔时段的意思,例如:如果要执行的工作是3:00与6:00时,就会是 : 0 3,6 * * * command 时间还是有五列,不过第二列是3,6,代表3与6都适用 |
-(减号) |
代表一段时间范围内,例如:8点到12点之间的每小时20分钟都进行一项工作“ 20 8-12 * * * command |
/n(斜线) |
n:代表数字,即:每隔n单位间隔的意思,例如:每5分钟进行一次: */5 * * * * command 也可写成:0-59/5 |
*/10 * * * * /bin/bash /home/unzip_file.sh 每隔10分钟执行一次
3、cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。
一般启动服务用 /sbin/service crond start
根用户的cron服务可以用 sudo service crond start
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
/sbin/service crond status //查看服务状态
ntsysv //查看crontab服务是否已设置为开机启动
chkconfig –level 35 crond on //加入开机自动启动
4、任务调度的crond常驻命令
1)crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
2) linux任务调度的工作主要分为以下两类:
a、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
b、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,
这些 工作可由每个用户自行设置
3)Crontab是UNIX系统下的定时任务触发器,其使用者的权限记载在下列两个文件中:文件含义
/etc/cron.deny 该文件中所列的用户不允许使用Crontab命令
/etc/cron.allow 该文件中所列的用户允许使用Crontab命令
/var/spool/cron/ 是所有用户的crontab文件
/var/spool/cron/crontabs
二、at命令实现定时任务
1、假如我们只是想要让特定任务运行一次,那么,这时候就要用到at监控程序了。
at类似打印进程,会把任务放到/var/spool/at目录中,到指定时间运行它 。at命令相当于另一个shell,运行at time命令时,它发送一个个命令,可以输入任意命令或者程序。
2 at命令执行流程如下
语法:# at [参数] [时间]
at> 执行的指令
退出at命令 ctrl+d
# at 2:05 tomorrow
at>/home/kyle/do_job
at> Ctrl+D
命令前提:
需要开启atd进程(在redhat中atd是默认随系统启动而启动)
3、 AT Time中的时间表示方法
Minute at now + 5 minutes 任务在5分钟后运行
Hour at now + 1 hour 任务在1小时后运行
Days at now + 3 days 任务在3天后运行
Weeks at now + 2 weeks 任务在两周后运行
Fixed at midnight 任务在午夜运行
Fixed at 10:30pm 任务在晚上10点30分
!!注意:linux默认为不启动,而ubuntu默认为启动的。
4、检查是否启动,用service atd检查语法,
ps -ef | grep atd //查看是否开启atd
service atd status //检查atd的状态,
service atd start //启动atd服务。
删除系统中由at建立的正在等待被执行的任务
atrm 任务的工作号
例如: atrm 17
5、查看at执行的具体内容:
一般位于/var/spool/at目录下面, 用vi打开,在最后一部分就是你的执行程序
6、常见参数
-m :当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出
-I :atq的别名。 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
-d :atrm的别名。 删除指定 (使用者也可以直接使用 atrm 而不用 at -d)
-v :显示任务将被执行的时间。 列出所有已经完成但尚未删除的指定
-c :打印任务的内容到标准输出
-V :显示版本信息
-q :后面加<列队> 使用指定的列队
-f :后面加<文件> 从指定文件读入任务而不是从标准输入读入
-t :后面<时间参数> 以时间参数的形式提交要运行的任务