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

詳解如何實現(xiàn)Linux服務(wù)Crash后自動重啟

 更新時間:2023年08月02日 16:49:28   作者:東風(fēng)微鳴技術(shù)博客  
近期碰到了一個?Linux?Systemd?服務(wù)?Crash,?Crash?后需要人工介入重啟.?那么,?有沒有辦法如何實現(xiàn)?Linux?服務(wù)?Crash?后自動重啟,下面就來和大家分享一下

Systemd

Systemd Restart

Systemd 允許你對服務(wù)進行配置,以便在服務(wù)崩潰時自動重啟。

一個典型的單元文件是這樣的:

[Unit]
Description=Tailscale node agent
After=network-online.target
Wants=tailscale-weekly-update.timer

[Service]
Type=oneshot
ExecStart=/usr/bin/tailscale update -yes

[Install]
WantedBy=multi-user.target

在上面的例子中,如果守護進程崩潰或被殺死,systemd 不會去管它。

不過,你可以讓 systemd 自動重啟守護進程,以防它崩潰或意外被殺掉。為此,你可以在 [Service] 中添加 Restart 選項。典型的示例如下:

[Unit]
Description=Lightweight Kubernetes
Documentation=https://k3s.io
Wants=network-online.target
After=network-online.target

StartLimitIntervalSec=600
StartLimitBurst=5

[Install]
WantedBy=multi-user.target

[Service]
Type=notify
EnvironmentFile=-/etc/systemd/system/k3s.service.env
KillMode=process
Delegate=yes
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
TimeoutStartSec=0
Restart=always
RestartSec=5s
ExecStartPre=/bin/sh -xc '! /usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service'
ExecStartPre=-/sbin/modprobe br_netfilter
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/k3s \
    server \

上述操作會對任何導(dǎo)致守護進程停止的情況做出反應(yīng)...只要守護進程停止,systemd 就會在 5 秒內(nèi)重啟它。

Restart 有 2 個可選參數(shù):

  • always
  • on-failure: 即故障時重啟. 涵蓋了最廣泛的故障情形,如信號不清和退出代碼不清:

在本例中,[Unit] 部分還有 StartLimitIntervalSec 和 StartLimitBurst 指令。這可以防止故障服務(wù)每 5 秒鐘重啟一次。如果仍然失敗,systemd 將停止嘗試啟動服務(wù)。

如果服務(wù)在 600 秒內(nèi) 5 次嘗試重啟均未成功,則應(yīng)進入失敗狀態(tài),不再嘗試重啟。這樣就能確保如果服務(wù)真的壞了,systemd 不會繼續(xù)嘗試重啟它。應(yīng)該人工上去處理了。

如果在守護進程被殺死后詢問其狀態(tài),systemd 會顯示正在activating (auto-restart)。

Systemd OnFailure

重啟一項服務(wù)固然很好,但在某個單元出現(xiàn)故障時采取特定行動就更好了。也許你使用的軟件有一個已知的錯誤,要求在崩潰時刪除緩存文件,也許你想啟動一個腳本來收集日志和系統(tǒng)信息,以便診斷問題。Systemd 允許你指定在服務(wù)失敗時運行的單元。

[Unit]
Description=Lightweight Kubernetes
Documentation=https://k3s.io
Wants=network-online.target
After=network-online.target

StartLimitIntervalSec=600
StartLimitBurst=5
OnFailure=k3s-recovery.service

[Install]
WantedBy=multi-user.target

[Service]
Type=notify
EnvironmentFile=-/etc/systemd/system/k3s.service.env
KillMode=process
Delegate=yes
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
TimeoutStartSec=0
Restart=on-failure
RestartSec=5s
ExecStartPre=/bin/sh -xc '! /usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service'
ExecStartPre=-/sbin/modprobe br_netfilter
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/k3s \
    server \

此示例指定 OnFailure=k3s-recovery.service 來告訴 systemd,如果我的服務(wù)失敗,它就應(yīng)該啟動 k3s-recovery 單元.

k3s-recovery 單元只是一個運行此腳本的一次性服務(wù)單元:

[Unit]
Description=K3s recovery

[Service]
Type=oneshot
ExecStart=/usr/local/sbin/k3s-recovery.sh

這個腳本可以做任何事情:執(zhí)行一些手動變通方法讓服務(wù)重新運行,向監(jiān)控系統(tǒng)發(fā)出警報,或者壓縮一些臨時日志和應(yīng)用程序狀態(tài)以排除故障。示例如下:

#!/bin/bash

echo 'Attempting to recover!' > /tmp/recovery_info
systemctl stop k3s.service
/usr/local/sbin/k3s-killall.sh
systemctl start k3s.service
Systemd FailureAction reboot

