crontab选项-e是修改,-r则是直接删除用户定时任务计划任务,而且没有提示,直接删除!!!。蛋疼的是-e -r 2个参数在键盘上的位置非常接近。经常容易不小心就删除了。
本文通过建立crontab的别名,即alias,实现当检测到用户输入crontab时调用/usr/bin/cron.sh来判断用户操作从而避免误删除
实现:
1.新建shell
# vim /usr/bin/cron.sh,内容如下


#!/bin/sh
source /etc/profile;
source ~/.bash_profile;

etime=`date -d “0 days ago” +%Y%m%d_%H%M%S`

if [ “$1” = “-r” ] ; then
echo “My God! Dangerous…”
echo “Exit…”
exit 2
fi

if [ “$1” = “-l” ] ; then
/usr/bin/crontab -l
exit 0
fi

if [ “$1” = “-e” ] ; then
mkdir -p ~/cronbak
/usr/bin/crontab -l > ~/cronbak/cron.bak.$etime.a
/usr/bin/crontab -e
/usr/bin/crontab -l > ~/cronbak/cron.bak.$etime.b
fi
2.给刚刚那sh添加执行权限,不然你crontab -l之类的时候会提示。。。permission等。

# chmod +x /usr/bin/cron.sh

3.在/etc/bashrc末尾添加
alias crontab=’/usr/bin/cron.sh’
然后退出当前窗口再重新登录,
就可以实现,禁止crontab –r以及以后每次编辑都备份cron列表到~/cronbak目录下面

来源:http://www.111cn.net/sys/linux/58326.htm

Comments are closed.

Post Navigation