天天看點

ubuntu第八講:自啟動管理

作者:野兔狂奔追蝸牛

ubuntu第八講:自啟動管理

上一篇講了如何用cpolar軟體實作内網穿透,通過簡單設定實作了外網遠端登入及觀看電影功能。今天講一下如何一開機就自動運作cpolar這個軟體。

ubuntu管理開機自啟動軟體的方法有以下幾種:配置rc.local檔案,系統自帶的軟體啟動管理器,systemd服務。

先說結論:

1.rc.local檔案在ubuntu18.04版之後就沒有了,但是在其他linux系統(包括部分群晖)下還是可以用,這裡稍微了解一下就行。

2.系統自帶的軟體啟動管理器可以設定軟體或者腳本在開機時自啟動,但是需要先登入系統,也就是說如果隻是開機但是未登入系統的話軟體是不會運作的。

3.systemd服務。如果想在系統登入前就運作程式,需要利用systemd服務。這是本文重點内容。

rc.local檔案

rc.local檔案本質上是一個shell腳本。将需要執行的指令在rc.local檔案内編輯好,然後賦予該檔案具有可執行權限(執行sudo chmod+x /etc/rc.local )即可。

基本格式為所有需要執行的指令必須在exit 0 之前。一個檔案内可以執行多個腳本,例如

/home/username/test1.sh &

/home/username/test2.sh &

/home/username/test3.sh &

......

exit 0

知識點:

該檔案位于/etc/rc.local #注意!在ubuntu18.04版本以後沒有這個檔案!打開/lib/systemd/rc-local.service可以看到關于rc.local的資訊,說明這個檔案的功能還是存在的,隻是新版的ubuntu已經不推薦使用。

與rc.local配套使用的還有一個檔案夾unin.d,目錄位于/etc/init.d/,這個檔案夾内都是shell腳本檔案。另外還有多個檔案夾rc*.d,目錄位于/etc/rc*.d/,*号表示從0-6,另外還有一個S(大寫)。這裡面都是一些軟連結檔案,大多指向init.d檔案夾。檔案夾名稱0-6表示什麼意思呢?

0-Halt,關機模式

1-Single,單使用者模式

2-Full multi-user with display manager(GUI)多使用者模式

3-Full multi-user with display manager(GUI)

4-Full multi-user with display manager(GUI)

5-Full multi-user with display manager(GUI)

6-Reboot,重新開機

運作runlevel #檢視目前系統運作級别,本例為N5。那麼主要的配置檔案在/etc/rc5.d/目錄下。

系統自帶的軟體啟動管理器

ubuntu自帶軟體啟動管理工具。圖形化界面,對初學者來說比較友好。單擊啟動軟體,出現啟動應用程式首選項設定視窗。

ubuntu第八講:自啟動管理

可以把需要開機自啟動的程式添加到清單内。

ubuntu第八講:自啟動管理

舉例:添加cpolar自啟動指令

名稱:cpolar #自由輸入,自己能了解就行。

指令:/home/rex/下載下傳/cpolar/cpolar http 8096 #指定到自己電腦上cpolar檔案存放的位置,并且添加http 8096的參數。

注釋:cpolar開啟http8096端口 #自由輸入,自己能了解就行。

這樣設定好之後,開機就會自動運作了。

缺點:隻能設定一條指令,要麼開通http,要麼開通tcp。

ubuntu第八講:自啟動管理

通過腳本一鍵啟動http和tcp隧道

建立cpolarinstall.sh腳本檔案

ubuntu第八講:自啟動管理

添加到軟體啟動器中,也就是說啟動器可以直接運作腳本檔案。

ubuntu第八講:自啟動管理

這樣開機的時候,就能同時開通http和tcp端口了。

但是還是有缺點:如果電腦處于未登入狀态,這條指令是不會執行的。這樣就産生了死循環,我都沒有啟動tcp端口,怎麼能登入電腦呢!不行,還得找辦法。

systemd服務

Systemd是在 Linux 系統上最新的守護程序管理器,基本用法如下:

$ sudo systemctl enable [service_name] #開機啟動某項服務

$ sudo systemctl disable [service_name] #關閉某項服務

$ sudo systemctl status [service_name] #檢視某項服務的狀态

$ sudo systemctl start [service_name] #啟動某項服務

systemctl enable指令會将服務單元添加到/etc/systemd/system/multi-user.target.wants目錄下。當系統啟動時會自動執行,并且會依照依賴關系按順序啟動服務。當所有服務執行完畢,系統啟動過程也就完成了。

知識點:

ubuntu16.10版以後不再使用init.d管理系統,改用systemd,包括用systemctl指令來替代service和chkconfig的功能。

執行個體示範:設定cpolar在系統登入前自啟動

第一步:本例我把cpolar程式存放在/opt/cpolar/bin/中(注:一般自己安裝的軟體都可以放在opt這個檔案夾内。)

ubuntu第八講:自啟動管理

第二步:在/etc/systemd/system/檔案夾内建立cpolar.service配置檔案,如下圖所示。(我是直接複制另一個service檔案,然後改一下名稱,這樣service檔案的基本格式就有了。也可以在别的位置建立檔案,然後拷貝過去,例如$ cp -i cpolar.service /etc/systemd/system/)

ubuntu第八講:自啟動管理

運作sudo nano /etc/systemd/system/cpolar.service編輯cpolar.service檔案,具體内容如下所示。

[Unit]

Description=cpolar Service #描述,請自由發揮,自己能看懂就行

[Service]

WorkingDirectory=/opt/cpolar #指定軟體目錄

ExecStart=/opt/cpolar/bin/cpolar start-all #軟體路徑及運作參數。cpolar start-all指啟動所有端口,詳見cpolar.yml配置檔案。

RestartForceExitStatus=3

User=rex #指定“誰”來運作軟體

[Install]

WantedBy=multi-user.target #固定語句,不用修改。

ubuntu第八講:自啟動管理

知識點:

service是有固定格式的,分為[Unit] [Service] [Install]三個部分。

第三步:生成指向/etc/systemd/system/multi-user.target.wants/的軟連接配接

$ ln -s /etc/systemd/system/cpolar.service /etc/systemd/system/multi-user.target.wants/

所有設定完成,是不是很簡單!重新開機電腦看看運作情況。

(本文結束)

導讀指南

白學ubuntu系列,目前已經整理了十章内容,我會逐一釋出。

ubuntu第一講:系統安裝及初體驗

ubuntu第二講:常用軟體推薦與安裝

ubuntu第三講:遠端連接配接

ubuntu第四講:檔案共享

ubuntu第五講:搭建影音伺服器

ubuntu第六講:硬體監測

ubuntu第七講:内網穿透

ubuntu第八講:自啟動管理

ubuntu第九講:service服務及腳本

ubuntu第十講:SSH遠端連接配接