標籤:shell 守護進程 開機自啟動
首先是建立shell守護進程:(shouhu.sh)
#!/bin/bashtest(){ while true do ls ./ >> 123.txt sleep 5 done}case $1 instart) path="/root/shouhu.pid" if [ -f $path ]; then pid=`cat /root/shouhu.pid` echo "進程$pid正在運行..." else test & echo $! > /root/shouhu.pid echo "運行進程$!..." fi ;;stop) pid=`cat /root/shouhu.pid` kill -9 $pid echo "結束進程$pid..." rm -rf /root/shouhu.pid ;;restart) path="/root/shouhu.pid" if [ -f "$path" ];then pid=`cat /root/shouhu.pid` kill -9 $pid echo "結束進程$pid..." rm -rf /root/shouhu.pid test & echo $! > /root/shouhu.pid echo "運行進程$!..." else echo "進程沒運行..." test & echo $! > /root/shouhu.pid echo "運行進程$!..." fi ;;status) path="/root/shouhu.pid" if [ -f $path ];then pid=`cat /root/shouhu.pid` echo "進程$pid正在運行..." else echo "進程沒運行..." fi ;;*) echo "Usage:{start|stop|restart|status}" ;;esac
然後把shouhu.sh 設定為系統服務:
#~]vi /usr/lib/systemd/system/shouhu.service
[Unit] Description=shouhu After=network.target [Service] Type=forking PIDFile=/root/shouhu.pid ExecStart=/root/shouhu.sh startExecReload=/root/shouhu.sh restartExecStop=/root/shouhu.sh stopPrivateTmp=true [Install] WantedBy=multi-user.target
CentOS 7的服務systemctl指令碼存放在:/usr/lib/systemd/,有系統(system)和使用者(user)之分,需要開機不登陸就能啟動並執行程式,存在系統服務裡,即:/usr/lib/systemd/system目錄下。每一個服務以.service結尾,一般會分為3部分:[Unit]、[Service]和[Install]
[Unit]部分主要是對這個服務的說明,內容包括Description和After,Description用於描述服務,After用於設定啟動先後順序;
[Service]部分是服務的關鍵,是服務的一些具體運行參數的設定,這裡Type=forking是後台啟動並執行形式,PIDFile為存放PID的檔案路徑,ExecStart為服務的運行命令,ExecReload為重啟命令,ExecStop為停止命令,PrivateTmp=True表示給服務分配獨立的臨時空間,注意:[Service]部分的啟動、重啟、停止命令全部要求使用絕對路徑,使用相對路徑則會報錯;
[Install]部分是服務安裝的相關設定,可設定為多使用者的。
儲存好編寫的檔案,然後設定開機啟動:
~]# systemctl enable shouhu
本文出自 “11324936” 部落格,請務必保留此出處http://11334936.blog.51cto.com/11324936/1925127
centos7用shell建立守護進程,並設定為系統服務,開機自動啟動