系統 centos 7
能夠開機啟動
能夠一鍵開啟,關閉,重啟
注意檔案編碼的問題
[unit]
description=service
after=network.target
[service]
## 可以包含的值為******、forking、oneshot、dbus、notify、idel其中之一。
## type=forking
## 守護程序的pid檔案,必須是絕對路徑,強烈建議在type=forking的情況下明確設定此選項
## pidfile=/project/frp_0.19.0_linux_amd64
## 設定啟動服務是要執行的命令(命令+引數)
execstart=/project/frp_0.19.0_linux_amd64/systemctl-frps start
## execstop=
## execreload=
## 當服務程序正常退出、異常退出、被殺死、超時的時候,是否重啟系統該服務。程序通過正常操作被停止則不會被執行重啟。可選值為:
## no:預設值,表示任何時候都不會被重啟
## always:表示會被無條件重啟
## no-success:表示僅在服務程序正常退出時重啟
## on-failure:表示僅在服務程序異常退出時重啟
## 所謂正常退出是指,退出碼為「0」,或者到ighup, sigint, sigterm, sigpipe 訊號之一,並且退出碼符合 succes***itstatus= 的設定。
## 所謂異常退出時指,退出碼不為「0」,或者被強殺或者因為超時被殺死。
restart=on-abort
#重啟時間間隔無限制
startlimitinterval=0
[install]
wantedby=multi-user.target
檔案放到 /usr/lib/systemd/system/ 下
service 部分的啟動、重啟、停止命令全部要求使用絕對路徑
如果單獨執行的是命令,這個就已經足夠了,但是如果執行一些守護程序的話或者更複雜的情況的話,需要單獨寫乙個指令碼來執行
關於 service 裡面的詳細配置可以參考:
#!/bin/bash
#set service name
service_name=frpserverservice
bin_file_name=frps
# set basic executable environment, do not modify those lines
bin_home=$(dirname $0)
if [ "$" = "." ]; then
bin_home=$(pwd)
ficd $
#the service pid
pid=`ps -ef|grep $service_name|grep -v grep|grep -v kill|awk ''`
start() already start with pid :$pid"
return 0
finohup ./$bin_file_name -c ./$bin_file_name.ini >/dev/null 2>&1 &
echo "starting $service_name : "
pid=`ps -ef|grep $service_name|grep -v grep|grep -v kill|awk ''`
if [ $ ]; then
echo "start $ successfully with pid: $"
else
echo "start $ failed"fi}
debug() ]; then
kill -9 $pid
fi./$ -c ./$.ini
}stop() ]; then
echo "service $service_name already stopped"
else
kill -9 $pid
echo -n "shutting down $service_name : "
check_pid=`jps | grep $|grep -v grep|awk ''`
while [ -n "$" ]
docheck_pid=`jps | grep $|grep -v grep|awk ''`
if [ -z "$" ];then
break;
fidone
echo "stop $ with pid: $"fi}
status() |grep -v grep|awk ''`
if [ -n "$pid" ] ;then
echo "service $service_name (pid $pid) is running ..."
else
echo "service $service_name is stopped"fi}
# see how we were called.
case "$1" in
start)
start
;;stop)
stop
;;status)
status
;;restart)
stop
start
;;debug)
debug
;;*)
echo $"usage: $0 "
exit 2
esac
上面這個指令碼是乙個模板,包括了start,stop,status,restart,debug各個命令,是可以直接傳參執行的
在乙個檔案上的 execstart= 就可以執行指令碼檔案 並傳入 start 引數
注意: 如果執行的是守護程序的話,type=forking 要配置上,意指 execstart 命令裡面執行程序才是主程序
啟動服務:systemctl start servicename
停止服務:systemctl stop servicename
服務狀態:systemctl status servicename
專案日誌:journalctl -u servicename
開機啟動:systemctl enable servicename
Ubuntu上用systemctl實現隨機啟動
在ubuntu 16.04 lts中,etc init.d已被 usr lib systemd所取代 貌似15.04就已經轉用了 指令碼仍然可以啟動和停用服務。但預設用的命令現在是 systemctl 而不是chkconfig命令.當然你可以自己安裝chkconfig命令,來支援舊配置。換方之,ub...
linux筆記之systemctl命令
通過systemctl來管理單一服務的啟動 開機啟動和狀態檢視。systemctl command unit command主要有 start 立刻啟動unit stop 立刻關閉unit restart 立即重啟 enable 開機啟動 disable 開機不啟動 is active 當前有沒有在...
Linux上的Systemctl命令
linuxsystemctl是乙個系統管理守護程序 工具和庫的集合,用於取代system v service和chkconfig命令,初始程序主要負責控制systemd系統和服務管理器。通過systemctl help可以看到該命令主要分為 查詢或傳送控制命令給systemd服務,管理單元服務的命令...