linux下使用crontab很顺利,没遇到什么问题,直接crontab -e添加任务即可,可是在 Solaris下却碰到些问题,没有按计划执行指定任务,问题解决后,简要总结一下Solaris下crontab的用法:
a、添加操作
bash-3.00# vi /var/spool/cron/crontabs/root
* * * * * /export/home/test/analysisTNS/DCSMonitor.sh
b、删除FIFO,否则cron不能重启
bash-3.00# rm /etc/cron.d/FIFO
c、杀掉现有crontab进程
bash-3.00# ps -ef | grep cron
root 308 1 0 11:09:58 ? 0:01 /usr/sbin/cron
bash-3.00# kill -9 308
d、重启crontab进程
bash-3.00# /usr/sbin/cron
e、查看crontab日志
启动正确后,可以看见如下信息:
! *** cron started *** pid = 2631 Mon Jun 7 14:29:24 2010
> CMD: /export/home/test/analysisTNS/DCSMonitor.sh
> root 2637 c Mon Jun 7 14:30:00 2010
< root 2637 c Mon Jun 7 14:30:00 2010
f、Solaris定是脚本
# !/bin/bash
check_service() {
# if return 0, service exist in system
# else, service not exist in system
mainprocess=`ps -e | grep analysis`
# in linux, i use mainprocess=$(ps -e | grep analysisTNS)
if [ -z "$mainprocess" ]; then
return 1
else
return 0
fi
if check_service; then
echo "service tns is running now"
else
cd /export/home/test/analysisTNS
./analysisTNS >/dev/null 2>&1 &
echo "start tns success"
exit 0
上面完成后,就可以看见指定任务按计划执行了。
脚本处检查进程时使用了ps -e | grep analysis,而不是ps -e | grep analysisTNS,因为我发现即使进程在执行,使用后者却没有任何输出,使用前者则可以检测到进程信息,如下:
bash-3.00# ps -e | grep analysisTNS
bash-3.00# ps -e | grep analysis
2641 ? 0:00 analysis
使用ps -ef | grep analysisTNS当然可以检测到进程,但同时grep命令本身也被检测到了,用-v发现也不好使,Solaris真有点不一样。
bash-3.00# ps -ef | grep analysisTNS
root 2641 1 0 14:30:00 ? 0:00 ./analysisTNS
root 3214 830 0 15:24:08 pts/2 0:00 grep analysisTNS
而这在linux下我还没发现过,很奇怪!