一天一命令-crontab

系统软硬件环境平台:

VMware Workstation Pro 12.5.5 build-5234757

CentOS Linux release 7.3.1611

内核版本:3.10.0-514.el7.x86_64

contab

提交和管理用户需要周期性执行的任务

Usage:
       crontab [-u user] file
       crontab [-u user] [-l | -r | -e] [-i] [-s]
       crontab -n [ hostname ]
       crontab -c
Options:
 -u <user>  define user
 -e         edit user‘s crontab
 -l         list user‘s crontab
 -r         delete user‘s crontab
 -i         prompt before deleting
 -n <host>  set host in cluster to run users‘ crontabs
 -c         get host in cluster to run users‘ crontabs
 -s         selinux context
 -x <mask>  enable debugging

查询crond服务的运行情况:

#systemctl list-units --type service | grep cron
  crond.service                      loaded active running Command Scheduler
#systemctl list-unit-files | grep cron
crond.service                               enabled

linux下的任务调度管理分两类:系统任务调度和用户任务调度。

系统任务调度:系统周期性需要执行的任务,cron文件位置为/etc/crontab或者/etc/cron.d/目录下的自定义文件

#more /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
 
# For details see man 4 crontabs
# 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

/etc/crontab文件的前4行定义的crond任务运行的环境变量,

第1行SHELL指定使用的shell类型;

第2行PATH指定系统执行命令的路径;

第3行MAILTO变量指定crond的任务执行信息需要发送的用户,空表示不发送给任何人;

第4行HOME变量指定执行命令或脚本时使用的主目录。

#ll /etc/cron.d

total 24

drwxr-xr-x.   2 root root   54 Feb 20 08:31 ./

drwxr-xr-x. 139 root root 8192 May 30 18:35 ../

-rw-r--r--.   1 root root  128 Mar 31  2016 0hourly

-rw-r--r--.   1 root root  108 Nov  5  2016 raid-check

-rw-------.   1 root root  235 Nov  6  2016 sysstat

执行命令#more /etc/cron.d/0hourly

# Run the hourly jobs

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

01 * * * * root run-parts /etc/cron.hourly

时间格式:

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

# 分 时 日 月 周 用户 命令或脚本

minute:0-59,取值范围0-59之间的整数

hour:0-23

day:1-31

month:1-12或者jan,feb,mar,apr ...

week:0-6或者sun,mon,tue,wed,thu,fri,sat。周日可以用0或7

user:指定用户

command:要执行的命令,可以是系统命令或脚本文件

在以上各个字段中,还可以使用以下特殊字符:

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次

也可以通过以下方式来添加时间@...

@reboot    :    Run once after reboot.

@yearly    :    Run once a year, ie.  "0 0 1 1 *".

@annually  :    Run once a year, ie.  "0 0 1 1 *".

@monthly   :    Run once a month, ie. "0 0 1 * *".

@weekly    :    Run once a week, ie.  "0 0 * * 0".

@daily     :    Run once a day, ie.   "0 0 * * *".

@hourly    :    Run once an hour, ie. "0 * * * *".

@hourly  root touch ~/`date +%F.log`  //每小时执行命令

用户任务调度:用户定期执行的任务,用户自定义的计划任务,所有用户定义的crontab文件位置在/var/spool/cron目录中,文件名和用户名一致,同时可以设置使用者的权限,文件如下:

/etc/cron.allow  列出允许使用crontab目录的用户

/etc/cron.deny  列出不允许使用crontab目录的用户

/var/spool/cron/  所有用户存放crontab文件的目录,默认以用户名命令

执行命令#ll /etc/cron[2tab]

cron.d/       cron.daily/   cron.deny     cron.hourly/  cron.monthly/ crontab       cron.weekly/

案列:

* * * * * cmd  //每1分钟执行一次cmd

15,30 * * * * cmd  //每小时的第15分和第30分钟执行cmd

15,30 8-11 * * * cmd  //每天的8-11点的第15分和第30分钟执行cmd

15,30 8-11 */2 * * cmd  //每间隔2天的8-11点的第15分和第30分钟执行cmd

15,30 8-11 * * 1 cmd  //每周一的8-11点的第15分和第30分钟执行cmd

30 22 * * * cmd  //每天的22:30执行cmd

30 22 1,10,20 * * cmd  //每月1,10,20号的22:30执行cmd

30 22 * * 6,0 cmd  //每周六和周日的22:30执行cmd

0,30 20-24 * * * cmd  //每天20-24点间隔30分钟执行cmd

*/30 20-24 * * * cmd  //同上

* */2 * * * /etc/init.d/smb restart  //每隔2小时重启smb

0 11 4 * mon-wed cmd  //每月4号和每周一到周三的11点执行cmd

0 4 1 jan * cmd  //1月1号4点执行cmd

01 * * * * root run-parts /etc/cron.hourly  //每小时执行/etc/cron.hourly命令里的脚本

15 3 * * 1-5 find $HOME -name big 2>/dev/null | xargs rm -f  //Clean up big files every weekday morning at 3:15 am

0 12 14 2 * mailx john%Happy Birthday!%Time for lunch.  //Mail a birthday greeting

