Crontab 定时任务格式参数
crontab 定时执行 任务
格式: * * * * *
分别对应表示: 分钟(0-59) 小时(0-23) 日(1-31) 月份(1-12) 星期(0-6)
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9” 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6” 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。 同时正斜线可以和星号一起使用, 例如*/5,第一个位置就是每隔5秒,如果用在minute字段,表示每多少分钟。
时间格式示例:
每五分钟执行 */5 * * * * 每小时执行 0 * * * * 每天执行 0 0 * * * 每周执行 0 0 * * 0 每月执行 0 0 1 * * 每年执行 0 0 1 1 *
crontab 问题:
1、crontab中的输出配置: crontab中经常配置运行脚本输出为:>/dev/null 2>&1,来避免crontab运行中有内容输出。 2、shell命令的结果可以通过'> '的形式来定义输出; /dev/null 代表空设备文件 > 代表重定向到哪里,例如:echo "test" > test.txt 1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null" 2 表示stderr标准错误 & 表示等同于的意思,2>&1,表示2的输出重定向等同于1 3、重定向输出语句的含义: 1>/dev/null 表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,不显示任何信息。 2>&1 表示标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。 4、crontab 中 % 是表示换行,创建时间命令必须写成 \% date '+%Y%m%d' 要写成: date '+\%Y\%m\%d' 5、环境变量问题导致crontab 任务执行不了 : 加入环境变量 0 * * * * ./etc/profile;/bin/sh java.sh 6、crontab 的日志位置一般位于/var/log/cron,利用下面的语句即可查看日志。 tail -f /var/log/cron
环境变量延伸:
/etc/profile
/etc/bashrc
.bash_profile
.bashrc
用户在登陆Linux操作系统的时候,"/etc/profile", "~/.bash_profile" 等配置文件会被自动执行。 执行过程 -- 首先启动 "/etc/profile", 然后启动用户目录下的 "~/.bash_profile", 如果"~/.bash_login" 和 "~/.profile" 文件存在的时候也会在执行 "~/.bash_profile" 后被依次调用。 /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的设置文件中搜集shell的设置; /etc/bashrc:为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取; ~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件, ~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时及每次打开新的shell时,该文件被读取; ~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件; /etc/profile是全局性的功能,其中设置的变量作用于所有用户; ~/.bash_profile中设置的变量能继承/etc/profile中的变量并作用于用户; ~/.bash_profile 是交互式、login 方式进入 bash 运行的; ~/.bashrc 是交互式 non-login 方式进入 bash 运行的;