這篇文章,主要是接着上次的redmine部署的,文章主要包含兩部分,redmine的啓動腳本和監控腳本
redmine啓動腳本
#!/bin/bash #redmine Startup script for the redmine server #chkconfig: - 85 15 Prog=redmine Prog_dir=/data/redmine #find the redmine's pid Pid=`ps aux | grep "\<$Prog\>" | pidof ruby` ProgPort=3000 ReturnCode=`ss -tlnp | grep "\<$ProgPort\>" &> /dev/null;echo $?` start() { if [ $ReturnCode -eq 0 ] &> /dev/null;then echo " Redmine is Already Running !!! " else cd $Prog_dir ruby redmine/script/rails server webrick -e production -d &> /dev/null echo -e "Starting redmine ..... \e[32m[ OK ]\e[m" fi } stop() { if [ $ReturnCode -ne 0 ] &> /dev/null;then echo " Redmine is Already Stopped !!!" else kill -9 $Pid echo -e "Stopping redmine ..... \e[32m[ OK ]\e[m" fi } status() { if [ $ReturnCode -eq 0 ] &> /dev/null;then echo " Redmine is Running !!! " else echo " Redmine is Stopped !!! " fi } case "$1" in start) start ;; stop) stop ;; status) status ;; restart) stop start ;; *) echo "Usage: $Prog {start|stop|status|restart}" esac
注意:使用啓動腳本時,用戶必須是有ruby環境的用戶,假設,我是使用dev用戶部署的redmine,如果使用root去啓動redmine,會啓動失敗,因爲root沒有ruby的環境
redmine的監控腳本
#!/bin/bash #this script in order to check the redmine , if it down ,make it start #date : 2015/1/9 #notice : any questions send mail to [email protected] #rvm environment source ~/.bashrc source ~/.bash_profile #change to redmine's directoy RedmineDir=/data/redmine/ cd $RedmineDir [ -d logs ] || mkdir logs #this redmine is listen on 3000 ListenPort=3000 ReturnCode=`ss -tlnp | grep "\<$ListenPort\>" &> /dev/null ; echo $?` #check the redmine and, add message to logs,located in /data/redmine/logs if [ $ReturnCode -eq 0 ];then echo -e "\e[32mtime: `date +%F-%T`\e[m" >> logs/access.log echo -e "\e[35mredmine is running.\e[m" >> logs/access.log else /etc/init.d/redmine restart echo -e "\e[32mtime: `date +%F-%T`\e[m">> logs/error.log echo -e "\e[31mredmine is down to running.\e[m" >> logs/error.log fi #now check the log file size,delete the file which is larger then 100MB cd ${RemineDir}logs for file in access.log error.log do Size=`ls -l $file | awk -F" " '{print $5}'` if (( $Size >= 102400 ));then > $file fi done
將監控腳本加入到任務計劃中去
dev@mon1:~$ crontab -e */10 * * * * /bin/bash /home/dev/scripts/redmine.sh &> /dev/null