最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文教你如何自定義systemd開(kāi)機(jī)啟動(dòng)腳本

 更新時(shí)間:2023年07月12日 11:02:30   作者:保溫杯里泡枸杞  
systemd開(kāi)機(jī)腳本是Linux系統(tǒng)不可或缺的組成部分,它負(fù)責(zé)協(xié)調(diào)和管理系統(tǒng)啟動(dòng)過(guò)程中的各項(xiàng)任務(wù)和服務(wù),本文將詳細(xì)為大家介紹如何自定義systemd開(kāi)機(jī)啟動(dòng)腳本,通過(guò)本文你將能夠深入了解Linux啟動(dòng)流程,并提升系統(tǒng)的效率和可靠性

systemd簡(jiǎn)介

systemd 是一個(gè)系統(tǒng)守護(hù)進(jìn)程(init 系統(tǒng)),用于管理 Linux 操作系統(tǒng)的啟動(dòng)、運(yùn)行和關(guān)閉過(guò)程。它被廣泛采用作為 Linux 發(fā)行版的默認(rèn) init 系統(tǒng),如 Ubuntu、Fedora 和 CentOS。

以下是 systemd 的一些關(guān)鍵特點(diǎn)和功能:

  • 啟動(dòng)管理:systemd 使用并行啟動(dòng)來(lái)提高系統(tǒng)啟動(dòng)速度,并支持啟動(dòng)任務(wù)的優(yōu)先級(jí)和依賴關(guān)系設(shè)置。它可以同時(shí)處理服務(wù)、套接字和設(shè)備文件的啟動(dòng)。
  • 服務(wù)管理:systemd 通過(guò)提供單元文件(unit files)來(lái)管理系統(tǒng)服務(wù)。每個(gè)服務(wù)都有對(duì)應(yīng)的配置文件,您可以在其中定義服務(wù)的屬性、行為和依賴關(guān)系。同時(shí),systemd 還提供了強(qiáng)大的日志記錄、故障排除和錯(cuò)誤報(bào)告機(jī)制。
  • 日志管理:systemd-journald 是 systemd 內(nèi)置的日志管理器,負(fù)責(zé)收集、存儲(chǔ)和檢索系統(tǒng)日志信息。它支持結(jié)構(gòu)化日志、日志轉(zhuǎn)發(fā)和高性能查詢功能。
  • 設(shè)備管理:systemd 可以監(jiān)控和管理系統(tǒng)中的設(shè)備,包括磁盤(pán)驅(qū)動(dòng)器、網(wǎng)絡(luò)接口和輸入設(shè)備等。它提供了 udev 規(guī)則來(lái)自動(dòng)處理設(shè)備事件,例如插入或移除設(shè)備時(shí)觸發(fā)相應(yīng)操作。
  • 用戶會(huì)話管理:systemd 提供了用戶會(huì)話管理功能,它可以啟動(dòng)和監(jiān)控用戶會(huì)話,以及處理用戶登錄和注銷過(guò)程。這對(duì)于支持多用戶環(huán)境并提供長(zhǎng)時(shí)間運(yùn)行的會(huì)話非常有用。
  • 定時(shí)任務(wù)管理:systemd-timers 模塊允許您定義和管理定時(shí)任務(wù)(類似于 crontab),可以精確地調(diào)度任務(wù)運(yùn)行,并提供靈活的配置選項(xiàng)。

總體而言,systemd 提供了一個(gè)集成的、強(qiáng)大而靈活的系統(tǒng)管理框架,它改善了 Linux 系統(tǒng)的啟動(dòng)速度、進(jìn)程管理、日志記錄和設(shè)備管理等方面的性能和功能。因其廣泛采用和豐富的功能,熟悉 systemd 對(duì)于 Linux 系統(tǒng)管理員和開(kāi)發(fā)人員來(lái)說(shuō)是非常重要的。

腳本存放位置

  • /etc/systemd/system系統(tǒng)管理員安裝的單元, 優(yōu)先級(jí)更高
  • /usr/lib/systemd/system:該目錄中包含的是軟件包安裝的單元,也就是說(shuō)通過(guò) yum、dnf、rpm 等軟件包管理命令管理的 systemd 單元文件,都放置在該目錄下

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

