设为首页 收藏本站
查看: 559|回复: 0

[经验分享] Linux系统任务计划(at、crontab)的使用方法

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-8 08:19:30 | 显示全部楼层 |阅读模式
Linux上的任务计划:

         任务计划:
                   在未来时间点一次性执行某任务:at, batch
                   周期性执行某任务:crontab

         电子邮件服务:
                   smtp:simple mail transmission protocol
                            /var/spool/mail/USERNAME  邮件目录

                   pop3:post office protocol   pop弹出 ,从服务器上下载邮件
                   imap4:internet mail access protocol  类似POP3,功能更强

                   MUA:mail命令

                   mail命令:

                            mail:进入交互式收发邮件接口
       发送邮件,手动输入邮件内容
                            mail-s 'SUBJECT' username@hostname
                   管道的方式附上邮件的内容
                            mail-s 'SUBJECT' username@hostname < /PATH/FROM/SOMEFILE
                   命令执行结果作为邮件内容
                            COMMAND| mail -s 'SUBJECT' username@hostname

         at命令:

                   承载未来时间运行的某作业:

                   支持使用作业队列:
                            默认为a队列;

                   Ctrl+d  结束命令的输入

                   at[option]... TIME

                   TIME:
                            (1)绝对时间
                                     HH:MM,
                                     MMDD[CC]YY,MM/DD/[CC]YY, DD.MM.[CC]YY or [CC]YY-MM-DD
                                     tomorrow
                            (2)相对时间
                                     now+#UNIT
                                               minute,hour, day, week
                            (3)模糊时间
                                     midnight
                                     noon
                                     teatime

                   常用选项:
                            -qQUEUE: at作业队列;
                            -f/PATH/FROM/SOMEFILE:从指定的文件中读取要运行的作业;
                            -l:查看作业队列中的等运行作业列表;相当于使用atq命令;
                            -cAT_JOB_NUM: 查看待运行作业的内容;
                            -d:删除指定作业;相当于atrm

         batch:
                   与at不同的是batch无法指定时间,由系统自行选择在资源较为空闲时运行指定的任务;

         crontab:周期性任务计划
                   守护进程:crond

                   周期性任务有两类:
                            (1)系统cron任务;没有默认运行用户身份,所以需要额外指定运行者;
                                     /etc/crontab

                                     vim命令

                                               #Example of job definition:
                                               #.---------------- minute (0 - 59)
                                               #|  .------------- hour (0 - 23)
                                               #|  | .---------- day of month (1 - 31)
                                               #|  | |  .------- month (1 - 12) ORjan,feb,mar,apr ...
                                               #|  | |  |  .---- day of week(0-6) (Sunday=0 or 7) ORsun,mon,tue,wed,thu,fri,sat
                                               #|  | |  |  |
                                               #*  * *  *  * user-name command to be executed   

                                               7个字段:
                                                        前5个字段:时间点
                                                        user-name:以哪个用户的身份运行任务
                                                        commandto be executed: 要运行任务                           

                            (2)用户cron任务:由某个用户所提交,默认就以提交者的身份运行,所以无需额外指定运行者;
                                     /var/spool/cron/USERNAME
       鉴于crontab文件中的任务的保密性,比如管理给用户指定的任务,不建议直接使用VIM编辑crontab文件来编辑任务,建议使用crontab命令来管理任务
                                     vim命令;不建议
                                     crontab命令:建议

                                               #Example of job definition:
                                               #.---------------- minute (0 - 59)
                                               #|  .------------- hour (0 - 23)
                                               #|  | .---------- day of month (1 - 31)
                                               #|  | |  .------- month (1 - 12) ORjan,feb,mar,apr ...
                                               #|  | |  |  .---- day of week (0 - 6) (Sunday=0 or 7) ORsun,mon,tue,wed,thu,fri,sat
                                               #|  | |  |  |
                                               #*  * *  *  * command to be executed      

                                               5个时间点:
                                                        分钟:有效取值范围0-59;
                                                        小时:0-23
                                                        日:1-31
                                                        月:1-12
                                                        周几:0-7

                                                        注意:几月几号与周几,不建议同时使用;

                                                        例如:
                                                                 6* * * *  表示每小时的第6分钟执行一次


                                                        时间表示法:

                                                                 *:对应时间点有效取值范围内的每个时间点;
                                                                 -:一个特定连续时间范围, 3-7
                                                                 ,:一个离散的时间点,3,5,7
                                                                 /#:有效时间范围内的每多少时间;用于指定频率;
                                                                           1-30/4,*/4

                                                        5*/3 * * * /bin/echo "howdy"  每隔3个小时的第6分钟执行一次

                                                        57 * * 1-5 /bin/echo "howdy"   每周一到周五的7点5分执行

                                               crontab命令:
                                                        crontab[-u user] [-l | -r | -e]
                                                                 -uuser: 不是管理自己的cron任务,而是指定的目标用户的cron任务;仅root拥有管理其它用户的cron任务的权限;默认管理自己的;

                                                                 -l:list,列出任务;
                                                                 -r:remove, 移除所有任务;
                                                                 -e:edit,编辑,打开一当前shell会话的默认编辑器来编辑cron任务表;


                                     思考:
                                               1、如果想实现每8分钟运行一次某任务?
                      */8 * * * *
                                               2、如果想实现每10秒钟运行一次某任务?
                                           * * * * * for i in {0..4}; do /bin/echo “hello!”; sleep 10 ; done

                            补充性的工具:anacron:

                            注意:
                                     (1)如果不想接收任务执行结果的通知邮件:
                                               COMMAND> /dev/null
                                               COMMAND&> /dev/null
                                     (2)对于crontab文件来讲,%有特殊功用;如果命令中会出现%, 要记得转义,或者用单引号对其引用;
                                     (3)crontab的PATH变量与用户的变量不完全相同,所以,建议在cron中的任务要使用绝对路径
                                               /root/bin/a.sh

       1、每周一到周六的凌晨3点20分,运行cp命令对/etc/目录进行归档另存,存储位置为/backups/etc-YYYY-MM-DD;

      203 * * 1-6 /bin/cp –a /etc /backups/etc-`date +\%F`

       2、每周日凌晨2点30分,运行cp命令对/etc/fstab文件进行备份,存储位置为/backup/fstab-YYYY-MM-DD-hh-mm-ss;

       302 * * 7 /bin/cp  /etc/fstab/backup/fstab-`date +’%F-%H-%M-%S’`

       3、每天晚上12点,取得/proc/meminfo文件中所有以S或M开头的行,追加至/statistics/meminfo.txt文件中,且每天的消息之前,要加上类似===============分隔线

      0 0 * * * /bin/echo ===== >> /tmp/meminfo.txt ; /bin/egrep "^[S|M]"/proc/meminfo >> /tmp/meminfo.txt


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-110765-1-1.html 上篇帖子: Linux的任务计划 下篇帖子: Vim编辑器,find命令及bash环境配置 Linux 计划
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表