定时任务

程序文件:程序代码组成,但是没有在计算机内执行,当前没有执行
进程:所谓进程就是计算机中正在执行的程序
守护进程:就是一直运行的程序

1.linux下的定时任务

acrontab(非常重要)|at(适合执行一次就结束的任务)|anacron
*我们所说decrond服务是运行程序,而crontab命令用户用来设置定时规则命令
*用户一般是6段|系统是7段

* * * * *  |分钟(0-59)|小时(0-23)|日(1-31)|月(1-12)|周(0-6)
[常见表示方法]
*   任意时间都
-   分隔符:时间范围
,   分隔时段
/n  每隔n单位时间

30 3,12 * * *   每天的3301200
30 */6 * * *    每隔6小时的半点时刻
30 8-18/2 * * * 800-1800每两个小时的半点时刻
45 4 11022 * * *  每个月的11022的凌晨44510 1 * * 60    每个周6,日的凌晨110分执行
00 1 * * *      每隔一小时的整点
* 23-7/1 * * *  23:00-7:00每分钟
00 11 * 4 1-3   每年的4月份的周1-3的上午1100执行

[root@XMJ ~]# which crontab
/usr/bin/crontab
[root@XMJ ~]# ls -l /usr/bin/crontab 
-rwsr-xr-x. 1 root root 47520 Jul 19  2011 /usr/bin/crontab
[root@XMJ ~]#
[root@XMJ ~]# crontab  -e      #编辑定时任务
[root@XMJ ~]# crontab  -l      #查看定时任务(任务存放位置/var/spool/cron/$user)
[root@XMJ ~]# /etc/cron.deny   #黑名单(不允许使用crontab命令的user)
[root@XMJ ~]# /etc/cron.allow  #白名单
[root@XMJ ~]# crontab -u user -e job   #-u指定用户


*定时任务存放目录
[root@XMJ ~]# cd /var/spool/cron/
[root@XMJ cron]# ls
root
[root@XMJ cron]# cat root 
#secu-tcs-agent monitor, install at Tue May 30 14:12:43 CST 2017
* * * * * /usr/local/sa/agent/secu-tcs-agent-mon-safe.sh /usr/local/sa/agent > /dev/null 2>&1
*/1 * * * * /usr/local/qcloud/stargate/admin/start.sh > /dev/null 2>&1 &
*/20 * * * * /usr/sbin/ntpdate ntpupdate.tencentyun.com >/dev/null &
[root@XMJ cron]# 

2.crontab依赖的服务

[root@XMJ ~]# chkconfig --list crond
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@XMJ ~]# ps -ef | grep cron
root      1115     1  0 Jun15 ?        00:00:25 crond
root     29104 24603  0 21:37 pts/1    00:00:00 grep cron
[root@XMJ ~]# 

3.书写定时任务的要领

    (1)添加必要的英文注释
    (2)执行shell脚本前,要加/bin/sh(使用绝对路径之后,可以不用添加+x权限给脚本)
    (3)在指定任务下执行,注意修改环境变量    
    (4)多用crontab -e|-l去查看和编辑定时任务(防止出错)
    (5)定时任务结尾加(脚本任务)> /dev/null 2>&1 &
    (6)生产任务程序,不要随意打印输出(容易产生垃圾,如果需要看结果,可以将其重新定向到文件中)
    (7)定时任务最好写脚本里面执行***
    (8)命令程序要用绝对路径

4.实践

*每分钟输入自己的名字到指定文件

[root@XMJ ~]# mkdir /server/log/ -p
[root@XMJ ~]#  echo "xmj" >> /server/log/xmj   #先测试以下
[root@XMJ ~]# cat /server/log/xmj 
xmj
[root@XMJ ~]# vim /var/spool/cron/root 
[root@XMJ ~]# tail -f /server/log/xmj 
xmj
xmj
xmj
^C
[root@XMJ ~]# crontab -l
.....
#print my name
* * * * * echo "xmj" >> /server/log/xmj
.....
*注:在echo中添加命令时,需要用``(反引号)引起来
[root@XMJ ~]# echo " `date +%F` xmj" >> /server/log/date
[root@XMJ ~]# tail /server/log/date
 2017-07-17 xmj
[root@XMJ ~]#
*查看错误:查看日志(/var/log/...)

5.重定向

>   把内容清空并且重新添加
1   标准输出,>|>>
2   错误输出,2>|2>>
0   标准输入,<|<<
2>&1把标准错误重定向的标准输出(>&)(>/dev/null 2>&1====1>/dev/null 2>/dev/null)
[root@XMJ ~]# ddddd 2>/server/log/xmj  #把错误的输出到指定文件
You have new mail in /var/spool/mail/root
[root@XMJ ~]# cat /server/log/xmj
-bash: ddddd: command not found
[root@XMJ ~]#

6.系统定时任务配置:/etc/crontab

*打包/etc/services(规范到2小时)
[root@XMJ log]# vim tar.sh
cd /etc && tar zcvf /server/backup/services_$(date +%F-%H).tar.gz ./services 
*&&表示前面执行成功了,继续执行后面的
[root@XMJ log]# sjkdhu && echo 1
-bash: sjkdhu: command not found
[root@XMJ log]# pwd  && echo 1
/server/log
1
[root@XMJ log]# /bin/sh tar.sh 
./services
[root@XMJ log]# ll /server/backup/
total 132
-rw-r--r-- 1 root root 127319 Jul 17 10:16 services_2017-07-17-10.tar.gz

[root@XMJ log]# crontab -e
.....
00 */2 * * * /bin/sh /server/log/tar.sh >/dev/null 2>&1
.....
[root@XMJ log]#
*每天晚上120000 00 * * *

7.date 修改时间

*-s 修改时间 月/日/年
[root@XMJ ~]# date -s "03/23/2014  19:25:00" 
Sun Mar 23 19:25:00 CST 2014
[root@XMJ ~]# date
Sun Mar 23 19:25:02 CST 2014
[root@XMJ ~]# 
[root@XMJ sbin]#  /usr/sbin/ntpdate #和时间同步有关
*企业里面一般是和互联网做同步

^^^面试

*请描述crontab定时任务的作用和基本语法格式及书写要求
    crontab就是linux下的一个周期性执行计划任务的服务命令工具
    语法:共6段,前五段是时间段,默认时间是*,表示每的意思时间段中用空格分隔(分别是:分钟|小时|日|月|周),第6段表示任务命令段
    书写举例
    注意事项(见上边)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值