腳本簡(jiǎn)介

/usr/lib/systemd/system下創(chuàng)建文件nginx.service,并賦予權(quán)限chmod +x nginx.service

[Unit]
?
Description=nginx service
# 要求必須執(zhí)行網(wǎng)絡(luò)
Requires=network-online.target
# 在網(wǎng)絡(luò)啟動(dòng)之后啟動(dòng)
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] 部分,您可以提供對(duì)服務(wù)的描述和定義其依賴關(guān)系。After=network.target 表示該服務(wù)將在網(wǎng)絡(luò)啟動(dòng)后啟動(dòng)。
  • [Service] 部分,指定要執(zhí)行的腳本路徑。請(qǐng)將 /path/to/your/script.sh 替換為您實(shí)際的腳本路徑。
  • [Install] 部分用于指定啟動(dòng)級(jí)別。WantedBy=default.target 表示該服務(wù)將隨系統(tǒng)默認(rèn)目標(biāo)一起啟動(dòng)。

在 Systemd 中,Type 是一個(gè)服務(wù)單元文件中的參數(shù),它是用來(lái)指定服務(wù)類型的。一個(gè)服務(wù)可能有以下幾種類型:

  • simple:服務(wù)主進(jìn)程不會(huì)以守護(hù)進(jìn)程方式運(yùn)行,即服務(wù)進(jìn)程在啟動(dòng)后會(huì)一直運(yùn)行,并占據(jù)終端。當(dāng)服務(wù)進(jìn)程退出時(shí),Systemd 認(rèn)為服務(wù)已經(jīng)停止運(yùn)行。
  • forking:服務(wù)主進(jìn)程以守護(hù)進(jìn)程方式運(yùn)行。在啟動(dòng)服務(wù)后,服務(wù)主進(jìn)程會(huì)將控制權(quán)交給子進(jìn)程來(lái)執(zhí)行實(shí)際的任務(wù)。此時(shí),服務(wù)主進(jìn)程會(huì)退出,但服務(wù)并沒(méi)有結(jié)束。當(dāng)子進(jìn)程退出時(shí),Systemd 認(rèn)為服務(wù)已經(jīng)停止運(yùn)行。
  • oneshot:服務(wù)主進(jìn)程會(huì)被執(zhí)行一次,然后退出。當(dāng)服務(wù)主進(jìn)程退出時(shí),Systemd 認(rèn)為服務(wù)已經(jīng)停止運(yùn)行。
  • dbus:該類型的服務(wù)主要是以消息總線的方式提供服務(wù),通常是由 D-Bus 庫(kù)和 Systemd 搭配使用。
  • notify:該類型的服務(wù)主要是通過(guò)向 Systemd 發(fā)送通知來(lái)表示服務(wù)已經(jīng)啟動(dòng)完畢,例如在 MySQL 服務(wù)中,主進(jìn)程在成功啟動(dòng)之后會(huì)向 Systemd 發(fā)送一個(gè) READY=1 的通知。

不同的服務(wù)類型會(huì)對(duì)應(yīng)不同的邏輯,具體使用哪種類型取決于服務(wù)運(yùn)行的特點(diǎn)和需求。

執(zhí)行腳本命令

# 重新加載systemd
systemdctl daemon-reload
?
# 將 nginx.service 加入到開(kāi)機(jī)啟動(dòng)
systemctl enable nginx.service
?
# 卸載 nginx.service
systemctl disable nginx.service
?
# 手動(dòng)啟動(dòng)
systemctl start nginx.service

查看日志

/var/log/messages:存放的是系統(tǒng)的日志信息,它記錄了各種事件,基本上什么應(yīng)用都能往里寫(xiě)日志,在做故障診斷時(shí)可以首先查看該文件內(nèi)容

方式一:

journalctl -u nginx.service

方式二:

tail -f messages

至此,如果使用命令能夠啟動(dòng)成功,一般開(kāi)機(jī)也會(huì)自啟動(dòng),無(wú)需手動(dòng)執(zhí)行

實(shí)戰(zhàn)

開(kāi)機(jī)啟動(dòng)Elasticsearch

elasticsearch.service

