日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

目錄
  • systemd簡介
  • 腳本存放位置
  • 腳本簡介
  • 執行腳本命令
    • 查看日志
  • 實戰
    • 開機啟動Elasticsearch
    • 開機啟動springboot項目
    • springboot.service

systemd簡介

systemd 是一個系統守護進程(init 系統),用于管理 Linux 操作系統的啟動、運行和關閉過程。它被廣泛采用作為 Linux 發行版的默認 init 系統,如 Ubuntu、Fedora 和 CentOS。

以下是 systemd 的一些關鍵特點和功能:

  • 啟動管理:systemd 使用并行啟動來提高系統啟動速度,并支持啟動任務的優先級和依賴關系設置。它可以同時處理服務、套接字和設備文件的啟動。
  • 服務管理:systemd 通過提供單元文件(unit files)來管理系統服務。每個服務都有對應的配置文件,您可以在其中定義服務的屬性、行為和依賴關系。同時,systemd 還提供了強大的日志記錄、故障排除和錯誤報告機制。
  • 日志管理:systemd-journald 是 systemd 內置的日志管理器,負責收集、存儲和檢索系統日志信息。它支持結構化日志、日志轉發和高性能查詢功能。
  • 設備管理:systemd 可以監控和管理系統中的設備,包括磁盤驅動器、網絡接口和輸入設備等。它提供了 udev 規則來自動處理設備事件,例如插入或移除設備時觸發相應操作。
  • 用戶會話管理:systemd 提供了用戶會話管理功能,它可以啟動和監控用戶會話,以及處理用戶登錄和注銷過程。這對于支持多用戶環境并提供長時間運行的會話非常有用。
  • 定時任務管理:systemd-timers 模塊允許您定義和管理定時任務(類似于 crontab),可以精確地調度任務運行,并提供靈活的配置選項。

總體而言,systemd 提供了一個集成的、強大而靈活的系統管理框架,它改善了 Linux 系統的啟動速度、進程管理、日志記錄和設備管理等方面的性能和功能。因其廣泛采用和豐富的功能,熟悉 systemd 對于 Linux 系統管理員和開發人員來說是非常重要的。

腳本存放位置

  • /etc/systemd/system系統管理員安裝的單元, 優先級更高
  • /usr/lib/systemd/system:該目錄中包含的是軟件包安裝的單元,也就是說通過 yum、dnf、rpm 等軟件包管理命令管理的 systemd 單元文件,都放置在該目錄下

    目錄/lib/systemd/system 以及/usr/lib/systemd/system 其實指向的是同一目錄

一文教你如何自定義systemd開機啟動腳本

腳本簡介

/usr/lib/systemd/system下創建文件nginx.service,并賦予權限chmod +x nginx.service

[Unit]
?
Description=nginx service
# 要求必須執行網絡
Requires=network-online.target
# 在網絡啟動之后啟動
After=network.target
[Service]
# 工作目錄
WorkingDirectory=/yourpath/infra/nginx
Type=forking
User=root
# systemctl start nginx
ExecStart=/yourpath/infra/nginx/sbin/nginx -c /yourpath/infra/nginx/conf/nginx.conf
# systemctl start reload
ExecReload=/yourpath/infra/nginx/sbin/nginx -s reload
?
[Install]
WantedBy=multi-user.target
?
  • [Unit] 部分,您可以提供對服務的描述和定義其依賴關系。After=network.target 表示該服務將在網絡啟動后啟動。
  • [Service] 部分,指定要執行的腳本路徑。請將 /path/to/your/script.sh 替換為您實際的腳本路徑。
  • [Install] 部分用于指定啟動級別。WantedBy=default.target 表示該服務將隨系統默認目標一起啟動。

在 Systemd 中,Type 是一個服務單元文件中的參數,它是用來指定服務類型的。一個服務可能有以下幾種類型:

  • simple:服務主進程不會以守護進程方式運行,即服務進程在啟動后會一直運行,并占據終端。當服務進程退出時,Systemd 認為服務已經停止運行。
  • forking:服務主進程以守護進程方式運行。在啟動服務后,服務主進程會將控制權交給子進程來執行實際的任務。此時,服務主進程會退出,但服務并沒有結束。當子進程退出時,Systemd 認為服務已經停止運行。
  • oneshot:服務主進程會被執行一次,然后退出。當服務主進程退出時,Systemd 認為服務已經停止運行。
  • dbus:該類型的服務主要是以消息總線的方式提供服務,通常是由 D-Bus 庫和 Systemd 搭配使用。
  • notify:該類型的服務主要是通過向 Systemd 發送通知來表示服務已經啟動完畢,例如在 MySQL 服務中,主進程在成功啟動之后會向 Systemd 發送一個 READY=1 的通知。

不同的服務類型會對應不同的邏輯,具體使用哪種類型取決于服務運行的特點和需求。

執行腳本命令

