CentOS6/7 配置守護進程

CentOS6.x

CentOS6中轉用Upstrat代替以前的init.d/rcX.d的線性啟動方式。

一、相關命令

通過initctl help可以查看相關命令

[root@localhost ~]# initctl help
Job commands:start                       Start job.stop                        Stop job.restart                     Restart job.reload                      Send HUP signal to job.status                      Query status of job.list                        List known jobs.Event commands:emit                        Emit an event.Other commands:reload-configuration        Reload the configuration of the init daemon.version                     Request the version of the init daemon.log-priority                Change the minimum priority of log messages from the init daemonusage                       Show job usage message if available.help                        display list of commandsFor?more?information?on?a?command,?try?`initctl?COMMAND?--help'.

二、自己配置一個

在/etc/init/文件夾中新建一個testserver.conf配置文件。

通過exec執行發布出來的程序可執行文件。通過設置respawn讓程序反復啟動。

start?on?runlevel?[2345]
stop?on?runlevel?[!2345]
respawn
exec /usr/local/src/testserver/testserver

然后啟動

initctl reload-configuration 
initctl list 
initctl start testserver

通過initctl list即可看程序是不是處于running啟動狀態。

[root@localhost ~]# initctl list
vmware-tools start/running
rc stop/waiting
tty (/dev/tty3) start/running, process 3024
tty (/dev/tty2) start/running, process 3022
tty (/dev/tty6) start/running, process 3033
tty (/dev/tty5) start/running, process 3028
tty (/dev/tty4) start/running, process 3026
plymouth-shutdown stop/waiting
testserver start/running, process 4157
control-alt-delete stop/waiting
rcS-emergency stop/waiting
readahead-collector stop/waiting
kexec-disable stop/waiting
quit-plymouth stop/waiting
rcS stop/waiting
prefdm start/running, process 3017
init-system-dbus stop/waiting
ck-log-system-restart stop/waiting
readahead stop/waiting
ck-log-system-start stop/waiting
splash-manager stop/waiting
start-ttys stop/waiting
readahead-disable-services stop/waiting
ck-log-system-stop stop/waiting
rcS-sulogin stop/waiting
serial stop/waiting

可以看到其處于啟動狀態,現在守護進程已經設置成功。

另外,配置文件中可以通過script ... end script執行腳本。舉個例子

start on runlevel [2345]
stop on runlevel [!2345]
script 
echo “test~~~~~” >>/tmp/test.txt 
end script

CentOS7.x

Centos7中可以通過systemd配置守護進程。

一、Unit的含義

systemd可以管理所有系統資源,不同資源統稱為 Unit,一共分為12種:

Service unit:   系統服務
Target unit:    多個unit構成一個組
Device unit:    硬件設備
Mount unit:     文件系統的掛載點
Automount unit: 自動掛載點
Path unit:      文件或路徑
Scope unit:     不是由Systemd啟動的外部進程
Slice unit:     進程組
Snapshot unit:  Systemd快照,可以切回某個快照
Socket unit:    進程間通信的socket
Swap unit:      swap文件
Timer unit:     定時器

二、Unit管理常用命令(主要針對service)

# 開機自啟動
systemctl enable nginx# 關閉自啟動
systemctl disable nginx# 服務狀態
systemctl status nginx# 服務重啟
systemctl restart nginx# 殺死一個服務
systemctl kill nginx# 顯示已啟動的服務
systemctl list-units --type=service

三、Unit配置文件

每一個Unit都有一個配置文件,用于告訴系統如何啟動Unit,systemd默認從 /etc/systemd/system/ 目錄讀取配置文件,

Unit配置文件目錄主要有三個:

/lib/systemd/system
/run/systemd/system
/etc/systemd/system

四、Unit服務配置

每個服務以.service后綴,一般會分為3部分:[Unit],[Service],[Install],具體以nginx服務為例:

[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop#Restart配置可以在進程被kill掉之后,讓systemctl產生新的進程,避免服務掛掉
Restart=on-failure
RestartSec=30[Install]
WantedBy=multi-user.target

1、[Unit]區塊

[Unit]區塊通常是配置文件的第一個區塊,用來定義Unit的元數據,以及配置與其他Unit的關系。

Description: 簡短描述
Documentation: 文檔地址
After:依賴,僅當依賴的服務啟動之后再啟動自定義的服務單元

2、[Service]區塊

[Service]區塊用來Service的配置,只有service類型的unit才有本區塊。

Type: 定義啟動時的進程行為。它有以下幾種值:

Type=simple  :(默認值) systemd認為該服務將立即啟動。服務進程不會 fork 。如果該服務要啟動其他服務,不要使用此類型啟動,除非該服務是 socket 激活型。
Type=forking :systemd認為當該服務進程 fork,且父進程退出后服務啟動成功。對于常規的守護進程(daemon),除非你確定此啟動方式無法滿足需求,使用此類型啟動即可。使用此啟動類型應同時指定 PIDFile=,以便 systemd 能夠跟蹤服務的主進程。
Type=oneshot :這一選項適用于只執行一項任務、隨后立即退出的服務。可能需要同時設置 RemainAfterExit=yes 使得 systemd 在服務進程退出之后仍然認為服務處于激活狀態。
Type=notify  :與 Type=simple 相同,但約定服務會在就緒后向 systemd 發送一個信號。這一通知的實現由 libsystemd-daemon.so 提供。
Type=dbus    :若以此方式啟動,當指定的 BusName 出現在DBus系統總線上時,systemd 認為服務就緒。
Type=idle ???:systemd 會等待所有任務處理完成后,才開始執行 idle 類型的單元。其他行為與 Type=simple 類似。

其他選項:

ExecStart:     啟動服務的命令
ExecStartPre:  啟動服務之前執行的命令
ExecStartPost: 啟動服務之后執行的命令
ExecReload:    重啟服務執行時的命令
ExecStop:      停止服務時執行的命令
ExecStopPost:  停止服務之后執行的命令
RestartSec:    自動重啟服務間隔的秒數
Restart:       定義何種情況下會自動重啟服務,可能的值包括always(總是重啟)、on-success、on-failure、on-abnormal、on-abort、on-watchdog
TimeoutSec:    定義Systemd停止服務之前等待的秒數
Environment:   指定環境變量
PIDFile:pid文件路徑
PrivateTmp:true表示給服務分配獨立的臨時空間
User:執行命令的用戶
Group:執行命令的組

3、[Install]區塊

[Install]區塊用來定義如何啟動,以及是否開機啟動。

WantedBy:   它的值是一個或多個Target,當前Unit激活時(enable)符號鏈接會放入/etc/systemd/system目錄下面以Target名 + .wants后綴構成的子目錄中
RequiredBy: 它的值是一個或多個Target,當前Unit激活時(enable)符號鏈接會放入/etc/systemd/system目錄下面以Target名 + .required后綴構成的子目錄中
Alias:      當前Unit可用于啟動的別名
Also:       當前Unit激活時(enable),會被同時激活的其他Unit

五、Target的概念

Target就是一個Unit組,包含許多相關Unit。啟動某個Target的時候,Systemd就會啟動里面所有的Unit。

傳統init啟動模式里面,有RunLevel的概念,跟Target的作用很類似。不同的是,RunLevel是互斥的,不可能多個RunLevel同時啟動,但是多個Target可以同時啟動。

Target的常用命令:

查看所有target下的unit
systemctl list-unit-files --type=target查看默認target,即默認的運行級別。對應于舊的`runlevel`命令
systemctl get-default設置默認的target
systemctl set-default multi-user.target查看target下的unit
systemctl list-dependencies multi-user.target切換target,不屬于新target的unit都會被停止
systemctl isolate multi-user.target

六、自己配置一個

/lib/systemd/system/目錄中定義一個自己的testserver.service文件

[Unit]
Description=testserver[Service]
# 應用程序所在的文件目錄
WorkingDirectory=/usr/local/src/testserver/
ExecStart=/usr/local/src/testserver/testserver
Restart=always# 如果服務崩潰,10秒后重新啟動服務
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=testserver
User=root# Production:生產環境 Development:開發環境
# Environment=ASPNETCORE_ENVIRONMENT=Development
[Install]
WantedBy=multi-user.target??#?由此target觸發自啟動

通過以下命令實現啟動

systemctl daemon-reload// 自動啟動
systemctl enable testserver.service//立即啟動
systemctl start testserver.service//狀態查看
systemctl status testserver.service

關注我獲取技術分享

33f367b446c354e6eec487b05472c568.jpeg

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281421.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281421.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281421.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue源碼解析之數組變異

力有不逮的對象 眾所周知,在 Vue 中,直接修改對象屬性的值無法觸發響應式。當你直接修改了對象屬性的值,你會發現,只有數據改了,但是頁面內容并沒有改變。 這是什么原因? 原因在于: Vue 的響應式…

linux守護進程的編寫

linux監控一個進程進行 代碼如下: #!/bin/shcd /home/autoprocess/ autopgrep -f autoProcessNew.php | wc -l if [ "$auto" 0 ] then nohup php autoProcessNew.php & fi 監視autoProcessNew.php,使他一直監視轉載于:https://www.cnblogs.com/matengfei123/p/…

微軟2014編程之美初賽第一場——題目3 : 活動中心

【來源】 題目3 : 活動中心 【分析】 本題採用的是三分法。 輸入的一組點中找出左右邊界。作為起始邊界。 while(右邊界-左邊界<精度){將左右邊界構成的線段均勻分成3段&#xff0c;推斷切割點的距離關系&#xff0c;抹去距離大的一段。更新左右邊界。 } 輸出左(右)邊界 【…

windows10計算機里輸入法,win10電腦上輸入法不見了怎么辦

好的輸入法可以加快我們的工作效率&#xff0c;當電腦上輸入法不見時&#xff0c;你會調出來嗎?下面小編告訴你win10電腦上輸入法不見時弄出來的一些訣竅吧。win10電腦上輸入法不見了的解決方法win10電腦上輸入法不見了的解決方法&#xff1a;Win10系統輸入法圖標不見了的找回…

Java并發(二十一):線程池實現原理

一、總覽 線程池類ThreadPoolExecutor的相關類需要先了解&#xff1a; &#xff08;圖片來自&#xff1a;https://javadoop.com/post/java-thread-pool#%E6%80%BB%E8%A7%88&#xff09; Executor&#xff1a;位于最頂層&#xff0c;只有一個 execute(Runnable runnable) 方法&a…

進程池

轉自&#xff1a;https://www.cnblogs.com/kaituorensheng/p/4465768.html 在利用Python進行系統管理的時候&#xff0c;特別是同時操作多個文件目錄&#xff0c;或者遠程控制多臺主機&#xff0c;并行操作可以節約大量的時間。當被操作對象數目不大時&#xff0c;可以直接利用…

gulp版本號管理插件注意事項

2019獨角獸企業重金招聘Python工程師標準>>> 打開node_modules\gulp-rev\index.js 第144行 manifest[originalFile] revisionedFile; 更新為: manifest[originalFile] originalFile ?v file.revHash; 打開node_modules\rev-path\index.js 第10行 return filena…

bigfile.to服務器位置,Cloudera Manager 遷移服務器

Cloudera Manager還是比較耗資源的&#xff0c;想把Cloudera Manager&#xff0c;移動到比較好的機器上。在這篇文章中&#xff0c;Cloudera Manager安裝在bigserver1上面&#xff0c;bigserver1是奔騰雙核的CPU。1&#xff0c;Cloudera Manager占資源比較多cloudera manager占…

vue定時ajax獲取數據,vue 中使用 AJAX獲取數據的方法

在VUE開發時&#xff0c;數據可以使用jquery和vue-resource來獲取數據。在獲取數據時&#xff0c;一定需要給一個數據初始值。看下例&#xff1a;new Vue({el:#app,data:{data:""},created:function(){var url"json.jsp";var _selfthis;$.get(url,function…

轉:shell awk

簡單使用&#xff1a; awk &#xff1a;對于文件中一行行的獨處來執行操作 。 awk -F &#xff1a;{print $1,$4} :使用‘&#xff1a;’來分割這一行&#xff0c;把這一行的第一第四個域打印出來 。 詳細介紹&#xff1a; AWK命令介紹 awk語言的最基本功能是在文件或字符串中基…

Mac使用crontab來實現定時任務

crontab 定時執行 配置文件都在/etc/crontab下&#xff0c;如果沒有就創建 語法&#xff1a; crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ] 說明&#xff1a; crontab 是用來讓使用者在固定時間或固定間隔執行程序之用&#xff0c;換句話說&#…

前端技術周刊 2018-12-03:DOM

前端快爆 Chrome 71 開始將試用 SXG 功能&#xff0c;它是由 IETF 提出&#xff0c;Web Package 協議規范下的 Signed HTTP Exchanges 功能的縮寫。該技術使得一個第三方服務器可以直接向用戶提供可靠資源&#xff0c;且不用與原站共享 HTTPS 證書密鑰。?點評&#xff1a;一項…

公司新來了一位阿里P9,在全員大會上講葷段子!還是上個世紀的老段子,太爛了!...

阿里P9在坊間的名聲一向不好&#xff0c;這幾年在業界出了不少令人無語的新聞&#xff0c;今天又來了一個&#xff1a;公司新來了一位阿里P9偽高管&#xff0c;全員大會上來先講了一個葷段子&#xff0c;這個破段子還是上個世紀的&#xff0c;太爛了&#xff01;關于這個段子&a…

【轉】博客美化(1)基本后臺設置與樣式設置

閱讀目錄 1.博客園后臺設置2.自定義樣式的設置博客園美化相關文章目錄&#xff1a;博客園博客美化相關文章目錄 一直都拜膜那些博客園的皮膚設計高手&#xff0c;由于本人對前端研究甚少&#xff0c;所以js,css這種東西只能看得懂最基本的&#xff0c;會簡單改改。然后一直對自…

Airdoc創始人:工智能可以在醫療領域多個環節發揮作用 但有局限性

7月1日&#xff0c;在由武漢國家生物產業基地建設管理辦公室主辦、火石創造承辦、光谷健康智慧園協辦的醫療大數據與醫學人工智能高峰論壇上&#xff0c;Airdoc創始人兼董事長張大磊做了題為《AI在醫療領域中應用的問題與局限》的演講。 Airdoc是醫療領域人工智能領軍企業&…

我的世界服務器抽獎系統怎么弄,我的世界自動識別貨幣抽獎機如何制作

我的世界是一款很經典的沙盒類游戲&#xff0c;在游戲中紅石和命令方塊是這部作品的核心&#xff0c;可以制作很多裝備和道具&#xff0c;下面給大家分享下我的世界自動識別貨幣抽獎機如何制作&#xff0c;希望對大家有所幫助。自動識別貨幣抽獎機制作方法廢話不多說,(貌似一句…

Java并發編程中volatile實現過程詳細解析

2019獨角獸企業重金招聘Python工程師標準>>> 首先并發編程有三大特性&#xff1a; 可見性&#xff0c;有序性&#xff0c;原子性。volatile關鍵字實現了前面兩個特性。那么它是如何實現這兩個特性的呢&#xff1f; 首先是可見性。可見性主要是讓緩存&#xff0c;直接…

《ASP.NET Core 6框架揭秘》實例演示[32]:錯誤頁面的N種呈現方式

由于ASP.NET是一個同時處理多個請求的Web應用框架&#xff0c;所以在處理某個請求過程中出現異常并不會導致整個應用的中止。出于安全方面的考量&#xff0c;為了避免敏感信息外泄&#xff0c;客戶端在默認情況下并不會得到詳細的出錯信息&#xff0c;這無疑會在開發過程中增加…

SpringMVC接受JSON參數詳解及常見錯誤總結我改

SpringMVC接受JSON參數詳解及常見錯誤總結 最近一段時間不想使用Session了&#xff0c;想感受一下Token這樣比較安全&#xff0c;穩健的方式&#xff0c;順便寫一個統一的接口給瀏覽器還有APP。所以把一個練手項目的前臺全部改成Ajax了&#xff0c;跳轉再使用SpringMVC控制轉發…

軟件定義存儲的定制化怎么走?

引言 當前&#xff0c;軟件定義存儲成為業內超高速增長的典型。有研究人員稱&#xff0c;從2014年到2019年&#xff0c;軟件定義存儲市場將從14億美元增長到62億美元以上&#xff0c;年復合增長率將達35%。軟件定義存儲所帶來的優勢顯而易見&#xff0c;但是對于企業來說&#…