Linu计划任务/crontab命令

时间:2019-09-15
本文章向大家介绍Linu计划任务/crontab命令,主要包括Linu计划任务/crontab命令使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

周期性任务计划

    相关程序包:

        cronie:主程序包,提供了crond守护进程及相关辅助工具

        cronie-anacron:cronie的补充程序;用于监控cronie任务执行状况;如cronie中的任务在过去该运行的时间点未能正常运行,则anacron会随后启动一次次任务

        crontabs:包含CentOS提供系统维护任务

    计划任务守护进程crond运行状态查看方法

        CentOS7:

            systemctl status crond

        CentOS6:

            service crond status

编写计划任务两种方式:

  系统计划任务设定:编写配置文件/etc/crontab

  用户计划任务设定:执行# crontab -e 命令。在实际工作中,一般采用此方式设定计划任务

crontab命令常用选项

crontab -l:查看自己的cron任务列表

crontab -e:通过EDITOR变量中定义的编辑器打开用户自己的cron配置文件;编辑单独的任务都使用-e选项,无论是删除、修改还是新建

crontab -r:移除crontab文件,慎用!

crontab -i:同-r一同使用,以交互式模式让用户有选择的删除指定任务

crontab -u UserName:仅root可运行,指定某个用户,需要配合其他选项如-l -e使用例如:#crontab -e -u docker(管理员root用户给docker用户设定计划任务)

计划任务编写格式

时间格式

# 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

# |  |  |  |  |

# *  *  *  *  * user-name  command to be executed

时间格式举例:
6 7 * * *           #每天7点6分
6 7 8 * *          #每月8号 7点6分
* 7 8 * *          #每月8号7点,每分钟执行
30-35 7 * * *      #每天7点30-35分,每分钟执行
5,35 * * * *       #每小时的5,35分钟执行
5-45/3 * * * *     #每小时的5-45分钟,每隔三分钟执行一次

时间表示法说明:

    (1)特定值:每个时间位都应该使用其可用的有效取值范围内的值;

    (2)*:某时间位上的*表示对应位的所有有效取值;

    (3)-:连续的时间相邻点取值

    (4),:离散的时间点取值 #,#,#

    (5)/#:表示在指定时间范围内每隔#一次;

另一种时间格式

@reboot       Run once after reboot   #每次系统重启或者重新开机都执行一次

@yearly         0 0 1 1 *

@annually     0 0 1 1 *

@monthly      0 0 1 * *

@weekly        0 0 * * 0

@daily           0 0 * * *

@hourly         0 * * * *

计划任务编写举例

(1)每3分钟执行一个echo "how are you?"
# crontab -e
*/3 * * * * /bin/echo "how are you?"

(2)每周2、4、6备份/etc/目录至/backup目录中,备份的文件名以当前etc_开头并跟上当日的日期作为文件名
# crontab -e
3 2 * * 2,4,6 /bin/tar -Jcf /backup/etc_`date '+%F'` .tar.xz /etc/*

(3)周天6、9、12、15、18查看一下当前系统挂载的所有文件系统,并将查看的结果追加至/tmp/mounts.txt文件中
# crontab -e
17 6,9,12,15,18 * * * /bin/mount >> /tmp/mounts.txt

(4)每天每两小时取当前系统内存空间余量,将其保存至/stats/memory.txt文件中
# crontab -e
1 */2 * * * /bin/grep "^MemFree:" /proc/meminfo >> /stats/memory.txt

制作定时任务的规范:

1、为定时任务加必要的注释

2、执行shell脚本任务前加/bin/sh

3、默认输出信息会以邮件形式发送到用户,可通过重定向到/dev/null中来拒收邮件 

    如:1 1 * * * /bin/bash xxxx.sh &>/dev/null

4、定时任务命令或程序最好写到脚本里执行

5、在指定用户下执行相关的定时任务

6、定时任务执行的脚本要规范路径(/server/scripts)

原文地址:https://www.cnblogs.com/ysuwangqiang/p/11523661.html