Linux定義腳本自啓服務歷程

Linux定義腳本自啓服務歷程

全部腳本內容

#!/bin/sh
# chkconfig:2345 60 30
# description:te
export JAVA_HOME=/home/java/jdk1.8.0_211/
export PATH=$JAVA_HOME/bin:$PATH
su - testShell -c 'nohup java -jar /home/csdn/csdnDownload-0.0.1-SNAPSHOT.jar --server.port=18080 &'
rm -rf /home/start.log
echo "##############$(date +%Y-%m-%d\ %H:%M:%S)###############: csdn web服務啓動情況" >> /home/start.log
sleep 60;
echo "##############$(date +%Y-%m-%d\ %H:%M:%S)###############: csdn web服務啓動情況" >> /home/start.log
echo "##############$(date +%Y-%m-%d\ %H:%M:%S)###############: netstat -tunlp|grep 18080" >> /home/start.log
echo "`netstat -tunlp|grep 18080`" >> /home/start.log

啓動服務

#!/bin/sh
# chkconfig:2345 60 30
# description:te
export JAVA_HOME=/home/java/jdk1.8.0_211/
export PATH=$JAVA_HOME/bin:$PATH
cd /home/csdn
nohup java -jar csdnDownload-0.0.1-SNAPSHOT.jar --server.port=18080 &

首先進入對應jar包所在目錄,運行相關命令,但是發現腳本無法識別java,所以手動增加了JAVA_HOMEPATH。成功運行。

增加日誌

爲了防止有部分服務啓動失敗,卻無法得知,所以增加日誌文件。通過查看端口是否被佔用判斷是否正常運行。
所以增加命令echo "##############$(date +%Y-%m-%d\ %H:%M:%S)###############: csdn web服務啓動情況" > /home/start.log
但是每次都有一行文字,且tail -f /home/start.log會有tail: /home/start.log: file truncated這種報錯,百度後發現echo命令後面的>一個是覆蓋,相當於刪除後在寫入。兩個則是纔是追加。
又因爲服務啓動需要時間,防止出現服務正在啓動,而日誌已經寫入,加入沉睡時間。

#!/bin/sh
# chkconfig:2345 60 30
# description:te
export JAVA_HOME=/home/java/jdk1.8.0_211/
export PATH=$JAVA_HOME/bin:$PATH
nohup java -jar /home/csdn/csdnDownload-0.0.1-SNAPSHOT.jar --server.port=18080 &
rm -rf /home/start.log
echo "##############$(date +%Y-%m-%d\ %H:%M:%S)###############: csdn web服務啓動情況" >> /home/start.log
sleep 60;
echo "##############$(date +%Y-%m-%d\ %H:%M:%S)###############: csdn web服務啓動情況" >> /home/start.log
echo "##############$(date +%Y-%m-%d\ %H:%M:%S)###############: netstat -tunlp|grep 18080" >> /home/start.log
echo "`netstat -tunlp|grep 18080`" >> /home/start.log

切換別的用戶運行命令

有的時候服務需要使用特定的用戶啓動,那麼這個時候則需要切換用戶運行。加入su命令。
su - 用戶名 -c '命令內容',注意-用戶名之間一定要有空格。
如果切換用戶時需要輸入密碼,則需要使用expect命令。expect命令詳解
最終命令如下:

#!/bin/sh
# chkconfig:2345 60 30
# description:te
export JAVA_HOME=/home/java/jdk1.8.0_211/
export PATH=$JAVA_HOME/bin:$PATH
su - testShell -c 'nohup java -jar /home/csdn/csdnDownload-0.0.1-SNAPSHOT.jar --server.port=18080 &'
rm -rf /home/start.log
echo "##############$(date +%Y-%m-%d\ %H:%M:%S)###############: csdn web服務啓動情況" >> /home/start.log
sleep 60;
echo "##############$(date +%Y-%m-%d\ %H:%M:%S)###############: csdn web服務啓動情況" >> /home/start.log
echo "##############$(date +%Y-%m-%d\ %H:%M:%S)###############: netstat -tunlp|grep 18080" >> /home/start.log
echo "`netstat -tunlp|grep 18080`" >> /home/start.log

接收start、stop、status等參數

#!/bin/sh
# chkconfig:2345 60 30
# description:te
export JAVA_HOME=/home/java/jdk1.8.0_211/
export PATH=$JAVA_HOME/bin:$PATH
case $1 in
          start) su root /opt/cloud/zookeeper-3.4.6/bin/zkServer.sh start;;
          stop) su root /opt/cloud/zookeeper-3.4.6/bin/zkServer.sh stop;;
          status) su root /opt/cloud/zookeeper-3.4.6/bin/zkServer.sh status;;
          restart) su root /opt/cloud/zookeeper-3.4.6/bin/zkServer.sh restart;;
          *)  echo "require start|stop|status|restart"  ;;
esac
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章