Ubuntu設(shè)置程序開(kāi)機(jī)自啟動(dòng)的操作步驟
1、概述
測(cè)試環(huán)境:ubuntu22.04 帶圖形界面
實(shí)現(xiàn)方式1:通過(guò)圖形界面的【啟動(dòng)應(yīng)用程序】設(shè)置開(kāi)機(jī)自啟動(dòng);
實(shí)現(xiàn)方式2:通過(guò)配置為服務(wù)實(shí)現(xiàn)開(kāi)機(jī)自啟動(dòng)。
2、圖形界面設(shè)置
優(yōu)點(diǎn):
- 圖形界面
- 使用簡(jiǎn)單
缺點(diǎn):
- 靈活性差,如果啟動(dòng)有依賴或者需要實(shí)現(xiàn)守護(hù)進(jìn)程只能通過(guò)寫(xiě)shell腳本實(shí)現(xiàn)。
找到【啟動(dòng)應(yīng)用程序】;
點(diǎn)擊【添加】,然后在【命令】欄輸入需要啟動(dòng)的可執(zhí)行程序路徑,名稱隨便填。
點(diǎn)擊【保存】后,在系統(tǒng)啟動(dòng)后會(huì)自動(dòng)啟動(dòng)添加的可執(zhí)行程序。
配置文件保存在~/.config/autostart
文件夾下。
3、設(shè)置為Systemd服務(wù)
優(yōu)點(diǎn):
- 功能強(qiáng)大,使用靈活;
- 支持設(shè)置程序啟動(dòng)依賴,例如在網(wǎng)絡(luò)準(zhǔn)備好了后再啟動(dòng);
缺點(diǎn):
- 沒(méi)有圖形界面,使用較為復(fù)雜;
進(jìn)入/etc/systemd/system
文件夾;
創(chuàng)建一個(gè).service
后綴的文件,名稱自定;
文件中填入啟動(dòng)服務(wù)的配置信息,如下所示;
[Unit] Description=WebServer # 簡(jiǎn)單描述服務(wù) After=network.target # 指定服務(wù)模塊啟動(dòng)后再啟動(dòng)(網(wǎng)絡(luò)模塊啟動(dòng)) [Service] User=mhf # 設(shè)置服務(wù)運(yùn)行的用戶,帶圖形界面的程序最好使用普通用戶運(yùn)行,否則可能會(huì)啟動(dòng)失敗,自己系統(tǒng)的用戶名 WorkingDirectory=/home/mhf/Code/bin64 # 設(shè)置進(jìn)程的工作目錄 ExecStart=/home/mhf/Code/bin64/ChatServer # 設(shè)置啟動(dòng)的可執(zhí)行程序路徑 Restart=always # 設(shè)置進(jìn)程 退出后的重啟方式 always:總是重啟 RestartSec=5 # 重啟服務(wù)之前需要等待的秒數(shù) Environment=DISPLAY=:0 # 帶圖形界面的程序必須指定運(yùn)行桌面環(huán)境,否則會(huì)啟動(dòng)失敗 # 環(huán)境變量 DISPLAY 告訴GUI程序如何與GUI通信。Unix系統(tǒng)可以運(yùn)行多個(gè)X服務(wù)器,即多個(gè)顯示。這些顯示可以是物理顯示(一個(gè)或多個(gè)監(jiān)視器),或遠(yuǎn)程顯示(通過(guò)網(wǎng)絡(luò)轉(zhuǎn)發(fā),例如通過(guò)SSH),或虛擬顯示,如Xvfb等。指定顯示的基本語(yǔ)法是 HOST:NUMBER ;如果忽略 HOST 部分,則顯示為本地顯示。 # 顯示從0開(kāi)始編號(hào),因此 :0 是啟動(dòng)的第一個(gè)本地顯示。在典型的設(shè)置中,這是顯示在計(jì)算機(jī)顯示器上的內(nèi)容。 [Install] WantedBy=multi-user.target
- 常用配置說(shuō)明
[Unit] # 啟動(dòng)順序與依賴關(guān)系。 Description:對(duì)當(dāng)前服務(wù)的簡(jiǎn)單描述。 After:指定.serive在哪些服務(wù)之后進(jìn)行啟動(dòng); Before:指定.serive在哪些服務(wù)之前進(jìn)行啟動(dòng); 除上述內(nèi)容,文件中還可能出現(xiàn)以下內(nèi)容: Requires:指定服務(wù)依賴于哪些服務(wù)(強(qiáng)依賴關(guān)系,一旦所依賴服務(wù)異常,當(dāng)前服務(wù)也隨之停止); Wants:指定服務(wù)依賴于哪些服務(wù)(弱依賴關(guān)系,所依賴服務(wù)異常不影響當(dāng)前服務(wù)正常運(yùn)行)。 [Service] # 啟動(dòng)行為 Type:定義啟動(dòng)類型??稍O(shè)置:simple,exec,forking,oneshot,dbus,notify,idle。 simple:ExecStart 字段啟動(dòng)的進(jìn)程為該服務(wù)的主進(jìn)程; forking:ExecStart 字段的命令將以 fork() 方式啟動(dòng),此時(shí)父進(jìn)程將會(huì)退出,子進(jìn)程將成為主進(jìn)程; ExecStart:定義啟動(dòng)進(jìn)程時(shí)執(zhí)行的命令; ExecStop:停止服務(wù)時(shí)執(zhí)行的命令; 除上述內(nèi)容外,文件中還可能出現(xiàn): EnvironmentFile:環(huán)境配置文件,用來(lái)指定當(dāng)前服務(wù)啟動(dòng)的環(huán)境變量; ExecReload:重啟服務(wù)時(shí)執(zhí)行的命令; ExecStartPre:?jiǎn)?dòng)服務(wù)之前執(zhí)行的命令; ExecStartPost:?jiǎn)?dòng)服務(wù)之后執(zhí)行的命令; ExecStopPost:停止服務(wù)之后執(zhí)行的命令; RemainAfterExit:設(shè)為yes,表示進(jìn)程退出以后,服務(wù)仍然保持執(zhí)行; RestartSec:重啟服務(wù)之前需要等待的秒數(shù)。 KillMode:定義 Systemd 如何停止服務(wù),可以設(shè)置的值如下: control-group(默認(rèn)值):當(dāng)前控制組里面的所有子進(jìn)程,都會(huì)被殺掉; process:只殺主進(jìn)程; mixed:主進(jìn)程將收到 SIGTERM 信號(hào),子進(jìn)程收到 SIGKILL 信號(hào); none:沒(méi)有進(jìn)程會(huì)被殺掉。 Restart:定義了退出后,Systemd 的重啟方式,可以設(shè)置的值如下: no(默認(rèn)值):退出后不會(huì)重啟; on-success:當(dāng)進(jìn)程正常退出時(shí)(退出狀態(tài)碼為0),才會(huì)重啟; on-failure:當(dāng)進(jìn)程非正常退出時(shí)(退出狀態(tài)碼非0),包括被信號(hào)終止和超時(shí),才會(huì)重啟; on-abnormal:當(dāng)被信號(hào)終止和超時(shí),才會(huì)重啟; on-abort:當(dāng)收到?jīng)]有捕捉到的信號(hào)終止時(shí),才會(huì)重啟; on-watchdog:看門狗超時(shí)退出,才會(huì)重啟; always:總是重啟。 [Install] # 區(qū)塊 Install一般填為WantedBy=multi-user.target,表示多用戶環(huán)境下服務(wù)被啟用。
- 配置完成后加載服務(wù)配置,用于服務(wù)文件修改后的配置更新。
sudo systemctl daemon-reload
- 立即啟動(dòng)服務(wù)
sudo systemctl start <service_name> # 例如 sudo systemctl start ChatServer.service sudo systemctl start ChatServer
- 停止服務(wù)
sudo systemctl stop <service_name> # 例如 sudo systemctl stop ChatServer.service
錯(cuò)誤信息 :如果GUI程序沒(méi)設(shè)置使用普通用戶啟動(dòng)、沒(méi)有設(shè)置Environment=DISPLAY=:0
就會(huì)報(bào)錯(cuò)
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設(shè)置程序開(kāi)機(jī)自啟動(dòng)的操作步驟的詳細(xì)內(nèi)容,更多關(guān)于Ubuntu程序開(kāi)機(jī)自啟動(dòng)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
apache time_wait連接數(shù)太多問(wèn)題解決方法
這篇文章主要介紹了apache time_wait連接數(shù)太多問(wèn)題解決方法,本文使用調(diào)整內(nèi)核參數(shù)來(lái)解決,需要的朋友可以參考下2014-11-11Linux下Apache安裝/增加mod_rewrite模塊的方法
如果你的apache已經(jīng)安裝好了,現(xiàn)在只想編譯出mod_rewrite.so模塊,在apache中進(jìn)行加載,下面我們就介紹這個(gè)方法。2011-04-04Linux系統(tǒng)多網(wǎng)卡環(huán)境下的路由配置詳解
這篇文章主要介紹了Linux系統(tǒng)多網(wǎng)卡環(huán)境下的路由配置詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-02-02Gzip在apache2中的設(shè)置和squid對(duì)它的處理
gzip可以級(jí)大的加速網(wǎng)站.有時(shí)壓縮比率高到80%,近來(lái)測(cè)試了一下,最少都有40%以上,還是相當(dāng)不錯(cuò)的.在Apache2之后的版本,模塊名不叫g(shù)zip,而叫mod_deflate2011-12-12Linux環(huán)境下生成openssl證書(shū)注意細(xì)節(jié)介紹
大家好,本篇文章主要講的是Linux環(huán)境下生成openssl證書(shū)注意細(xì)節(jié)介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12