码迷,mamicode.com
首页 > 系统相关 > 详细

Linux学习之路6-Mail、计划任务

时间:2015-09-07 07:09:41      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:linux   crontab   mail   定时任务   计划任务   

Mail、计划任务


mail 命令

基本语法(mail进去后):

   h 显示当前的邮件列表

   l 显示当前支持的命令列表

   d 删除当前邮件, d 1-100 删除第1到100封邮件

   file 显示整个用户邮件存放路径和邮件总数

   fn 指针跳转到第n封邮件上,例如f13 跳转到第13封邮件

   t 阅读某一封邮件,例如t22 阅读第22封邮件

   top 查看当前指针所在邮件的邮件头

   ? 查看命令参数用法

   mail 写邮件

   n 阅读某一封邮件,例n9看第9封,只输n的话,查看当前指针的下一封邮件

   q 退出

 

4种使用方式:

1.    mail 进入交互式收发邮件接口,再输入mail编辑邮件

2.    mail -s ‘主题’ username@hostname 编辑邮件内容,CTRL+D或.结束

3.    mail -s ‘主题’ username@hostname < /PATH/file 文件重定向方式

4.    echo “hello” | mail -s ‘主题’usernaem@hostname 管道方式

     邮件存放位置

    /var/spool/mail/username

 

at 命令(需要atd守护进程里面任务的命令建议使用绝对路径,因为命令执行与PATH有关)

    命令参数:

    -l 查看待运行作业队列,相当与atq

 -f 读取待运行命令列表 例at-f at.list 14:30 (at.list为命令列表或脚本)

 -c 查看待运行作业的内容(运行环境、配置等) 例:at -c 2

 -m 当任务完成时,即使没有输出信息,也以email行驶通知用户

   例:-m at now + 3day

 

命令格式:

HH:MM 例:at 22:00

HH:MM YYYY-MM-DD 例:at 22:00 2015-09-05

HH:MM [am|pm] [month] [date] 例:at 04pm march 17

HH:MM [am|pm] + number[minutes|hours|days]

   例:at now + 3days 或at04pm + 3days

 

batch: 由系统自行选择在资源较为空闲时运行指定的任务,命令格式和at一样

 

crontab:周期性任务计划,它需要运行一个守护进程:crond

参数

     -u 指定用户名,建立该用户的任务

     -e 编辑

     -l 查看任务

     -r 删除所有任务

 

格式

# Example of job definition:

                 # .---------------- minute (0 - 59)

                 # | .------------- hour (0 - 23)

                 # |  |  .---------- day of month (1 - 31)

                 # |  |  | .------- month (1 - 12) OR jan,feb,mar,apr ...

                 # |  |  | |  .---- day of week (0 - 6)(Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

                 # |  |  | |  |

                 # *  *  * *  *  command to be executed

 

分,小时,日,月,周

特殊符号:* 任何时刻都接受

          ,代表分隔时段的意思。例:执行3:00与6:00是0 3,6 * * * command

-        代表一段时间范围。例:8到12点之前没小时的20分进行一项工作

                          208-12 * * *

/n n代表数字,每隔n单位间隔,例:每5分钟执行一次,*/5 * * * *

/etc/cron.allow,/etc/cron.deny

 

 计划任务技巧:

由于crontab只能精确到分钟,如果要实现秒级任务,有2种方法实现:

1.    通过sleep命令,只要能被60整除的数(间隔秒数)都可以实现。如果间隔的秒数太少,例如2秒执行一次,这样就需要在crontab 加入60/2=30条语句。不建议使用此方法

     例:要求每20秒钟执行一次cat/etc/fstab

         crontab -e 添加:

         * * * * * /usr/bin/cat /etc/fstab

         * * * * * sleep 20;/usr/bin/cat /etc/fstab

         * * * * * sleep 20;/usr/bin/cat /etc/fstab

     例2:

         */1 * * * * sh /root/cron.sh

         */1 * * * * sleep 30 && sh/root/cron.sh

         # 每分钟执行两次 每隔30秒执行一次

2.通过循环语句实现

   例:

crontab-e

* * ** * source cron.sh

cron.sh如下:

     while true;do

         sleep 3;

         命令

     done

   每3秒就循环一次,要注意的是,这个是死循环脚本

 

crontab 中执行多个命令的方法:

方法1:

*/30* * * * bin/sh /home/xyw/task1.sh 

*/30* * * * bin/sh /home/xyw/task2.sh 

方法2

*/30* * * * bin/sh /home/xyw/task1.sh; bin/sh /home/xyw/task2.sh 

方法3

*/30* * * * bin/sh /home/xyw/task1.sh && bin/sh /home/xyw/task2.sh 

方法4

*/30* * * * bin/sh /home/xyw/task1.sh || bin/sh /home/xyw/task2.sh

 

crontab中特别要注意的!!!!!

1. crontab与环境变量

 不要假定cron知道所需要的特殊环境,它其实并不知道。所以你要保证在shelll脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。所以注意如下3点:

1)脚本中涉及文件路径时写全局路径;

2)脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:

cat start_cbp.sh

 #!/bin/sh

 source /etc/profile

 exportRUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf

 /usr/local/jboss-4.0.5/bin/run.sh-c mev &

 3)当手动执行脚本OK,但是crontab死活不执行时。这时必须大胆怀疑是环境变量惹的祸,并可以尝试在crontab中直接引入环境变量解决问题。如:

0 * * * * ./etc/profile;/bin/sh/var/www/java/audit_no_count/bin/restart_audit.sh

 

 2. 其他应该注意的问题

1)新创建的cron job,不会马上执行,至少要过2分钟才执行。如果重启cron则马上执行。

2)每条 JOB 执行完毕之后,系统会自动将输出发送邮件给当前系统用户。日积月累,非常的多,甚至会撑爆整个系统。所以每条 JOB 命令后面进行重定向处理是非常必要的: >/dev/null2>&1 。前提是对 Job 中的命令需要正常输出已经作了一定的处理, 比如追加到某个特定日志文件。

3)当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。

4)千万别乱运行crontab-r。它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的所有crontab都没了。

5)在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d’`。


本文出自 “天真小同志” 博客,请务必保留此出处http://dengxi.blog.51cto.com/4804263/1692041

Linux学习之路6-Mail、计划任务

标签:linux   crontab   mail   定时任务   计划任务   

原文地址:http://dengxi.blog.51cto.com/4804263/1692041

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!