1、crontab的基本用法
Usage: crontab [-u user] [-e|-l|-r]
Crontab 的格式说明如下:
* 逗号(‘,’) 指定列表值。如: “1,3,4,7,8″
* 中横线(‘-’) 指定范围值 如 “1-6″, 代表 “1,2,3,4,5,6″
* 星号 (‘*’) 代表所有可能的值
*/15 表示每 15 分钟执行一次
# Use the hash sign to prefix a comment
# +—————- minute (0 – 59)
# | +————- hour (0 – 23)
# | | +———- day of month (1 – 31)
# | | | +——- month (1 – 12)
# | | | | +—- day of week (0 – 7) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed
2、crontab与环境变量
不要假定cron知道所需要的特殊环境,它其实并不知道。所以你要保证在shelll脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。所以注意如下3点:
1)脚本中涉及文件路径时写全局路径;
2)脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:
cat start_cbp.sh
#!/bin/sh
source /etc/profile
export RUN_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
3、其他应该注意的问题
1)新创建的cron job,不会马上执行,至少要过2分钟才执行。如果重启cron则马上执行。
2)每条 JOB 执行完毕之后,系统会自动将输出发送邮件给当前系统用户。日积月累,非常的多,甚至会撑爆整个系统。所以每条 JOB 命令后面进行重定向处理是非常必要的: >/dev/null 2>&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’`。
—————————————————————————————–
/etc/profile, /etc/bashrc, .bash_profile和.bashrc的差别
用户登陆Linux操作系统的时候,”/etc/profile”, “~/.bash_profile”等配置文件会被自动执行。执行过程是这样的:登陆Linux系统时,首先启动”/etc/profile”,然后启动用户目录下的”~/.bash_profile”,如果”~/.bash_login”和”~/.profile”文件存在的时候也会在执行”~/.bash_profile”后被依次调用。
——————
cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
alias vi=vim
通过上面脚本可以看到~/.bash_profile文件先调用~/.bashrc,然后再把PATH加载。
——————
下面是一些区别:
/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 运行的。
4、补充说明:
cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
时程表的基本格式 :
* * * * * program
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
当第1列 为 * 时表示每分钟都要执行 program,第2列为 * 时表示每小时都要执行程式,其余类推
当第1列为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,第2列为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推
当第1列为 */n 时表示每 n 分钟个时间间隔执行一次,第2列 为 */n 表示每 n 小时个时间间隔执行一次,其余类推
当第1列为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,第2列 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其余类推
crontab文件的一些例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启lighttpd 。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启lighttpd 。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启lighttpd 。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启lighttpd 。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启lighttpd 。
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启lighttpd
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启lighttpd
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启lighttpd
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启lighttpd
1创建oracle备份脚本创建备份脚本,backuporacle.sh
Shell代码
#!/bin/sh
echo "Begin backup turbocms oracle database..."
source /home/oracle/.bash_profile
rq=`date +%y%m%d`
echo "Starting time:"`date`
$ORACLE_HOME/bin/exp oracleuser/password file=/opt/backup/db${rq}.dmp log=/opt/backup/log${rq}.log
echo "Export mission over!"
#!/bin/sh
echo "Begin backup turbocms oracle database..."
source /home/oracle/.bash_profile
rq=`date +%y%m%d`
echo "Starting time:"`date`
$ORACLE_HOME/bin/exp oracleuser/password file=/opt/backup/db${rq}.dmp log=/opt/backup/log${rq}.log
echo "Export mission over!"
2执行脚本,看是否可以正常备份
#./backuporacle.sh
查看/opt/backup下是否生成了数据库备份文件
3将脚本加入crontab任务,每天执行
#crontab -e
添加任务,表示每天凌晨1点半执行一次数据库备份
30 01 * * * /opt/backup/backuporacle.sh
5、总结
查看当前用户的cron配置,使用 crontab -l
编辑当前用户的cron配置,使用 crontab -e
删除当前用户的cron配置,使用 crontab -r
以root身份查看/编辑/删除某用户的cron配置,在命令后加上 -u USERNAME
配置系统级的任务,编辑 /etc/crontab 文件
分享到:
相关推荐
Linux 中的定时计划任务 crontab 使用实例 Linux 中的定时计划任务 crontab 是一个非常有用的功能,它允许用户在指定的时间执行特定的任务。crontab 是一个 daemon 程序,它会在后台运行,并根据用户的设置来执行...
Linux Crontab 使用详解 Crontab 是 Linux 系统中一个非常重要的工具,它允许用户在固定时间或固定间隔执行程序。Crontab 命令的基本格式为:crontab [-u user] [-l|-r|-e],其中 -u user 是指设定指定用户的时程表...
crontab使用简介,介绍了crontab 的基本使用方法以及要注意的使用点,值得一读。
### Crontab 使用详解 #### 一、Crontab 命令介绍 Crontab 是 Linux 和 Unix 系统中用于安排周期性任务的一种工具。通过 crontab 用户可以轻松地设定定时任务,比如自动备份数据库、定期清理日志文件等。 ##### ...
查看当前用户的crontab使用`crontab -l`,编辑使用`crontab -e`,删除使用`crontab -r`。若要操作其他用户的crontab,可以添加`-uUSERNAME`选项。 Crontab文件的语法结构包括六个字段,分别代表: 1. 分钟(0-59) ...
Linux 计划任务 crontab 使用说明 Linux 系统中,我们需要使用 crontab 命令来实现任务计划。crontab 命令是一种用于设置周期性被执行的指令的命令,常见于 Unix 和类 Unix 的操作系统中。该命令从标准输入设备读取...
### Crontab 使用方法详解 #### 一、概述 Crontab是Linux系统中的一个非常重要的工具,主要用于调度定时任务。通过crontab,用户可以设置周期性执行的任务,例如定期备份数据、发送电子邮件报告等。它使得系统管理...
Crontab 使用实践 在本文中,我们将详细介绍 Crontab 的使用,并将其与 MySQL 的备份结合,实现自动定时启动 MySQL 备份 shell 脚本。 什么是 Crontab Crontab 是一个在 Unix 和类 Unix 系统中用于计划作业的工具...
crontab是linux下最最常用的定时任务,本文档详细介绍了使用方法,供参考
Linux运维-2系统管理-15系统管理-174定时任务之crontab使用.avi
描述中提到"很清晰完整",意味着这份手册提供了全面且易懂的crontab使用指南,同时也表达了对提供高质量资源的赞赏,并批评了那些上传无关或低质量资源的行为。 **crontab详解:** 1. **crontab的用途**:crontab...
- **格式**:crontab使用特定的语法定义时间间隔,例如分钟、小时、日期、月份和星期。 - **语法**:`* * * * * command`,星号代表时间间隔范围,每个星号对应一个时间单位,从左到右依次为分钟、小时、日期、...
Crontab使用说明 ##### 2.1 Crontab语法与命令选项 Crontab命令支持以下几种基本用法: - **安装新的crontab**:`crontab file` 或 `crontab 将指定文件的内容作为新的crontab文件安装。 - **编辑当前用户的...
这里的设置指定了crontab使用的默认shell、路径变量、邮件接收者等。 #### 八、Crontab的特殊字符与表达式 除了基本的时间字段外,Crontab还支持以下特殊字符: - **星号(*)**:表示任何可能的值。 - **逗号(,...
【Solaris系统中的crontab使用详解】 在Solaris操作系统中,`crontab`是一个用于设置定时任务的工具,类似于Linux系统中的功能。然而,由于Solaris与Linux在某些命令和参数上存在差异,因此在使用`crontab`时需要...
【Solaris系统中的crontab使用详解】 在Solaris操作系统中,`crontab`命令用于设置和管理用户的定时任务,这些任务会在指定的时间自动执行。然而,与Linux或FreeBSD系统中的`crontab`命令相比,Solaris版本有一些...
**Crontab计划任务的使用方法** Crontab(cron table)是Unix和类Unix操作系统中的一种调度服务,用于设置周期性执行的任务。它的工作原理是通过守护进程`crond`来激活定时任务,这些任务被称为cron jobs。下面将...
在CentOS7环境中,为了使用`crontab`服务,首先需要安装相关的软件包。本文将详细阐述如何在CentOS7上安装`crontab`,以及它在日常运维中的作用和使用方法。 【描述】:“CentOS7 Crontab安装包”指的是在CentOS7...
5. **配置和使用Crontab**:编辑crontab文件,如`crontab -e`,根据需求添加定时任务。任务的格式由5个字段组成:分钟、小时、日期、月份和星期,以及要执行的命令。 了解了这些基本知识后,我们还需要掌握一些...
自己总结的简单易解的crontab的使用。 crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 ...