引言:前段时间写了个脚本,用来定时备份数据库的
,后来定时任务也添加了,结果却要求写个脚本去添加定时任务,哎...当时真是一头雾水!后来请教了下高人,得以解决。下面我们来看到脚本。
#!/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。
脚本很强大,永远保持一颗学习脚本的心!!!