Ubuntu設置程序開機自啟動的操作步驟
1、概述
測試環(huán)境:ubuntu22.04 帶圖形界面
實現(xiàn)方式1:通過圖形界面的【啟動應用程序】設置開機自啟動;
實現(xiàn)方式2:通過配置為服務實現(xiàn)開機自啟動。
2、圖形界面設置
優(yōu)點:
- 圖形界面
- 使用簡單
缺點:
- 靈活性差,如果啟動有依賴或者需要實現(xiàn)守護進程只能通過寫shell腳本實現(xiàn)。
找到【啟動應用程序】;
點擊【添加】,然后在【命令】欄輸入需要啟動的可執(zhí)行程序路徑,名稱隨便填。
點擊【保存】后,在系統(tǒng)啟動后會自動啟動添加的可執(zhí)行程序。
配置文件保存在~/.config/autostart
文件夾下。
3、設置為Systemd服務
優(yōu)點:
- 功能強大,使用靈活;
- 支持設置程序啟動依賴,例如在網(wǎng)絡準備好了后再啟動;
缺點:
- 沒有圖形界面,使用較為復雜;
進入/etc/systemd/system
文件夾;
創(chuàng)建一個.service
后綴的文件,名稱自定;
文件中填入啟動服務的配置信息,如下所示;
[Unit] Description=WebServer # 簡單描述服務 After=network.target # 指定服務模塊啟動后再啟動(網(wǎng)絡模塊啟動) [Service] User=mhf # 設置服務運行的用戶,帶圖形界面的程序最好使用普通用戶運行,否則可能會啟動失敗,自己系統(tǒng)的用戶名 WorkingDirectory=/home/mhf/Code/bin64 # 設置進程的工作目錄 ExecStart=/home/mhf/Code/bin64/ChatServer # 設置啟動的可執(zhí)行程序路徑 Restart=always # 設置進程 退出后的重啟方式 always:總是重啟 RestartSec=5 # 重啟服務之前需要等待的秒數(shù) Environment=DISPLAY=:0 # 帶圖形界面的程序必須指定運行桌面環(huán)境,否則會啟動失敗 # 環(huán)境變量 DISPLAY 告訴GUI程序如何與GUI通信。Unix系統(tǒng)可以運行多個X服務器,即多個顯示。這些顯示可以是物理顯示(一個或多個監(jiān)視器),或遠程顯示(通過網(wǎng)絡轉發(fā),例如通過SSH),或虛擬顯示,如Xvfb等。指定顯示的基本語法是 HOST:NUMBER ;如果忽略 HOST 部分,則顯示為本地顯示。 # 顯示從0開始編號,因此 :0 是啟動的第一個本地顯示。在典型的設置中,這是顯示在計算機顯示器上的內容。 [Install] WantedBy=multi-user.target
- 常用配置說明
[Unit] # 啟動順序與依賴關系。 Description:對當前服務的簡單描述。 After:指定.serive在哪些服務之后進行啟動; Before:指定.serive在哪些服務之前進行啟動; 除上述內容,文件中還可能出現(xiàn)以下內容: Requires:指定服務依賴于哪些服務(強依賴關系,一旦所依賴服務異常,當前服務也隨之停止); Wants:指定服務依賴于哪些服務(弱依賴關系,所依賴服務異常不影響當前服務正常運行)。 [Service] # 啟動行為 Type:定義啟動類型??稍O置:simple,exec,forking,oneshot,dbus,notify,idle。 simple:ExecStart 字段啟動的進程為該服務的主進程; forking:ExecStart 字段的命令將以 fork() 方式啟動,此時父進程將會退出,子進程將成為主進程; ExecStart:定義啟動進程時執(zhí)行的命令; ExecStop:停止服務時執(zhí)行的命令; 除上述內容外,文件中還可能出現(xiàn): EnvironmentFile:環(huán)境配置文件,用來指定當前服務啟動的環(huán)境變量; ExecReload:重啟服務時執(zhí)行的命令; ExecStartPre:啟動服務之前執(zhí)行的命令; ExecStartPost:啟動服務之后執(zhí)行的命令; ExecStopPost:停止服務之后執(zhí)行的命令; RemainAfterExit:設為yes,表示進程退出以后,服務仍然保持執(zhí)行; RestartSec:重啟服務之前需要等待的秒數(shù)。 KillMode:定義 Systemd 如何停止服務,可以設置的值如下: control-group(默認值):當前控制組里面的所有子進程,都會被殺掉; process:只殺主進程; mixed:主進程將收到 SIGTERM 信號,子進程收到 SIGKILL 信號; none:沒有進程會被殺掉。 Restart:定義了退出后,Systemd 的重啟方式,可以設置的值如下: no(默認值):退出后不會重啟; on-success:當進程正常退出時(退出狀態(tài)碼為0),才會重啟; on-failure:當進程非正常退出時(退出狀態(tài)碼非0),包括被信號終止和超時,才會重啟; on-abnormal:當被信號終止和超時,才會重啟; on-abort:當收到?jīng)]有捕捉到的信號終止時,才會重啟; on-watchdog:看門狗超時退出,才會重啟; always:總是重啟。 [Install] # 區(qū)塊 Install一般填為WantedBy=multi-user.target,表示多用戶環(huán)境下服務被啟用。
- 配置完成后加載服務配置,用于服務文件修改后的配置更新。
sudo systemctl daemon-reload
- 立即啟動服務
sudo systemctl start <service_name> # 例如 sudo systemctl start ChatServer.service sudo systemctl start ChatServer
- 停止服務
sudo systemctl stop <service_name> # 例如 sudo systemctl stop ChatServer.service
錯誤信息 :如果GUI程序沒設置使用普通用戶啟動、沒有設置Environment=DISPLAY=:0
就會報錯
11月 25 17:48:30 mhf-virtual-machine systemd[1]: Stopped WebServer. 11月 25 17:48:30 mhf-virtual-machine systemd[1]: Started WebServer. 11月 25 17:48:30 mhf-virtual-machine ChatServer[5154]: Authorization required, but no authorization protocol specified 11月 25 17:48:30 mhf-virtual-machine ChatServer[5154]: qt.qpa.xcb: could not connect to display :0 11月 25 17:48:30 mhf-virtual-machine ChatServer[5154]: qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found. 11月 25 17:48:30 mhf-virtual-machine ChatServer[5154]: This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem. 11月 25 17:48:30 mhf-virtual-machine ChatServer[5154]: Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl, xcb. 11月 25 17:48:30 mhf-virtual-machine systemd[1]: ChatServer. service: Main process exited, code=dumped, status=6/ABRT 11月 25 17:48:30 mhf-virtual-machine systemd[1]: ChatServer. service: Failed with result 'core-dump'.
以上就是Ubuntu設置程序開機自啟動的操作步驟的詳細內容,更多關于Ubuntu程序開機自啟動的資料請關注腳本之家其它相關文章!
相關文章
apache time_wait連接數(shù)太多問題解決方法
這篇文章主要介紹了apache time_wait連接數(shù)太多問題解決方法,本文使用調整內核參數(shù)來解決,需要的朋友可以參考下2014-11-11Linux下Apache安裝/增加mod_rewrite模塊的方法
如果你的apache已經(jīng)安裝好了,現(xiàn)在只想編譯出mod_rewrite.so模塊,在apache中進行加載,下面我們就介紹這個方法。2011-04-04Linux系統(tǒng)多網(wǎng)卡環(huán)境下的路由配置詳解
這篇文章主要介紹了Linux系統(tǒng)多網(wǎng)卡環(huán)境下的路由配置詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-02-02Linux環(huán)境下生成openssl證書注意細節(jié)介紹
大家好,本篇文章主要講的是Linux環(huán)境下生成openssl證書注意細節(jié)介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12