1. 程式人生 > 其它 >linux 啟動後臺程序

linux 啟動後臺程序

&命令

用途:在後臺執行

nohup 命令

用途:不掛斷地執行命令。

語法:nohup Command [ Arg … ] [ & ]

nohup python3 main.py >> main.log 2> &1 &

0:代表 – stdin (standard input)標準輸入

1: 代表– stdout (standard output)標準輸出

2 :代表– stderr (standard error) 標準錯誤

2>&1是將標準錯誤(2)重定向到標準輸出(&1),標準輸出(&1)再被重定向輸入到main.log檔案中。
————————————————
版權宣告:本文為CSDN博主「六指黑俠i」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/qq_42353939/article/details/89242941

新增到system中 配置如下:

Systemd 預設從目錄/etc/systemd/system/讀取配置檔案。但是,裡面存放的大部分檔案都是符號連結,指向目錄/usr/lib/systemd/system/,真正的配置檔案存放在那個目錄。

systemctl enable命令用於在上面兩個目錄之間,建立符號連結關係。

systemctl cat命令可以檢視配置檔案的內容。

一個service檔案配置如下:

[Unit]
Description=ATD daemon
[Service]
Type=forking
ExecStart=/usr/bin/atd #啟動程式
ExecStop=/bin/kill -9 $MAINPID #殺死主程序

[Install]
WantedBy=multi-user.target

[Unit]區塊通常是配置檔案的第一個區塊,用來定義 Unit 的元資料,以及配置與其他 Unit 的關係。它的主要欄位如下。

Description:簡短描述
Documentation:文件地址
Requires:當前 Unit 依賴的其他 Unit,如果它們沒有執行,當前 Unit 會啟動失敗
Wants:與當前 Unit 配合的其他 Unit,如果它們沒有執行,當前 Unit 不會啟動失敗
BindsTo:與Requires類似,它指定的 Unit 如果退出,會導致當前 Unit 停止執行
Before:如果該欄位指定的 Unit 也要啟動,那麼必須在當前 Unit 之後啟動
After:如果該欄位指定的 Unit 也要啟動,那麼必須在當前 Unit 之前啟動
Conflicts:這裡指定的 Unit 不能與當前 Unit 同時執行
Condition...:當前 Unit 執行必須滿足的條件,否則不會執行
Assert...:當前 Unit 執行必須滿足的條件,否則會報啟動失敗
[Install]通常是配置檔案的最後一個區塊,用來定義如何啟動,以及是否開機啟動。它的主要欄位如下。

WantedBy:它的值是一個或多個 Target,當前 Unit 啟用時(enable)符號連結會放入/etc/systemd/system目錄下面以 Target 名 + .wants字尾構成的子目錄中
RequiredBy:它的值是一個或多個 Target,當前 Unit 啟用時,符號連結會放入/etc/systemd/system目錄下面以 Target 名 + .required字尾構成的子目錄中
Alias:當前 Unit 可用於啟動的別名
Also:當前 Unit 啟用(enable)時,會被同時啟用的其他 Unit
[Service]區塊用來 Service 的配置,只有 Service 型別的 Unit 才有這個區塊。它的主要欄位如下。

Type:定義啟動時的程序行為。它有以下幾種值。
Type=simple:預設值,執行ExecStart指定的命令,啟動主程序
Type=forking:以 fork 方式從父程序建立子程序,建立後父程序會立即退出
Type=oneshot:一次性程序,Systemd 會等當前服務退出,再繼續往下執行
Type=dbus:當前服務通過D-Bus啟動
Type=notify:當前服務啟動完畢,會通知Systemd,再繼續往下執行
Type=idle:若有其他任務執行完畢,當前服務才會執行
ExecStart:啟動當前服務的命令
ExecStartPre:啟動當前服務之前執行的命令
ExecStartPost:啟動當前服務之後執行的命令
ExecReload:重啟當前服務時執行的命令
ExecStop:停止當前服務時執行的命令
ExecStopPost:停止當其服務之後執行的命令
RestartSec:自動重啟當前服務間隔的秒數
Restart:定義何種情況 Systemd 會自動重啟當前服務,可能的值包括always(總是重啟)、on-success、on-failure、on-abnormal、on-abort、on-watchdog
TimeoutSec:定義 Systemd 停止當前服務之前等待的秒數
Environment:指定環境變數