引言:前段时间写了个脚本,用来定时备份数据库的 ,后来定时任务也添加了,结果却要求写个脚本去添加定时任务,哎...当时真是一头雾水!后来请教了下高人,得以解决。下面我们来看到脚本。
#!/bin/bash
myscript=resume_backup.sh
filePath=$(cd "$(dirname "$0")";pwd)
echo $filePath
crontab -l > cron
number=`grep -n "$myscript" cron | cut -d ":" -f 1`
aa=$number
echo $aa
if [ -z $aa ];
then
echo "该任务不存在,将添加"
echo '1 12 * * * '$filePath'/'$myscript'' >> cron
crontab cron
rm -f cron
else
echo "该任务已经存在,将会先删除再添加"
sed -i '/'$myscript'/d' cron
echo '0 0 * * 0 '$filePath'/'$myscript'' >> cron
crontab cron
rm -f cron
fi
这个脚本的大致功能就是,首先去判断任务是否已经存在,存在的话就先删除,再去添加,不存在就直接添加了。
代码解释:crontab -l > cron 这行就是将定时任务写到一个中间文件中,方便下面对定时任务的操作。
number=`grep -n "$myscript" cron | cut -d ":" -f 1` 这个是获得$myscript在cron中所在的行数。
if [ -z $aa ]; 判断aa是否为空。
echo '1 12 * * * '$filePath'/'$myscript'' >> cron 将 '1 12 * * * '$filePath'/'$myscript'' 写到 cron中去。
crontab cron 将cron中的内容写到定时任务中去(全部覆盖)。
sed -i '/'$myscript'/d' cron 从cron中删除包含$myscript的行。
rm -f cron 删除中间文件cron。
脚本很强大,永远保持一颗学习脚本的心!!!