date:
输出当前时间
#date
Thu Sep 8 11:59:49 CST 2016
按照指定格式输出时间
#date "+%Y-%m-%d %H:%M:%S"
2016-09-08 13:48:24
输出指定的字符串
#date -d "2016-09-08 13:48:24" "+%F %T"
2016-09-08 13:48:24
#date -d "2016-09-08 13:48:24" "+%x"
09/08/2016
--明天--
# date -d next-day "+%F %T"
2016-09-09 13:59:38
# date -d tomorrow "+%F %T"
2016-09-09 14:05:15
--昨天--
# date -d last-day "+%F %T"
2016-09-07 14:03:56
# date -d yesterday "+%F %T"
2016-09-07 14:03:56
设置时间
--设置完整的时间--
#date -s "2016-09-10 14:24:34"
--设置日期--
#date -s "2016-09-10"
#date -s "2016/09/10"
#date -s "09/10/2016"
显示文件最后修改时间
#date -r /bin
Wed Aug 31 15:58:16 HKT 2016
显示文件的时间
# date -f date.txt
Wed Feb 10 19:11:11 HKT 2016
Tue Oct 11 17:22:33 HKT 2016
Thu Dec 11 13:11:11 HKT 2014
# date -f date.txt "+%F %T"
2016-02-10 19:11:11
2016-10-11 17:22:33
2014-12-11 13:11:11
1. cron服务【Ubuntu环境】
查看cron状态
1
|
sudo service cron status
|
开启cron
1
|
sudo /etc/init.d/cron start
|
关闭cron
1
|
sudo /etc/init.d/cron stop
|
重启cron
1
|
sudo /etc/init.d/cron restart
|
2. crontab用法
crontab –e : 修改 crontab 文件,如果文件不存在会自动创建。
crontab –l : 显示 crontab 文件。
crontab -r : 删除 crontab 文件。
crontab -ir : 删除 crontab 文件前提醒用户。
在crontab文件中写入需要执行的命令和时间,该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。每个域之间使用空格或者制表符分隔。格式如下:
minute hour day-of-month month-of-year day-of-week commands
合法值为:00-59 00-23 01-31 01-12 0-6 (0 is sunday)
除了数字还有几个特殊的符号:"*"、"/"和"-"、","
- *代表所有的取值范围内的数字
- "/"代表每的意思,"/5"表示每5个单位
- "-"代表从某个数字到某个数字
- ","分开几个离散的数字
注:commands 注意以下几点
- 要是存在文件,要写绝对路径
- 即使是打印也不会显示在显示屏,在后台运行,最好重定向日志
3.编辑crontab文件
1
2
3
|
EDITOR=vi
export EDITOR
crontab -e
|
4. 流程举例
step1:写cron脚本文件,命名为crontest.cron。
15,30,45,59 * * * * echo "xgmtest....." 表示,每隔15分钟,执行一次打印命令
step2:添加定时任务。执行命令
1
|
crontab /home/del/crontest.cron >~/log
|
step3:"crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本
1
|
crontab -l
|
结果程序会每个15分钟往脚本里写一次“xgmtest.....”
一、at服务
cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。
service atd start //启动服务
service atd stop //关闭服务
service atd restart //重启服务
service atd reload //重新载入配置
service atd status //查看服务状态
二、at在配置文件:
at类似打印进程,会把任务放到/var/spool/at目录中,到指定时间运行它 。at命令相当于另一个shell,运行at time命令时,它发送一个个命令,可以输入任意命令或者程序。
三、参数详解
at [-V] [-q x] [-f file] [-mldbv] time at -c job ... atq [-V] [-q x] atrm [-V] job ...
-V : 印出版本编号
-q : 使用指定的伫列(Queue)来储存,at 的资料是存放在所谓的 queue 中,使用者可以同时使用多个 queue,而 queue 的编号为 a, b, c... z 以及 A, B, ... Z 共 52 个
-m : 即使程序/指令执行完成后没有输出结果, 也要寄封信给使用者
-f file : 读入预先写好的命令档。使用者不一定要使用交谈模式来输入,可以先将所有的指定先写入档案后再一次读入 网络应用
-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
-d : 删除指定 (使用者也可以直接使用 atrm 而不用 at -d)
-v : 列出所有已经完成但尚未删除的指定
-----------------------------------------------------------------------
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分
Fixed at 23:59 12/31/2018 任务在2018年12月31号23点59分
实例1:三天后的下午 5点锺执行 /bin/ls
命令:
at 5pm+3days
输出:
[root@localhost ~]# at 5pm+3 days
at> /bin/ls
at> <EOT> #ctrl+D 退出编辑
job 7 at 2013-01-08 17:00
[root@localhost ~]#
说明:
实例2:明天17点钟,输出时间到指定文件内
命令:
at 17:20tomorrow
输出:
[root@localhost ~]# at 17:20 tomorrow
at> date >/root/2013.log
at> <EOT>
job 8 at 2013-01-06 17:20
[root@localhost ~]#
说明:
实例3:计划任务设定后,在没有执行之前我们可以用atq命令来查看系统没有执行工作任务
命令:
atq
输出:
[root@localhost ~]# atq
8 2013-01-06 17:20 a root
7 2013-01-08 17:00 a root
[root@localhost ~]#
说明:
实例4:删除已经设置的任务
命令:
atrm 7
输出:
[root@localhost ~]# atq
8 2013-01-06 17:20 a root
7 2013-01-08 17:00 a root
[root@localhost ~]# atrm 7
[root@localhost ~]# atq
8 2013-01-06 17:20 a root
[root@localhost ~]#
说明:
实例5:显示已经设置的任务内容
命令:
at -c 8
输出:
[root@localhost ~]# at -c 8
#!/bin/sh
# atrun uid=0 gid=0
# mail root 0
umask 22此处省略n个字符
date >/root/2013.log
[root@localhost ~]#
说明:
实例6:
命令:
输出:
说明:
5.atd 的启动与 at 运行的方式:
5.1 atd 的启动
要使用一次性计划任务时,我们的 Linux系统上面必须要有负责这个计划任务的服务,那就是 atd 服务。 不过并非所有的 Linux distributions都默认会把他打开的,所以,某些时刻我们需要手动将atd 服务激活才行。 激活的方法很简单,就是这样:
命令:
/etc/init.d/atd start
/etc/init.d/atd restart
输出:
[root@localhost /]# /etc/init.d/atd start
[root@localhost /]# /etc/init.d/atd
用法:/etc/init.d/atd {start|stop|restart|condrestart|status}
[root@localhost /]# /etc/init.d/atd stop
停止 atd:[确定]
[root@localhost /]# ps -ef|grep atd
root 25062 24951 0 14:53 pts/0 00:00:00 grep atd
[root@localhost /]# /etc/init.d/atd start
[确定]td:[确定]
[root@localhost /]# ps -ef|grep atd
root 25068 1 0 14:53 ? 00:00:00 /usr/sbin/atd
root 25071 24951 0 14:53 pts/0 00:00:00 grep atd
[root@localhost /]# /etc/init.d/atd restart
停止 atd:[确定]
[确定]td:[确定]
[root@localhost /]#
说明:
/etc/init.d/atd start 没有启动的时候,直接启动atd服务
/etc/init.d/atd restart 服务已经启动后,重启 atd 服务
备注:配置一下启动时就启动这个服务,免得每次重新启动都得再来一次
命令:
chkconfigatd on
输出:
[root@localhost /]# chkconfig atd on
[root@localhost /]#