/usr/lib/systemd/system下創(chuàng)建文件elasticsearch.service,并賦予權(quán)限chmod +x elasticsearch.service

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

重點(diǎn)解釋,LimitNOFILELimitNPROC

LimitNOFILE:

LimitNOFILE用于設(shè)置進(jìn)程的文件描述符限制的參數(shù)。

文件描述符是操作系統(tǒng)為進(jìn)程分配的用于訪問(wèn)文件和其他輸入/輸出資源的標(biāo)識(shí)符。每個(gè)進(jìn)程都有一個(gè)限制,決定了它可以同時(shí)打開(kāi)的文件數(shù)量。

LimitNOFILE參數(shù)用于設(shè)置進(jìn)程可以打開(kāi)的文件描述符的最大數(shù)量。通過(guò)限制文件描述符的數(shù)量,可以控制進(jìn)程對(duì)系統(tǒng)資源(如文件、套接字等)的使用情況。

在啟動(dòng)腳本中設(shè)置LimitNOFILE的值可以影響到該進(jìn)程及其子進(jìn)程的文件描述符限制。例如,如果將LimitNOFILE設(shè)置為1000,則該進(jìn)程及其子進(jìn)程最多只能同時(shí)打開(kāi)1000個(gè)文件。

LimitNPROC:

每個(gè)進(jìn)程在操作系統(tǒng)中都有一個(gè)相關(guān)的進(jìn)程數(shù),表示該進(jìn)程所創(chuàng)建或派生的子進(jìn)程數(shù)量。操作系統(tǒng)為每個(gè)用戶和系統(tǒng)范圍內(nèi)的進(jìn)程數(shù)都有一個(gè)上限限制。

通過(guò)使用LimitNPROC參數(shù),可以限制進(jìn)程及其子進(jìn)程可以同時(shí)存在的最大數(shù)量。一旦達(dá)到該限制,進(jìn)程將無(wú)法創(chuàng)建更多的子進(jìn)程。這有助于控制系統(tǒng)資源(如內(nèi)存、處理器等)的使用情況,防止某個(gè)進(jìn)程或用戶占用過(guò)多的系統(tǒng)資源。

在啟動(dòng)腳本中設(shè)置LimitNPROC的值可以影響到該進(jìn)程及其子進(jìn)程的并發(fā)進(jìn)程數(shù)限制。例如,如果將LimitNPROC設(shè)置為100,則該進(jìn)程及其子進(jìn)程最多只能同時(shí)存在100個(gè)進(jìn)程

可以嘗試不設(shè)置這兩個(gè)參數(shù),看看會(huì)發(fā)生什么問(wèn)題

啟動(dòng)Elasticsearch腳本

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

相關(guān)命令

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

開(kāi)機(jī)啟動(dòng)springboot項(xiàng)目

springboot.service

/usr/lib/systemd/system下創(chuàng)建文件springboot.service,并賦予權(quán)限chmod +x springboot.service

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

解釋:

  • ExecStartPre:當(dāng)啟動(dòng)springboot.service時(shí),會(huì)先等待10s再啟動(dòng),例如,項(xiàng)目依賴了mysql,而mysql啟動(dòng)需要時(shí)間。
  • StandardOutput,StandardError:配置了這兩個(gè)為null,意思是springboot項(xiàng)目自身的日志,就不打印再/var/log/message中,因?yàn)閟pringboot項(xiàng)目自身有日志管理

啟動(dòng)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 &

我們?cè)趯?xiě)腳本之時(shí),最好都要寫(xiě),完整的指令路徑,不然經(jīng)常會(huì)報(bào)找不到指令

相關(guān)命令

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