#crontab -l
# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/root
* * * * * touch aabbcc
* * * * * ls -al /root >> /root/ls.log 
#date
Wed May 31 11:26:18 CST 2017
#ll aabbcc
-rw-r--r--. 1 root root 0 May 31 11:26 aabbcc
#ll ls.log 
-rw-r--r--. 1 root root 7341 May 31 11:26 ls.log
#date
Wed May 31 11:27:29 CST 2017
#ll aabbcc
-rw-r--r--. 1 root root 0 May 31 11:27 aabbcc
#ll ls.log
-rw-r--r--. 1 root root 9788 May 31 11:27 ls.log
#crontab -r
#crontab -l
no crontab for root
#ls /var/spool/cron/
时间: 06-09

一天一命令-crontab的相关文章

shell后台执行命令-crontab

名词解释: cron 系统调度进程,可通过它按照一定的时间间隔或固定的时间点运行作业 &   使用它在后台运行一个占用时间不长的进程 注: cron是系统的调度进程,可在无人干预的情况下运行作业,通过crontab的命令允许用户提交,编辑或删除相应的作业. 每个用户都有一个crontab文件来保存作业调度信息,通过该命令运行任意一个shell脚本或命令 在大的系统中,系统管理员可以通过cron.deny和cron.allow这两个文件来禁止或允许用户拥有自己的crontab文件. crontab

一天一命令-sed

一天一命令-sed sed - stream editor for filtering and transforming text sed 4.2.2 sed是一种流编辑器,读取一行,处理一行,输出一行.sed先读取文件中的一行内容存储到被称为模式空间(pattern space)的临时缓冲区中,接着根据设定的条件来处理缓冲区中的内容,多个条件则多次处理,处理完成后,输出到屏幕,接着读取和处理下一行.源文件内容并没有改变,除非使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对多个文

一天一命令-命令帮助

一天一命令-命令帮助 如何系统的学习一个bash命令: 需求,了解命令的格式,选项,帮助手册,案例,练习,拓展. 想要达到什么效果,有没有这样的命令,命令的格式和使用方法,有什么其他的选项,系统中的完整的帮助手册,常用的选项和案例有哪些,拓展的命令使用方法. 5w1h方法:what,why,when,where,who,how 1.程序自身的帮助文档:/usr/share/doc/cmd-version 2.发行版官方文档:http://www.redhat.com/docs 3.Google

一天一命令-history

一天一命令-history 系统软硬件环境平台: VMware Workstation Pro 12.5.5 build-5234757 CentOS Linux release 7.3.1611 软件版本:bash --version GNU bash, version 4.2.46(1)-release (x86_64-redhat-linux-gnu) 测试时间:2017年5月29日 history-Display or manipulate the history list.(显示或者处

一天一命令-ls

一天一命令-ls 系统软硬件环境平台: VMware Workstation Pro 12.5.5 build-5234757 CentOS Linux release 7.3.1611 软件版本:ls (GNU coreutils) 8.22 测试时间:2017年5月26日 ls - list directory contents,显示目录中的文件列表 一.ls基本信息 #ls --version ls (GNU coreutils) 8.22 #type -a ls ls is aliase

一天一命令-screen

一天一命令-screen screen 多终端窗口管理器,可以通过该软件同时连接多个本地或远程会话,并自由切换 Use: screen [ -options ] [ cmd [ args ] ] screen -r [[pid.]tty[.host]] screen -r sessionowner/[[pid.]tty[.host]] -A 将所有的窗口都调整为目前终端机的大小 -c file 读取指定配置文件 -d 剥离别处正在运行的会话 -D 剥离并退出远程会话 -h 设置回滚的命令历史大小

一天一命令-xargs

一天一命令-xargs xargs 传递标准输入作为下一个命令的参数或者重新格式化并输出 xargs默认命令是echo,默认分隔符是空格.xargs可以将输入文本转换为单行或多行显示,即指定每行显示的个数. Usage: xargs [OPTION]... COMMAND INITIAL-ARGS... -0 显示为一列,默认显示为一行,以空格为分隔符 -a file 从文件读取数据而非标准输入 -d 指定分隔符 -l num 指定每行显示的参数个数 -n num 指定以空格为分隔符显示每行的参

Linux常用命令——crontab

crontab 设置定时任务 语法格式:crontab[option][file] crontab [选项] [文件] 注意: crontab 命令及后面的选项和文件里,每个元素之间都要至少要有一个空格 新创建的cron job,不会马上执行,至少要过2分钟才执行.如果重启cron则马上执行 千万不要乱运行crontab -r.它从 crontab 目录(/var/spool/cron)中删除用户的 crontab 文件.删除了该文件,那么该用户的所有 crontab 都被删除了参数选项: 参数

每天一条linux命令——crontab

crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务. 注意: crontab的最小间隔为1分钟.语法:crontab(选项)(参数) 选项:-e:编辑该用户的计时器设置: -l:列出该用户的计时器设置: -r:删除该用户的计时器设置: -u<用户名称>:指定要设定计时器的用户名称. 参数:c