第十三章 守護(hù)進(jìn)程

守護(hù)進(jìn)程的特征

編程規(guī)則

  1. 首先要做的是調(diào)用 umask 將文件模式創(chuàng)建屏蔽字設(shè)置為一個(gè)已知值

  2. 調(diào)用 fork,然后使父進(jìn)程 exit

  3. 調(diào)用setsid 創(chuàng)建一個(gè)新會(huì)話:使調(diào)用進(jìn)程:(a)成為

    新會(huì)話的首進(jìn)程,(b)成為一個(gè)新進(jìn)程組的組長(zhǎng)進(jìn)程,(c)沒有控制終端

  4. 將當(dāng)前工作目錄更改為根目錄

  5. 關(guān)閉不再需要的文件描述符

  6. 某些守護(hù)進(jìn)程打開/dev/null 使其具有文件描述符 0、1 和2

出錯(cuò)記錄

3 種產(chǎn)生日志消息的方法

  1. 內(nèi)核例程可以調(diào)用 log 函數(shù)
  2. 大多數(shù)用戶進(jìn)程(守護(hù)進(jìn)程)調(diào)用 syslog(3)函數(shù)來產(chǎn)生日志消息
  3. 無論一個(gè)用戶進(jìn)程是在此主機(jī)上,還是在通過 TCP/IP 網(wǎng)絡(luò)連接到此主機(jī)的其他主機(jī)上,
    都可將日志消息發(fā)向 UDP 端口 514

syslogd 守護(hù)進(jìn)程讀取所有 3 種格式的日志消息

  1. 緊急消息可發(fā)送至系統(tǒng)管理員(若已登錄)
  2. 警告消息則可記錄到一個(gè)文件中
#include <syslog.h>
void openlog(const char *ident, int option, int facility);
void syslog(int priority, const char *format, ...);
void closelog(void);
int setlogmask(int maskpri);
#include <syslog.h>
#include <stdarg.h>
void vsyslog(int priority, const char *format, va_list arg);

單實(shí)例守護(hù)進(jìn)程

lockfile(fd)

守護(hù)進(jìn)程的慣例

若守護(hù)進(jìn)程使用鎖文件,那么該文件通常存儲(chǔ)在/var/run 目錄中(可能需要具有超級(jí)用戶權(quán)限才能在此目錄下創(chuàng)建文件),鎖文件的名字通常是 name.pid,其中,name 是該守護(hù)進(jìn)程或服務(wù)的名字。例如,cron 守護(hù)進(jìn)程鎖文件的名 字是/var/run/crond.pid

若守護(hù)進(jìn)程支持配置選項(xiàng),那么配置文件通常存放在/etc 目錄中。配置文件的名字通常 是 name.conf,其中,name 是該守護(hù)進(jìn)程或服務(wù)的名字

守護(hù)進(jìn)程可用命令行啟動(dòng), 但通常它們是由系統(tǒng)初始化腳本之一(/etc/rc或 /etc/init.d/)啟動(dòng)的。如果在守護(hù)進(jìn)程終止時(shí),應(yīng)當(dāng)自動(dòng)地重新啟動(dòng)它,則我們可 在/etc/inittab 中為該守護(hù)進(jìn)程包括 respawn 記錄項(xiàng),這樣,init 就將重新啟動(dòng)該 守護(hù)進(jìn)程。下面是centos7的inttab文件,已被取代

# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
#

客戶進(jìn)程-服務(wù)器進(jìn)程模型

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評(píng)論 19 139
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢(mèng)閱讀 100,605評(píng)論 9 468
  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 6,319評(píng)論 0 10
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,200評(píng)論 2 33
  • 菊花的影兒在地 藤椅兒背著陽光 書落在地上了 不想拾起來 只任它微風(fēng)吹卷 窗兒開著 簾兒飏著 人兒無聊 只有 書是...
    夢(mèng)雙眸閱讀 334評(píng)論 3 15

友情鏈接更多精彩內(nèi)容