1. 程式人生 > >linux學習-將seafile啟動腳本設置為開機啟動服務

linux學習-將seafile啟動腳本設置為開機啟動服務

post 退出 組成 parent run emc 服務啟動 libs tor

有時候,我們安裝的linux軟件和程序不是通過yum安裝,而是通過編譯或者其他方式安裝。有時需要將程序設置為服務,達到開機啟動的目的。

我在公有雲的與服務器上搭建了seafile網盤,當我重啟雲服務器的時候,seafile的程序不會自動啟動,需要我在相關目錄下執行腳本,才能啟動。

技術分享圖片

將兩個腳本使用軟連接到/root/目錄下,方便執行

技術分享圖片

現在采用服務的方式,將這這兩個腳本加入開機啟動


創建 systemd 服務文件 /etc/systemd/system/seafile.service

vim /etc/systemd/system/seafile.service 
=======================內容如下========================
[Unit]
Description=Seafile
# add mysql.service or postgresql.service depending on your database to the line below
After=network.target

[Service]
Type=oneshot
ExecStart=/home/cloud_storage/seafile-server-latest/seafile.sh start
ExecStop=/home/cloud_storage/seafile-server-latest/seafile.sh stop
RemainAfterExit=yes
User=seafile
Group=seafile

[Install]
WantedBy=multi-user.target


這個文件由三個部分組成:Unit\Service\Install

[Unit]主要是為了解決依賴關系。常見的添加Requires、After,如果這個依賴是可選的,那麽是Wants、After。依賴關系通常被用在服務(service)而不是(target)上,所以上述的httpd所依賴的僅僅是一些target,因而也就沒有Requires和Wants出現。

[service]可選擇幾種不同的服務啟動方式,啟動方式通過Type參數進行設置。

Type=simple(默認值):systemd認為該服務將立即啟動。服務進程不會fork。如果該服務要啟動其他服務,不要使用此類型啟動,除非該服務是socket激活型。

Type=forking:systemd認為當該服務進程fork,且父進程退出後服務啟動成功。對於常規的守護進程(daemon),除非你確定此啟動方式無法滿足需求,使用此類型啟動即可。使用此啟動類型應同時指定 PIDFile=,以便systemd能夠跟蹤服務的主進程。

Type=oneshot:這一選項適用於只執行一項任務、隨後立即退出的服務。可能需要同時設置 RemainAfterExit=yes 使得 systemd 在服務進程退出之後仍然認為服務處於激活狀態。

Type=notify:與 Type=simple 相同,但約定服務會在就緒後向 systemd 發送一個信號。這一通知的實現由 libsystemd-daemon.so 提供。

Type=dbus:若以此方式啟動,當指定的 BusName 出現在DBus系統總線上時,systemd認為服務就緒

[Install]

WantedBy=multi-user.target多用戶啟動



創建 systemd 服務文件 /etc/systemd/system/seahub.service

vim /etc/systemd/system/seahub.service
=======================內容如下========================
[Unit]
Description=Seafile hub
After=network.target seafile.service

[Service]
# change start to start-fastcgi if you want to run fastcgi
ExecStart=/home/cloud_storage/seafile-server-latest/seahub.sh start
ExecStop=/home/cloud_storage/seafile-server-latest/seahub.sh stop
User=seafile
Group=seafile
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target


重新加載服務

systemctl daemon-reload
systemctl enable seafile.service
systemctl enable seahub.service


linux學習-將seafile啟動腳本設置為開機啟動服務