# 重新加載systemd
systemdctl daemon-reload
?
# 將 nginx.service 加入到開機啟動
systemctl enable nginx.service
?
# 卸載 nginx.service
systemctl disable nginx.service
?
# 手動啟動
systemctl start nginx.service

一文教你如何自定義systemd開機啟動腳本

查看日志

/var/log/messages:存放的是系統的日志信息,它記錄了各種事件,基本上什么應用都能往里寫日志,在做故障診斷時可以首先查看該文件內容

方式一:

journalctl -u nginx.service

一文教你如何自定義systemd開機啟動腳本

方式二:

tail -f messages

一文教你如何自定義systemd開機啟動腳本

至此,如果使用命令能夠啟動成功,一般開機也會自啟動,無需手動執行

實戰

開機啟動Elasticsearch

elasticsearch.service

/usr/lib/systemd/system下創建文件elasticsearch.service,并賦予權限chmod +x elasticsearch.service

[Unit]
?
Description=elasticsearch service
# 要求必須執行網絡
#Requires=network-online.target
# 在網絡啟動之后啟動
After=network.target
[Service]
WorkingDirectory=/yourpath/infra/elasticsearch-7.17.4
?
LimitNOFILE=100000
LimitNPROC=100000
?
Type=forking
?
# 由于es不可以使用root啟動,這里使用test用戶
User=test
# 啟動腳本
ExecStart=/bin/sh /yourpath/infra/elasticsearch-7.17.4/start.sh
?
#Restart=on-failure
?
[Install]
WantedBy=multi-user.target
?

重點解釋,LimitNOFILELimitNPROC

LimitNOFILE:

LimitNOFILE用于設置進程的文件描述符限制的參數。

文件描述符是操作系統為進程分配的用于訪問文件和其他輸入/輸出資源的標識符。每個進程都有一個限制,決定了它可以同時打開的文件數量。

LimitNOFILE參數用于設置進程可以打開的文件描述符的最大數量。通過限制文件描述符的數量,可以控制進程對系統資源(如文件、套接字等)的使用情況。

在啟動腳本中設置LimitNOFILE的值可以影響到該進程及其子進程的文件描述符限制。例如,如果將LimitNOFILE設置為1000,則該進程及其子進程最多只能同時打開1000個文件

LimitNPROC:

每個進程在操作系統中都有一個相關的進程數,表示該進程所創建或派生的子進程數量。操作系統為每個用戶和系統范圍內的進程數都有一個上限限制。

通過使用LimitNPROC參數,可以限制進程及其子進程可以同時存在的最大數量。一旦達到該限制,進程將無法創建更多的子進程。這有助于控制系統資源(如內存、處理器等)的使用情況,防止某個進程或用戶占用過多的系統資源。

在啟動腳本中設置LimitNPROC的值可以影響到該進程及其子進程的并發進程數限制。例如,如果將LimitNPROC設置為100,則該進程及其子進程最多只能同時存在100個進程

可以嘗試不設置這兩個參數,看看會發生什么問題

啟動Elasticsearch腳本

#!/bin/sh
su test
/yourpath/infra/elasticsearch-7.17.4/bin/elasticsearch -d

相關命令

systemctl enable elasticsearch.service
systemctl disable elasticsearch.service
systemctl start elasticsearch.service
ps -ef | grep elasticsearch

開機啟動springboot項目

springboot.service

/usr/lib/systemd/system下創建文件springboot.service,并賦予權限chmod +x springboot.service

[Unit]
?
Description=springboot service
# 要求必須執行網絡
#Requires=network-online.target
# 在網絡啟動之后啟動
After=network.target
[Service]
WorkingDirectory=/yourpath/app/springboot
?
Type=forking
User=root
# 啟動前,等待10s
ExecStartPre=/bin/sleep 10
ExecStart=/bin/sh /yourpath/app/springboot/start.sh
?
# 不輸出日志
StandardOutput=null
StandardError=null
?
[Install]
WantedBy=multi-user.target
?

解釋:

  • ExecStartPre:當啟動springboot.service時,會先等待10s再啟動,例如,項目依賴了mysql,而mysql啟動需要時間。
  • StandardOutput,StandardError:配置了這兩個為null,意思是springboot項目自身的日志,就不打印再/var/log/message中,因為springboot項目自身有日志管理

啟動springboot腳本

#!/bin/sh
/bin/nohup /youpath/infra/jdk1.8.0_341/bin/java -jar /lbpdata/app/springboot/bootstrap-1.0.0.jar --server.servlet.context-path=/test --spring.config.location=application-test.yml >/dev/null 2>&1 &

我們在寫腳本之時,最好都要寫,完整的指令路徑,不然經常會報找不到指令

相關命令

systemctl enable springboot.service
systemctl disable springboot.service
systemctl start springboot.service
jps -l

以上就是一文教你如何自定義systemd開機啟動腳本的詳細內容,更多關于自定義systemd開機腳本的資料請關注其它相關文章!

分享到:
標簽:一文 開機 教你如何 腳本 自定義
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定