還有一種可能, 重啟治百病! 所以 systemd 內(nèi)置了在單元故障時觸發(fā)系統(tǒng)重啟的功能。在本例中,當(dāng)單元發(fā)生故障時,系統(tǒng)將優(yōu)雅地重新啟動:

[Unit]
Description=Lightweight Kubernetes
Documentation=https://k3s.io
Wants=network-online.target
After=network-online.target

StartLimitIntervalSec=600
StartLimitBurst=5
FailureAction=reboot

[Install]
WantedBy=multi-user.target

[Service]
Type=notify
EnvironmentFile=-/etc/systemd/system/k3s.service.env
KillMode=process
Delegate=yes
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
TimeoutStartSec=0
Restart=on-failure
RestartSec=5s
ExecStartPre=/bin/sh -xc '! /usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service'
ExecStartPre=-/sbin/modprobe br_netfilter
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/k3s \
    server \

FailureAction 有多種有效值: none, reboot, reboot-force, reboot-immediate, poweroff, poweroff-force, poweroff-immediate, exit, exit-force, soft-reboot, soft-reboot-force, kexec, kexec-force, halt, halt-force 和 halt-immediate.

總結(jié)

本文介紹了服務(wù)異常時, 自動處理故障的一些方式。Systemd 包含強大的功能,可自動響應(yīng)以保持服務(wù)運行。

到此這篇關(guān)于詳解如何實現(xiàn)Linux服務(wù)Crash后自動重啟的文章就介紹到這了,更多相關(guān)Linux Crash后自動重啟內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Linux下安裝MariaDB數(shù)據(jù)庫問題及解決方法(二進制版本的安裝)

    Linux下安裝MariaDB數(shù)據(jù)庫問題及解決方法(二進制版本的安裝)

    MariaDB數(shù)據(jù)庫 分為源代碼版本和二進制版本,源代碼版本需要cmake編譯,這里是二進制版本的安裝。下面通過本文給大家介紹Linux下安裝MariaDB數(shù)據(jù)庫問題及解決方法(二進制版本的安裝),感興趣的朋友參考下吧
    2016-11-11
  • Linux安裝Docker-Compose過程

    Linux安裝Docker-Compose過程

    文章介紹了在Linux系統(tǒng)上安裝Docker?Compose的步驟,包括使用curl從GitHub下載Docker?Compose二進制文件并保存到/usr/local/bin目錄,然后通過chmod命令增加執(zhí)行權(quán)限
    2024-11-11
  • Centos7硬盤掛載方法

    Centos7硬盤掛載方法

    這篇文章主要介紹了Centos7硬盤掛載方法并把需要注意的地方做了注明,需要的朋友參考下吧。
    2018-02-02
  • Linux之配置路由轉(zhuǎn)發(fā)功能的測試

    Linux之配置路由轉(zhuǎn)發(fā)功能的測試

    這篇文章主要介紹了Linux之配置路由轉(zhuǎn)發(fā)功能的測試,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 對linux下軟件(庫)的更新命令詳解

    對linux下軟件(庫)的更新命令詳解

    今天小編就為大家分享一篇對linux下軟件(庫)的更新命令詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 詳解Linux服務(wù)器配置——搭建SVN服務(wù)器

    詳解Linux服務(wù)器配置——搭建SVN服務(wù)器

    雖然在windows上搭建SVN很簡單,但是效能卻不高,這當(dāng)然是和linux相比了,本篇文章主要介紹了Linux服務(wù)器配置——搭建SVN服務(wù)器,具有一定的參考價值,有興趣的可以了解一下。
    2016-12-12
  • 詳解Apache SkyWalking 告警配置指南

    詳解Apache SkyWalking 告警配置指南

    這篇文章主要介紹了Apache SkyWalking 告警配置指南,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • 安裝Ubuntu和ssh遠程連接的設(shè)置方式

    安裝Ubuntu和ssh遠程連接的設(shè)置方式

    文章介紹了在Ubuntu操作系統(tǒng)中進行遠程連接配置的方法,具體步驟包括:安裝并配置SSH服務(wù),設(shè)置靜態(tài)IP地址,配置遠程桌面服務(wù)(VNC或RDP),以及解決root用戶SSH遠程登錄的問題
    2025-03-03
  • 解決vim語法高亮不起作用的方法

    解決vim語法高亮不起作用的方法

    這篇文章主要給大家介紹了如何解決vim語法高亮不起作用的方法,文章給大家介紹了多種解決的方法,大家可以根據(jù)需要看看是哪個方面的問題,希望能對遇到這個問題的朋友們有所幫助,下面來一起看看吧。
    2016-10-10
  • linux備份與恢復(fù)基礎(chǔ)知識

    linux備份與恢復(fù)基礎(chǔ)知識

    備份會改變atime,tar,cpio,dd都會這樣做,dump通過原始設(shè)備來讀取文件系統(tǒng),因此它不會改變atime.
    2009-03-03

最新評論