Linux 下的定时任务实现 at 和 crontab
2015-11-12 14:17
681 查看
定时执行一次 at
atd 服务
要想使用at命令,需要先打开atd服务sudo atd
简单例子
添加到时执行任务
user@linux-msx4:~> at now + 1 hour ## at + 定时时间 warning: commands will be executed using /bin/sh at> test_at.sh ## 输入想要执行的命令或脚本 at> <EOT> ## Ctrol +D 结束 job 10 at Thu Nov 12 12:16:00 2015 ##显示这个任务简介
查看当前尚未执行任务
user@linux-msx4:~> atq 7 Fri Nov 13 10:11:00 2015 a user 10 Thu Nov 12 12:16:00 2015 a user
删除尚未执行任务
user@linux-msx4:~> atrm 7 user@linux-msx4:~> atq 10 Thu Nov 12 12:16:00 2015 a user
文件查看当前执行任务
sudo ls /var/spool/atjobs/
限制用户使用at
将被限制的用户名字写入 /etc/at.deny基本命令参数解析 :
-m : 当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出-I : atq的别名
-d : atrm的别名
-v : 显示任务将被执行的时间
-c : 打印任务的内容到标准输出
-V : 显示版本信息
-q : 后面加<列队> 使用指定的列队
-f : 后面加<文件> 从指定文件读入任务而不是从标准输入读入
-t : 后面<时间参数> 以时间参数的形式提交要运行的任务
时间表示
时间:定义出什么时候要进行at的任务,格式有:HH:MM
说明:在今日的 HH:MM 时刻进行,若该时刻已超过,则明天的 HH:MM 进行此任务。
ex> 04:00
HH:MM YYYY-MM-DD
说明:规定在某年某月的某一天的特殊时刻进行该项任务
ex> 04:00 2009-03-17
HH:MM[am|pm] [Month] [Date]
说明:规定在某年某月某日的某时刻进行该项任务
ex> 04pm March 17
HH:MM[am|pm] + number [minutes|hours|days|weeks]
说明:规定在某个时间点再加多少时间后才进行该项任务
ex> now + 5 minutes
ex> 04pm + 3 days
时间格式扩展:
at允许使用一套相当复杂的指定时间的方法。
能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。
能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。
能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。
能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。
能够使用相对计时法。指定格式为:now + count time-units ,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,几天,几小时。
能够直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。
定时循环执行 crontab
crond 服务
sudo service crond start
简单例子
创建、编辑和维护定时任务
crontab -e # 此时打开vim界面 , 编辑本用户的crontab文件 #比如vim中添加 : # 分 时 天 周 月 命令 */1 * * * * echo `date`>>/home/user/test.txt
查看定时任务
user@linux-msx4:~> crontab -l # DO NOT EDIT THIS FILE - edit the master and reinstall. # (/tmp/crontab.B7p3lx installed on Thu Nov 12 14:01:14 2015) # (Cronie version 4.2) */1 * * * * echo `date`>>/home/user/test.txt
删除所有crontab定时任务
user@linux-msx4:~> crontab -r user@linux-msx4:~> crontab -l no crontab for user user@linux-msx4:~>
编辑 /etc/crontab 维护定时任务
格式比crontab在command之前多了username :*/1 * * * * user echo `date`>>/home/user/test.txt
常用命令参数
-u 指定一个用户-l 列出某个用户的任务计划
-r 删除某个用户的任务
-e 编辑某个用户的任务
编辑命令格式
crontab -e
> Minute Hour Day Month Dayofweek command 分钟 小时 天 月 天每星期 命令
vim /etc/crontab
Minute Hour Day Month Dayofweek Username command 分钟 小时 天 月 天每星期 用户 命令
符号
“*”代表取值范围内的数字,“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字
例子
5 * * * * ls # 指定每小时的第5分钟执行一次ls命令 30 5 * * * ls # 指定每天的 5:30 执行ls命令 30 7 8 * * ls # 指定每月8号的7:30分执行ls命令 30 5 8 6 * ls #指定每年的6月8日5:30执行ls命令 30 6 * * 0 ls # 指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,
相关文章推荐
- Linux 系统挂载数据盘
- LINUX 搭建sftp 服务器
- linux学习笔记(1):终端操作方法积累
- linux学习笔记(2):linux下的常用编辑器
- Linux 网桥配置命令:brctl
- Mac/Linux 下利用SCP上传/下载文件
- Linux系统结构 详解
- Linux操作系统文件系统基础知识详解
- 1.在Linux下如何使用软盘、光盘以及DOS等非Linux分区
- DPM检测模型 VoC-release 5 linux 下编译运行
- Centos7下caffe的安装
- linux 用户、用户组和文件权限
- linux中exec和xargs命令的区别和优劣分析
- linux中exec和xargs命令的区别和优劣分析
- Linux下scp静默方式
- Linux中的动态函数库和静态函数库的比较
- Linux系统故障排查和修复技巧
- 嵌入式Linux系统开发环境搭建
- Linux 下安装python软件包(pip、nose、virtualenv、distribute )
- 在 Linux 中用 nmcli 命令绑定多块网卡