以上就是一文教你如何自定義systemd開(kāi)機(jī)啟動(dòng)腳本的詳細(xì)內(nèi)容,更多關(guān)于自定義systemd開(kāi)機(jī)腳本的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 動(dòng)態(tài)在線擴(kuò)容root根分區(qū)大小的方法詳解

    動(dòng)態(tài)在線擴(kuò)容root根分區(qū)大小的方法詳解

    這篇文章主要給大家介紹了關(guān)于如何動(dòng)態(tài)在線擴(kuò)容root根分區(qū)大小的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • 在Linux系統(tǒng)上查看Apache服務(wù)器的錯(cuò)誤日志

    在Linux系統(tǒng)上查看Apache服務(wù)器的錯(cuò)誤日志

    這篇文章主要介紹了在Linux系統(tǒng)上查看Apache服務(wù)器的錯(cuò)誤日志,是服務(wù)器運(yùn)維必備的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-07-07
  • Apache上傳文件500錯(cuò)誤的解決方法

    Apache上傳文件500錯(cuò)誤的解決方法

    Apache 2.3.6開(kāi)始,MaxRequestLen這個(gè)參數(shù)的默認(rèn)值從之前的1GB(汗一個(gè))調(diào)整到了131072字節(jié)(128KB)。于是上傳128KB以下的文件不會(huì)出問(wèn)題,但是超過(guò)這個(gè)值就會(huì)報(bào)500錯(cuò)誤了
    2014-04-04
  • 解決Linux可執(zhí)行文件目錄下明明存在*.so文件,但卻提示找不到

    解決Linux可執(zhí)行文件目錄下明明存在*.so文件,但卻提示找不到

    這篇文章主要介紹了解決Linux可執(zhí)行文件目錄下明明存在*.so文件,但卻提示找不到問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • linux系統(tǒng)獲取硬盤(pán)使用信息

    linux系統(tǒng)獲取硬盤(pán)使用信息

    linux查看硬盤(pán)信息要用的幾個(gè)命令:df命令、du命令、statfs結(jié)構(gòu)及函數(shù),這里用圖文說(shuō)明一下使用方法。
    2013-10-10
  • Linux scp命令用法及實(shí)例分享

    Linux scp命令用法及實(shí)例分享

    Linux scp命令用于Linux之間復(fù)制文件和目錄。scp是 secure copy的縮寫(xiě), scp是linux系統(tǒng)下基于ssh登陸進(jìn)行安全的遠(yuǎn)程文件拷貝命令。下面我們來(lái)詳細(xì)看下scp命令的用法以及實(shí)例
    2017-03-03
  • debian linux添加永久環(huán)境變量方式

    debian linux添加永久環(huán)境變量方式

    這篇文章主要介紹了debian linux添加永久環(huán)境變量方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • linux如何查看系統(tǒng)各項(xiàng)指標(biāo)命令

    linux如何查看系統(tǒng)各項(xiàng)指標(biāo)命令

    文章詳細(xì)介紹了在Linux系統(tǒng)中查看系統(tǒng)各項(xiàng)指標(biāo)和Java程序運(yùn)行狀態(tài)的常用命令,并提供了順口溜幫助記憶這些命令
    2025-01-01
  • Linux新磁盤(pán)到擴(kuò)容到已有目錄方式

    Linux新磁盤(pán)到擴(kuò)容到已有目錄方式

    文章詳細(xì)描述了一個(gè)服務(wù)器磁盤(pán)掛載和擴(kuò)容的過(guò)程,包括添加磁盤(pán)、查看掛載情況、創(chuàng)建分區(qū)、格式化分區(qū)、擴(kuò)展卷組和邏輯卷,并最終同步文件系統(tǒng)
    2026-03-03
  • linux使用QQ實(shí)現(xiàn)網(wǎng)絡(luò)郵件報(bào)警功能

    linux使用QQ實(shí)現(xiàn)網(wǎng)絡(luò)郵件報(bào)警功能

    這篇文章主要介紹了linux使用QQ實(shí)現(xiàn)網(wǎng)絡(luò)郵件報(bào)警功能,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08

最新評(píng)論

济南市| 诸城市| 台北市| 镇雄县| 漾濞| 安吉县| 马龙县| 探索| 临高县| 新源县| 镇原县| 台东县| 翼城县| 汝城县| 哈密市| 北安市| 道真| 高邮市| 黄骅市| 孟津县| 乡宁县| 若羌县| 思南县| 北安市| 谷城县| 德江县| 塔城市| 什邡市| 阆中市| 庆安县| 台安县| 定结县| 庄浪县| 大化| 太谷县| 平陆县| 定日县| 襄汾县| 高雄市| 闵行区| 赤城县|