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

Ubuntu設置程序開機自啟動的操作步驟

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

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程序開機自啟動的資料請關注腳本之家其它相關文章!

相關文章

最新評論