linux自动启动network服务,Windows/Linux 创建开机启动服务
系統服務是一種應用程序類型,它在后臺運行。服務應用程序通常可以在本地和通過網絡為用戶提供一些功能。有些軟件無需安裝解壓就能使用,或者在安裝時未向系統注冊服務。如果我們需要開機啟動,需要手動創建服務。
Windows系統篇
相對于在注冊表中創建開機啟動程序,服務具有優先級高,權限大,無需賬戶登錄即可啟動的優點。
和計劃任務相比,服務可以手動停止,重啟。而計劃任務是周期性作業,只能按設定的規則執行一次或循環執行。
WinSW是一款開源免費,用于創建Windows服務的工具,項目地址:https://github.com/winsw/winsw
dc096911f30087316ce08940aa1653d2.png
Win10選擇WinSW.NET461,低版本系統如Win7選擇NET4,XP選擇NET2。如果本機沒有.NET框架的可以下載帶.NET的版本。sample-allOptions.xml是完整示例配置文件,一般我們下載sample-minimal.xml最小化示例配置文件。
需要注意的是,每一個啟動服務對應一個winsw程序,制作成服務后winsw.exe和相應配置文件不可刪除。
示例:
在Win10上配置frp服務端和客戶端開機啟動。新建frp文件夾,復制2個WinSW.NET461.exe副本,命名為start_frps.exe和start_frpc.exe,復制2個sample-minimal.xml副本,命名為start_frps.xml和start_frpc.xml。(exe程序和xml配置文件名要一至)。
start_frps.xml
frps
Frp Server
My Frp Server
C:\Tools\Frp\frps.exe
-c "C:\Tools\Frp\config\frps.ini"
start_frpc.xml
frpc
Frp Client
My Frp Client
C:\Tools\Frp\frpc.exe
-c "C:\Tools\Frp\config\frpc.ini"
配置說明:
id:指定在Windows系統內部使用的識別服務的ID。在系統中安裝的所有服務中必須是唯一,它應該完全由字母數字字符組成。
name:服務的簡短名稱,它可以包含空格和其他字符。
description:該服務可讀描述。當選中該服務時,它將顯示在Windows服務管理器中。
executable:該元素指定要啟動的可執行文件。它可以是絕對路徑,也可以指定可執行文件的名稱,然后從環境變量“PATH”中搜索(需要注意的是,服務經常在不同的用戶賬戶中運行,因此它可能需要有不同于你設置在環境變量Path中的路徑)。
arguments:啟動參數,可選。
在開始菜單點右鍵,用管理員身份打開PowerShell,定位到frp目錄。
c4a2ef22e1fc19ae60fb410c360e24f9.png
執行:
start_frps.exe install
start_frpc.exe install
efa5a5a4a73843f2345e57f1248c9be5.png
打開services.msc,可以看到服務已安裝成功。
930db2e48ea77aa87d7a8a68957a8b98.png
可以設為自動啟動。
如果需要刪除服務,在frp目錄中執行:
start_frps.exe uninstall
start_frpc.exe uninstall
Linux系統篇
如果僅僅只需要開機啟動,直接把執行代碼寫在 /etc/rc.local 中即可。有些發行版不存在該文件,手動建立,并設為可執行權限即可。
rc.local 文件:
#!/bin/bash
// ...執行代碼
文件權限設為可執行:chmod 755 /etc/rc.local
言歸正傳,Linux創建服務如下:
方法一
在 /etc/init.d 中創建文件,如:tomcat,并設為可執行權限。
文件內容:
#!/bin/bash
#
### BEGIN INIT INFO
# Provides: engr-z
# Required-Start:
# Required-Stop:
# Should-Start: $network $time
# Should-Stop: $network $time
# Default-Start: 3 4 5
# Default-Stop:
# Short-Description:
# Description:
### END INIT INFO
#
export CATALINA_HOME="tomcat目錄"
export CATALINA_BASE="實例目錄instance"
case "$1" in
start)
if [ -f $CATALINA_HOME/bin/startup.sh ];then
echo "start tomcat ..."
$CATALINA_HOME/bin/startup.sh
fi;;
stop)
if [ -f $CATALINA_HOME/bin/startup.sh ];then
echo "stop tomcat ..."
$CATALINA_HOME/bin/shutdown.sh
fi;;
*)
echo $"Usage: $0 {start|stop}"
exit 1;;
esac
文件### BEGIN INIT INFO和### END INIT INFO之間的聲明是必須的,給出了服務啟動時依賴的服務和運行級別。
執行以下命令,讓系統開機加載腳本:
update-rc.d defaults 99
方法二(推薦)
現在主流Linux發行版啟動都交給systemctl管理(舊的用chkconfig管理),配置起來簡單很多,不需要對Linux服務啟動原理過多了解。
systemctl腳本存放在:/usr/lib/systemd/,有系統(system)和用戶(user)之分,像需要開機不登陸就能運行的程序,就將程序存在系統服務里,即:/usr/lib/systemd/system 目錄下。
該目錄下的服務有以service結尾的,也有target結尾的。
service :守護進程的啟動、停止、重啟和重載是此類 unit 中最為明顯的幾個類型。
target :此類 unit 為其他 unit 進行邏輯分組。它們本身實際上并不做什么,只是引用其他 unit 而已。這樣便可以對 unit 做一個統一的控制。
配置文件一般會分為3部分:[Unit]、[Service]和[Install]
[Unit] # 主要是服務說明
Description=test # 簡單描述服務
After=network.target # 描述服務類別,表示本服務需要在network服務啟動后在啟動
Before=xxx.service # 表示需要在某些服務啟動之前啟動,After和Before字段只涉及啟動順序,不涉及依賴關系。
[Service] # 核心區域
Type=forking # 表示后臺運行模式。
User=user # 設置服務運行的用戶
Group=user # 設置服務運行的用戶組
KillMode=control-group # 定義systemd如何停止服務
PIDFile=/usr/local/test/test.pid # 存放PID的絕對路徑
Restart=no # 定義服務進程退出后,systemd的重啟方式,默認是不重啟
ExecStart=/usr/local/test/bin/startup.sh # 服務啟動命令,命令需要絕對路徑
PrivateTmp=true # 表示給服務分配獨立的臨時空間
[Install]
WantedBy=multi-user.target # 多用戶
以下是我在Linux下frps啟動服務腳本(frps.service):
[Unit]
Description=frps service
Requires=network.target network-online.target
After=network.target network-online.target
[Service]
Type=simple
PIDFile=/tmp/frps.pid
ExecStart=/opt/frp/frps -c /opt/frp.conf/frps.ini
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
1ccd48fca75be4b8e057b5bab12d4bc4.png
systemctl 提供了一組子命令來管理單個的 unit,其命令格式為:
systemctl [command] [unit]
示例:
systemctl daemon-reload # 重載系統服務
systemctl enable *.service # 設置某服務開機啟動
systemctl start *.service # 啟動某服務
systemctl stop *.service # 停止某服務
systemctl reload *.service # 重啟某服務
由于篇幅有限,systemctl更多用法和說明就不寫了。以上幾個命令用于操作系統服務足夠。
總結
以上是生活随笔為你收集整理的linux自动启动network服务,Windows/Linux 创建开机启动服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dnf刚出的一把粉太刀,45级的,刀很大
- 下一篇: 影院投资要多少钱啊?