欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Ubuntu設(shè)置程序開機(jī)自啟動的操作步驟

 更新時間:2025年06月08日 14:16:22   作者:mahuifa  
在部署程序到邊緣端時,我們總希望可以通電即啟動我們寫好的程序,本篇博客用以記錄如何在ubuntu開機(jī)執(zhí)行某條命令或者某個可執(zhí)行程序,需要的朋友可以參考下

1、概述

測試環(huán)境:ubuntu22.04 帶圖形界面
實(shí)現(xiàn)方式1:通過圖形界面的【啟動應(yīng)用程序】設(shè)置開機(jī)自啟動;
實(shí)現(xiàn)方式2:通過配置為服務(wù)實(shí)現(xiàn)開機(jī)自啟動。

2、圖形界面設(shè)置

優(yōu)點(diǎn):

  • 圖形界面
  • 使用簡單

缺點(diǎn):

  • 靈活性差,如果啟動有依賴或者需要實(shí)現(xiàn)守護(hù)進(jìn)程只能通過寫shell腳本實(shí)現(xiàn)。

找到【啟動應(yīng)用程序】;

點(diǎn)擊【添加】,然后在【命令】欄輸入需要啟動的可執(zhí)行程序路徑,名稱隨便填。

點(diǎn)擊【保存】后,在系統(tǒng)啟動后會自動啟動添加的可執(zhí)行程序。

配置文件保存在~/.config/autostart文件夾下。

3、設(shè)置為Systemd服務(wù)

優(yōu)點(diǎn):

  • 功能強(qiáng)大,使用靈活;
  • 支持設(shè)置程序啟動依賴,例如在網(wǎng)絡(luò)準(zhǔn)備好了后再啟動;

缺點(diǎn):

  • 沒有圖形界面,使用較為復(fù)雜;

官方文檔

進(jìn)入/etc/systemd/system文件夾;

創(chuàng)建一個.service后綴的文件,名稱自定;

文件中填入啟動服務(wù)的配置信息,如下所示;

[Unit]
Description=WebServer    # 簡單描述服務(wù)
After=network.target     # 指定服務(wù)模塊啟動后再啟動(網(wǎng)絡(luò)模塊啟動)

[Service]
User=mhf                 # 設(shè)置服務(wù)運(yùn)行的用戶,帶圖形界面的程序最好使用普通用戶運(yùn)行,否則可能會啟動失敗,自己系統(tǒng)的用戶名
WorkingDirectory=/home/mhf/Code/bin64      # 設(shè)置進(jìn)程的工作目錄
ExecStart=/home/mhf/Code/bin64/ChatServer  # 設(shè)置啟動的可執(zhí)行程序路徑
Restart=always                             # 設(shè)置進(jìn)程 退出后的重啟方式 always:總是重啟
RestartSec=5                               # 重啟服務(wù)之前需要等待的秒數(shù)
Environment=DISPLAY=:0   # 帶圖形界面的程序必須指定運(yùn)行桌面環(huán)境,否則會啟動失敗
# 環(huán)境變量 DISPLAY 告訴GUI程序如何與GUI通信。Unix系統(tǒng)可以運(yùn)行多個X服務(wù)器,即多個顯示。這些顯示可以是物理顯示(一個或多個監(jiān)視器),或遠(yuǎn)程顯示(通過網(wǎng)絡(luò)轉(zhuǎn)發(fā),例如通過SSH),或虛擬顯示,如Xvfb等。指定顯示的基本語法是 HOST:NUMBER ;如果忽略 HOST 部分,則顯示為本地顯示。
# 顯示從0開始編號,因此 :0 是啟動的第一個本地顯示。在典型的設(shè)置中,這是顯示在計算機(jī)顯示器上的內(nèi)容。

[Install]
WantedBy=multi-user.target
  • 常用配置說明
[Unit]    # 啟動順序與依賴關(guān)系。
Description:對當(dāng)前服務(wù)的簡單描述。
After:指定.serive在哪些服務(wù)之后進(jìn)行啟動;
Before:指定.serive在哪些服務(wù)之前進(jìn)行啟動;
除上述內(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]   # 啟動行為
Type:定義啟動類型??稍O(shè)置:simple,exec,forking,oneshot,dbus,notify,idle。
simple:ExecStart 字段啟動的進(jìn)程為該服務(wù)的主進(jìn)程;
forking:ExecStart 字段的命令將以 fork() 方式啟動,此時父進(jìn)程將會退出,子進(jìn)程將成為主進(jìn)程;
ExecStart:定義啟動進(jìn)程時執(zhí)行的命令;
ExecStop:停止服務(wù)時執(zhí)行的命令;
除上述內(nèi)容外,文件中還可能出現(xiàn):
EnvironmentFile:環(huán)境配置文件,用來指定當(dāng)前服務(wù)啟動的環(huán)境變量;
ExecReload:重啟服務(wù)時執(zhí)行的命令;
ExecStartPre:啟動服務(wù)之前執(zhí)行的命令;
ExecStartPost:啟動服務(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)程,都會被殺掉;
    process:只殺主進(jìn)程;
    mixed:主進(jìn)程將收到 SIGTERM 信號,子進(jìn)程收到 SIGKILL 信號;
    none:沒有進(jìn)程會被殺掉。
Restart:定義了退出后,Systemd 的重啟方式,可以設(shè)置的值如下:
    no(默認(rèn)值):退出后不會重啟;
    on-success:當(dāng)進(jìn)程正常退出時(退出狀態(tài)碼為0),才會重啟;
    on-failure:當(dāng)進(jìn)程非正常退出時(退出狀態(tài)碼非0),包括被信號終止和超時,才會重啟;
    on-abnormal:當(dāng)被信號終止和超時,才會重啟;
    on-abort:當(dāng)收到?jīng)]有捕捉到的信號終止時,才會重啟;
    on-watchdog:看門狗超時退出,才會重啟;
    always:總是重啟。
 
[Install]  # 區(qū)塊
Install一般填為WantedBy=multi-user.target,表示多用戶環(huán)境下服務(wù)被啟用。
  • 配置完成后加載服務(wù)配置,用于服務(wù)文件修改后的配置更新。
sudo systemctl daemon-reload 
  • 立即啟動服務(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

錯誤信息 :如果GUI程序沒設(shè)置使用普通用戶啟動、沒有設(shè)置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設(shè)置程序開機(jī)自啟動的操作步驟的詳細(xì)內(nèi)容,更多關(guān)于Ubuntu程序開機(jī)自啟動的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論