【Linux基础篇】crontab命令调度

crontab命令进行任务调度,自动执行一些脚本,完成特定任务。

如,启动app,日志拷贝等

每个用户都有自己的调度crontab

vi /etc/crontab

crontab的初始内容:

SHELL=/bin/bash

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

MAILTO=root

HOME=/

 

#run-parts

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

02  4  *  *  *    root run-parts /etc/cron.daily

22  4  *  *  0   root run-parts /etc/cron.weekly

42  4  1  *  *   root run-parts /etc/cron.monthly 

* * * * *  用户名  可执行命令

* 分别代表  “分钟(0~59)、小时(0~23)、日期(1~31)、月份(1~12)、星期(0~6)”

例如:

* * * * *   #表示每分钟执行1次任务

1 * * * *  #表示当每小时的第1分钟时执行1次任务

2 12 * * *  #表示每天的12点第2分时执行1次任务(每天12:02)

0-59/2  * * * *  #表示每2分钟执行1次任务

实例一

1、在下午4:50删除abc目录下全部子目录和文件

2、从早8:00到下午6:00每小时读取/xyz目录下x1文件中每行第1个域的全部数据到/backup目录下的bak01.txt文件内

3、每个星期一下午5:50将/data目录下所有目录和文件归档压缩为文件backup.tar.gz

4、在下午5:55将IDE接口的CD-ROM卸载(假设CD-ROM的设备名为hdc)

5、在早晨8:00前开机后启动

 

可以在/etc/crontab文件中加入以下命令:

50 16 * * * rm -rf /abc/*

* 8-18/1 * * *  cut -f1 /xyz/x1 >;>; /backup/bak01.txt

50 17 * * * tar czvf backup.tar.gz /data

55 17 * * * unmount /dev/hdc

第5点,需要在8:00前开机,之后Shell自动运行crontab

实例二

系统管理员在每月第1天备份并压缩/var目录的所有内容

存放在/root/bak目录中

且文件名形式为yymmdd_var

其中,yy为年,mm为月,dd为日

 

因此,可以编写1个脚本完成备份功能,然后在crontab设置每天执行该脚本来达到目的

备份文件的脚本命名为planback.sh

 

#!/bin/bash

DIRNAME=`ls /root | grep bak`  #获取 /root/bak 字符串

if [ -z "$DIRNAME" ]; then  #如果 /root/bak 不存在,则创建

mkdir /root/bak

cd /root/bak

fi

 

#获取年、月、日

YY=`date +%y`

MM=`date +%m`

DD=`date +%d`

 

BACKVAR=$YY$MM$DD_var.tar.gz  #设置备份文件的名称

tar -zcvf $BACKVAR /var                    #将/var目录进行打包并压缩

echo "/var backup finished!"

 

然后,在crontab中配置脚本执行时间

0 1 * * *  /bin/bash   /usr/bin/planback.sh  #每天凌晨1点执行planback.sh脚本

========================================================================

当Linux用户登录时,Shell会自动执行.bash_profile文件

而.bash_profile文件会调用.bashrc脚本,因此,在.bashrc中调用我们自己写的脚本即可让某些脚本在用户登录后自动得到执行。如,Shell会自动配置当前用户的PATH环境变量。

但是,要想执行定时任务,还得靠crontab来完成!

.bash_profile

#!/bin/bash

if [ -f ~/.bashrc ]; then

. ~/.bashrc  #执行宿主目录下的bashrc脚本

fi

 

PATH=$PATH:$HOME/bin

export PATH

unset USERNAME

.bashrc

# .bashrc

alias rm="rm -i"

alias cp="cp -i"

alias mv="mv -i"

 

if [ -f /etc/bashrc ]; then

. /etc/bashrc  #执行/etc/bashrc脚本

fi

猜你喜欢

转载自just2learn.iteye.com/blog/2038359
今日推荐