DAEMON

中文man手册

DAEMON

NAME
æè¿°
ä¼ ç»çSysV宿¤è¿ç¨
æ°å宿¤è¿ç¨
å¯å¨
ç³»ç»å¯å¨æ¶å¯å¨
åºäºå¥æ¥åçå¯å¨
åºäº D-Bus çå¯å¨
åºäºè®¾å¤çå¯å¨
åºäºè·¯å¾çå¯å¨
åºäºå®æ¶å¨çå¯å¨
å¶ä»å¯å¨æ¹å¼
ä¸ SYSTEMD æ´å
ç¼å systemd ååæä»¶
å®è£ service ååæä»¶
ç§»æ¤å·²æç宿¤è¿ç¨
æ¾ç½®å®æ¤è¿ç¨çæ°æ®
åè§
NOTES
è·

NAME

daemon - ç¼å䏿åç³»ç»å®æ¤è¿ç¨

æè¿°

"宿¤è¿ç¨"çæææ¯å¨åå°è¿è¡çæå¡è¿ç¨ï¼ 常ç¨äºçç£ç³»ç»çè¿è¡æèæä¾æç§åè½ã å¨ä¼ ç»ç SysV Unix ç³»ç»ä¸ï¼ å¤ä¸ªå®æ¤è¿ç¨å¿é¡»ä¸¥æ ¼æç§ç¹å®ç顺åºä¾æ¬¡å¯å¨ã å¨"æ°å"ç systemd(1) ç³»ç»ä¸ï¼ 宿¤è¿ç¨çå¯å¨é¡ºåºé常ç®åä¸éå¸¸å¼ºå¤§ã æ¬æååæ¶è§£è¯´äºä¸è¿°ä¸¤ç§ä¸åçå¯å¨æ¹æ¡ï¼ å¹¶ç¹å«æ¨èäºåºè¯¥åå«å¨ systemd ç³»ç»ä¸ç宿¤è¿ç¨ã

ä¼ ç»çSysV宿¤è¿ç¨

ä¼ ç»çSysV宿¤è¿ç¨å¨å¯å¨çæ¶åï¼ åºè¯¥å¨åå§åé¶æ®µæ§è¡ä¸é¢çæ¥éª¤ï¼

1. å³éé¤ STDIN STDOUT STDERR ä¹å¤çæææä»¶æè¿°ç¬¦

2. éç½®ææä¿¡å·å¤çå¨

3. éç½®ææä¿¡å·æ©ç

4. æ¸çç¯å¢åé(éç½®ä¸é¨åï¼ç§»é¤ä¸é¨å)

5. è°ç¨ fork() å建ä¸ä¸ªåå°è¿ç¨

6. å¨åè¿ç¨ä¸è°ç¨ setsid() ä»ç»ç«¯è±ç¦»å¹¶å建ä¸ä¸ªç¬ç«çä¼è¯

7. å¨åè¿ç¨ä¸å䏿¬¡è°ç¨ fork() 以确ä¿å®æ¤è¿ç¨æ°¸è¿æ æ³è·åä»»ä½ç»ç«¯ã

8. 第ä¸ä¸ªåè¿ç¨ä¸»å¨éåºï¼ åªæç¬¬äºä¸ªåè¿ç¨(å®éç宿¤è¿ç¨)ä¿æè¿è¡ï¼ å¹¶ä¸ä»¥ init(PID=1) 为ç¶è¿ç¨ã

9. 宿¤è¿ç¨(第äºä¸ªåè¿ç¨)å° STDIN STDOUT STDERR è¿æ¥å° /dev/null èæè®¾å¤

10. 宿¤è¿ç¨å° umask 设为 0

11. 宿¤è¿ç¨å°å½åç®å½åæ¢å°æ ¹ç®å½(/)

12. 宿¤è¿ç¨å°èªèº«çPIDè®°å½å°ä¾å¦ /run/foobar.pid è¿æ ·çæä»¶ä¸

13. 宿¤è¿ç¨ä¸¢å¼èªå·±ä¸éè¦çæé(妿å¯ä»¥)

14. 宿¤è¿ç¨éç¥æåçç¶è¿ç¨ï¼åå§åå·¥ä½å·²å®æ

15. æåçç¶è¿ç¨èªèº«éåº

注æï¼è¿äºæ¥éª¤å¯¹äºä¸æè®²è¿°çæ°å宿¤è¿ç¨æ¯ä¸éè¦çï¼ é¤é为äºå»æå¼å®¹ä¼ ç»çSysVç³»ç»ã

æ°å宿¤è¿ç¨

Linux ç³»ç»ä¸çæ°å宿¤è¿ç¨æ´å®¹æè¢«çæ§ä¹æ´å®¹æå®ç°ã

宿¤è¿ç¨æ éå®ç°åæææè¿°ç夿æ¥éª¤ï¼ å³å¯ç´æ¥å¨ systemd æä¾çå¹²åçä¸ä¸æç¯å¢ä¸è¿è¡ï¼

ç¯å¢åéå·²ç»è¢«æ¸çãä¿¡å·å¤çå¨ä¸ä¿¡å·æ©ç å·²ç»è¢«éç½®ãæ²¡æéççæä»¶æè¿°ç¬¦ã宿¤è¿ç¨èªå¨å¨å¶ä¸å±çä¼è¯ä¸- æ§è¡ã æ åè¾å¥(STDIN)å·²è¢«è¿æ¥å° /dev/null èæè®¾å¤(é¤é妿éç½®)ã æ åè¾åº(STDOUT)䏿 åé误(STDERR)å·²è¢«è¿æ¥å° systemd-journald.service(8) æ¥å¿æå¡(é¤é妿éç½®)ãumask å·²ç»è¢«éç½® ... çç

æ°å宿¤è¿ç¨åªéè¦éµå®å¦ä¸è¦æ±ï¼

1. æ¶å° SIGTERM ä¿¡å·å å³éè¿ç¨å¹¶ç¡®ä¿å¹²åçéåº

2. æ¶å° SIGHUP ä¿¡å·å éæ°å è½½éç½®æä»¶(è¥éè¦)

3. 䏻宿¤è¿ç¨å¨éåºæ¶åºè¯¥æç§ LSB recommendations for SysV init scripts [1] çè¦æ±è¿åæ°å½çéåºç ï¼ ä»¥ä¾¿äº systemd 夿æå¡çéåºç¶æã

4. è¥å¯è¡ï¼å¨åå§åçæå䏿¥ï¼ éè¿ D-Bus å建è¿ç¨çæ§å¶æ¥å£ï¼ å¹¶å¨ D-Bus 䏿³¨åä¸ä¸ªæ»çº¿åç§°ã

5. æä¾ä¸ä¸ª .service ååæä»¶ï¼ åå«å¦ä½å¯å¨/忢/ç»´æ¤è¯¥æå¡çéç½®ã è¯¦è§ systemd.service(5) æåã

6. å°½å¯è½ä¾èµäº systemd çèµæºæ§å¶ä¸æéå¥å¤ºåè½ (CPUä¸åå- å ç¨/æä»¶è®¿é®çç)ï¼ èä¸è¦èªå·±å®ç°å®ä»¬ã è¯¦è§ systemd.exec(5) æåã

7. è¥ä½¿ç¨äº D-Bus ï¼ åå¼ºçæ¨è使ç¨åºäº D-Bus çå¯å¨æºå¶ã è¿æ ·åæè®¸å¤å¥½å¤ï¼ 宿¤è¿ç¨å¯ä»¥æéå»¶è¿å¯å¨ï¼ å¯ä»¥åä¾èµäºå®çè¿ç¨å¹¶è¡å¯å¨(æåå¯å¨é度)ï¼ å®æ¤è¿ç¨å¯ä»¥å¨å¤±è´¥æ¶è¢«èªå¨éå¯ èä¸ä¸¢å¤±D-Busæ»çº¿ä¸ç请æ±(详è§ä¸æ)

8. è¥å®æ¤è¿ç¨éè¿å¥æ¥åæä¾æå¡ï¼ åå¼ºçæ¨è使ç¨åºäºå¥æ¥å- çå¯å¨æºå¶(详è§ä¸æ)ã è¿æ ·åæè®¸å¤å¥½å¤ï¼ 宿¤è¿ç¨å¯ä»¥æéå»¶è¿å¯å¨ï¼ å¯ä»¥åä¾èµäºå®çè¿ç¨å¹¶è¡å¯å¨(æåå¯å¨é度)ï¼ å¯¹äºæ ç¶æåè®®(ä¾å¦ syslog, DNS)ï¼ å®æ¤è¿ç¨å¯ä»¥å¨å¤±è´¥æ¶è¢«èªå¨éå¯èä¸ä¸¢å¤±å¥æ¥å- ä¸ç请æ±(详è§ä¸æ)

9. è¥å¯è½ï¼å®æ¤è¿ç¨åºè¯¥éè¿ sd_notify(3) æ¥å£éç¥ systemd "å¯å¨å·²å®æ"æ"ç¶æå·²æ´æ°"è¿æ ·çæ¶æ¯ã

10. ä¸è¦ä½¿ç¨ syslog() è®°å½æ¥å¿ï¼ åªéç®åçä½¿ç¨ fprintf() å STDERR è¾åºæ¥å¿å³å¯ã 妿å¿é¡»æææ¥å¿ççº§ï¼ åå¯ä»¥å¨æ¥å¿ç è¡é¦å ä¸ç±»ä¼¼ "<4>" è¿æ ·çåç¼å³å¯(è¿é表示4级"WARNING")ã è¯¦è§ sd-daemon(3) ä¸ systemd.exec(5) æåã

ä¸è¿°è¦æ±ä¸ Apple MacOS X Daemon Requirements [2] ç±»ä¼¼ï¼ ä½å¹¶ä¸å®å¨ç¸åã

å¯å¨

systemd æä¾äºå¤ç§å¯å¨æºå¶(è§ä¸æ)ï¼ èæå¡ååä¹ç»å¸¸åæ¶ä½¿ç¨å¶ä¸çå ç§ã ä¾å¦ bluetoothd.service å¯ä»¥å¨æå¥èç硬件æ¶è¢«å¯å¨ï¼ ä¹å¯ä»¥å¨æè¿ç¨è®¿é®å¶ D-Bus æ¥å£æ¶è¢«å¯å¨ã å妿尿å¡å¯ä»¥å¨IPPç«¯å£ææµéæ¥å¥æ¶è¢«å¯å¨ï¼ ä¹å¯ä»¥å¨æå¥æå°æºç¡¬ä»¶æ¶è¢«å¯å¨ï¼ è¿å¯ä»¥å¨ææä»¶è¿å¥æå°æº spool ç®å½æ¶è¢«å¯å¨ã çè³å¯¹äºå¿é¡»å¨ç³»ç»å¯å¨æ¶æ æ¡ä»¶å¯å¨çæå¡ï¼ 为äºå°½å¯è½å¹¶åå¯å¨ï¼ ä¹åºè¯¥ä½¿ç¨æäºå¯å¨æºå¶ã 妿æå®æ¤è¿ç¨å®ç°äºä¸ä¸ª D-Bus æå¡æèçå¬ä¸ä¸ªå¥æ¥åï¼ é£ä¹ä½¿ç¨åºäº D-Bus æåºäºå¥æ¥åçå¯å¨æºå¶ï¼ å°å许该è¿ç¨ä¸å¶å®¢æ·ç«¯åæ¶å¹¶è¡å¯å¨(ä»èå å¿«å¯å¨é度)ã å ä¸ºææçé信渠éé½å·²äºå建ç«ï¼ å¹¶ä¸ä¸ä¼ä¸¢å¤±ä»»ä½å®¢æ·ç«¯è¯·æ±ï¼ åæ¶ D-Bus æ»çº¿æèåæ ¸ä¼å°å®¢æ·ç«¯è¯·æ±æå¥éåçåï¼ ç´å°å®æå¯å¨ã

ç³»ç»å¯å¨æ¶å¯å¨

ä¼ ç»ç宿¤è¿ç¨ä¸è¬æ¯å¨ç³»ç»å¯å¨æ¶éè¿SysVåå§åèæ¬èªå¨å¯å¨ï¼ systemd 乿¯æè¿ç§å¯å¨æ¹å¼ã

å¯¹äº systemd æ¥è¯´ï¼ å¦æå¸æç¡®ä¿æååå¨ç³»ç»å¯å¨æ¶èªå¨å¯å¨ï¼ é£ä¹æä½³çåæ³æ¯å¨é»è®¤å¯å¨ç®æ  (éå¸¸æ¯ multi-user.target æ graphical.target)ç .wants/ ç®å½ä¸ä¸ºè¯¥åå建ç«è½¯é¾æ¥ã åè§ systemd.unit(5) æå以äºè§£ .wants/ ç®å½ï¼ åè§ systemd.special(7) æå以äºè§£ä¸è¿°ä¸¤ä¸ªç¹æ®çå¯å¨ç®æ ã

åºäºå¥æ¥åçå¯å¨

为äºå°½å¯è½æé«å¹¶è¡æ§ä¸å¥å£®æ§ï¼ 以åç®åéç½®ä¸å¼åï¼ å¯¹äºéè¦çå¬å¥æ¥å- çæå¡ï¼ å¼ºçæ¨è使ç¨åºäºå¥æ¥åçå¯å¨æºå¶ã ä½¿ç¨æ¤æºå¶åï¼ å®æ¤è¿ç¨ä¸åéè¦å建åç»å®å¥æ¥åï¼ èæ¯ç± systemd æ¥ç®¡è¿ä¸ªå·¥ä½ã systemd å°ä¼æ ¹æ®ååæä»¶çè®¾ç½®ï¼ é¢åå建æéç奿¥åï¼ å¹¶å¨ç¬¬ä¸ä¸ªå®¢æ·ç«¯è¯·æ±æ¥å¥çæ¶åå¯å¨è¯¥æå¡ï¼ 以å®ç°æå¡çæéå¯å¨ã 该æºå¶ç好å¤è¿å¨äºï¼ é¢ååå»ºå¥½å¥æ¥åä¹åï¼ ææä½¿ç¨æ¤å¥æ¥å- éä¿¡çè¿ç¨å¯ä»¥å¹¶è¡å¯å¨(忬客æ·ç«¯åæå¡ç«¯)ã æ- ¤å¤ï¼é坿å¡åªä¼å¯¼è´ä¸¢å¤±æä½é度ç客æ·ç«¯è¿æ¥ï¼ çè³ä¸ä¸¢å¤±ä»»ä½å®¢æ·ç«¯è¯·æ± (ä¾å¦å¯¹äº DNS æ syslog è¿æ ·çæ ç¶æåè®®)ã å ä¸ºå¥æ¥å卿å¡é坿é´å§ç»ä¿æææå¹¶ä¸å¯è¢«è®¿é®ï¼ åæ¶ææå®¢æ·ç«¯è¯·æ±ä¹é½è¢«æå¥éåçåå¤çã

ä½¿ç¨æ¤æºå¶ä¹åï¼ å®æ¤è¿ç¨å¿é¡»è¦ä» systemd æ¥æ¶å·²å建好ç奿¥åï¼ èä¸è½èªå·±å建并ç»å®å¥æ¥åã å³äºå¦ä½ä½¿ç¨è¯¥æºå¶ï¼åè§ sd_listen_fds(3) ä¸ sd-daemon(3) æåã åªéè¦å°å°çä¿®æ¹ï¼ å³å¯å¨åæå¯å¨æºå¶çåºç¡ä¸æ·»å åºäºå¥æ¥åçå¯å¨æºå¶ï¼ è³äºå¦ä½ç§»æ¤ï¼è¯¦è§åæã

systemd éè¿ .socket ååå®ç°è¯¥æºå¶ï¼è¯¦è§ systemd.socket(5) æåã å¿é¡»ç¡®ä¿ææä¸ºæ¯æåºäºå¥æ¥åå¯å¨èå建ççå¬ socket ååé½è¢«åå«å¨ sockets.target ä¸ã å»ºè®®å¨ socket ååç "[Install]" å°èå å¥ WantedBy=sockets.target è®¾ç½®ï¼ ä»¥ç¡®ä¿å¨å¯ç¨è¯¥ååæ¶è½å¤èªå¨æ·»å ä¸è¿°ä¾èµå³ç³»ã é¤éæç¡®è®¾ç½®äº DefaultDependencies=no ï¼ å¦åä¼ä¸ºææ socket ååéå«çå建å¿è¦ç顺åºä¾èµã æå³ sockets.target çè§£éï¼è¯¦è§ systemd.special(7) æåã 妿æ socket åå已被åå«å¨ sockets.target ä¸ï¼ é£ä¹ä¸å»ºè®®å¨å¶ä¸- åæ·»å ä»»ä½é¢å¤çä¾èµå³ç³»(ä¾å¦ multi-user.target ä¹ç±»)ã

åºäº D-Bus çå¯å¨

妿宿¤è¿ç¨ä½¿ç¨ D-Bus ä¸å®¢æ·ç«¯éä¿¡ï¼ é£ä¹å®åºè¯¥ä½¿ç¨åºäº D-Bus çå¯å¨æºå¶ï¼ è¿æ ·å½å®¢æ·ç«¯è®¿é®å¶ D-Bus æ¥å£æ¶ï¼ 该æå¡å°è¢«èªå¨å¯å¨ã 该æºå¶æ¯éè¿ D-Bus service æä»¶å®ç°ç(ä¸è¦ä¸æ®éçååæä»¶æ··æ·)ã 为äºç¡®ä¿è®© D-Bus ä½¿ç¨ systemd æ¥å¯å¨ä¸ç»´æ¤å®æ¤è¿ç¨ï¼ å¿é¡»å¨è¿äº D-Bus service æä»¶ä¸ä½¿ç¨ SystemdService= ææå¶å¹éçæå¡ååã ä¾å¦ï¼å¯¹äºæä»¶å为 org.freedesktop.RealtimeKit.service ç D-Bus service æ¥è¯´ï¼ 为äºå°å¶ç»å®å° rtkit-daemon.service æå¡ååï¼ å¿é¡»ç¡®ä¿å¨è¯¥æä»¶ä¸è®¾ç½®äº SystemdService=rtkit-daemon.service æä»¤ã 注æï¼å¿é¡»æç¡®è®¾ç½® SystemdService= æä»¤ï¼ å¦å彿å¡åååæ¶ä½¿ç¨å¤ç§å¯å¨æºå¶æ¶ï¼ å¯è½ä¼å¯¼è´ç«äºæ¡ä»¶çåºç°ã

åºäºè®¾å¤çå¯å¨

ç¨äºç®¡çç¹å®ç±»å硬件ç宿¤è¿ç¨ï¼ åªåºè¯¥å¨ç¬¦åæ¡ä»¶ç硬件å为å¯ç¨æè被æå¥æ¶ï¼æéè¦å¯å¨ã 为äºè¾¾å°ä¸è¿°ç®çï¼ å¯ä»¥å°æå¡çå¯å¨/忢ä¸ç¡¬ä»¶çæå¥/æåºäºä»¶ç»å®ã å½å¸¦æ "systemd" æ ç¾ç设å¤åºç°å¨ sysfs/udev è®¾å¤æ ä¸æ¶ï¼ systemd å°ä¼èªå¨ä¸ºå¶å建对åºç device ååã éè¿åè¿äºåå䏿·»å å¯¹å¶ä»ååç Wants= ä¾èµï¼ å°±å¯ä»¥å®ç°å½è¯¥ device åå被å¯å¨(ä¹å°±æ¯ç¡¬ä»¶è¢«æå¥)æ¶ï¼ è¿å¸¦å¯å¨å¶ä»ååï¼ä»èå®ç°åºäºè®¾å¤çå¯å¨ã è¿å¯ä»¥éè¿å udev è§ååºä¸æ·»å SYSTEMD_WANTS= 屿§æ¥å®ç°ï¼ è¯¦è§ systemd.device(5) æåã é常ï¼å¹¶ä¸æ¯å° service ååç´æ¥æ·»å å°è®¾å¤ç Wants= ä¾èµä¸ï¼ èæ¯éè¿ä¸ç¨ç target ååé´æ¥æ·»å ã ä¾å¦ï¼ä¸æ¯å° bluetoothd.service æ·»å å°åç§èç设å¤ç Wants= ä¾èµä¸ï¼ èæ¯å° bluetoothd.service æ·»å å° bluetooth.target ç Wants= ä¾èµä¸ï¼ åæ¶åå° bluetooth.target æ·»å å°åç§èç设å¤ç Wants= ä¾èµä¸ã éè¿å¼å¥ bluetooth.target è¿ä¸ªæ½è±¡å±ï¼ ç³»ç»ç®¡çåæ éæ¹éä¿®æ¹ udev è§ååºï¼ ä»éè¿ systemctl enable|disable ... å½ä»¤ ä¿®æ¹ bluetooth.target.wants/ ç®å½ä¸çè½¯é¾æ¥ï¼ å³å¯æ§å¶ bluetoothd.service ç使ç¨ã

åºäºè·¯å¾çå¯å¨

对äºå¤ç spool æä»¶æç®å½ç宿¤è¿ç¨(ä¾å¦æå°æå¡)æ¥è¯´ï¼ ä»å¨ spool æä»¶æç®å½ç¶æåçååæèå容é空æ¶ï¼ æéè¦å¯å¨ã éè¿ .path ååå®ç°çã åºäºè·¯å¾çå¯å¨æºå¶æ£å¥½éç¨äºè¿ç§åºåï¼ è¯¦è§ systemd.path(5) æåã

åºäºå®æ¶å¨çå¯å¨

对äºå¨ææ§çæä½(ä¾å¦å徿件æ¸çæèç½ç»å¯¹æ¶)ï¼ å¯ä»¥éè¿åºäºå®æ¶å¨çå¯å¨æºå¶æ¥å®ç°ã è¿ç§æºå¶éè¿ .timer ååå®ç°ï¼è¯¦è§ systemd.timer(5) æåã

å¶ä»å¯å¨æ¹å¼

å¨å¶ä»æä½ç³»ç»ä¸è¿åå¨çå¶ä»çå¯å¨æºå¶ï¼ ä¸è¿è¿äºæºå¶é½å¯ä»¥è¢«åè¿°çåç§æºå¶çç»åæ¿ä»£ã å æ¤å¨è¿éä¸åèµè¿°ã

ä¸ SYSTEMD æ´å

ç¼å systemd ååæä»¶

å¨ç¼åååæä»¶æ¶åºå½èèä¸å建议ï¼

1. å°½å¯è½ä¸ç¨ Type=forking ã è¥éç¨ä¸å¯ï¼åå¿é¡»æ£ç¡®è®¾ç½® PIDFile= æä»¤ãåè§ systemd.service(5) æåã

2. è¥å®æ¤è¿ç¨å¨ D-Bus 䏿³¨åäºä¸ä¸ªååï¼ ååºå°½å¯è½ä½¿ç¨ Type=dbus

3. 设置ä¸ä¸ªæäºçè§£ç Description=

4. ç¡®ä¿ DefaultDependencies=yes ï¼ é¤é该ååå¿é¡»å¨ç³»ç»å¯å¨çæ©æå¯å¨æèå¿é¡»å¨ç³»ç»å³éçæ«æå³éã

5. é常æ éæ¾å¼å®ä¹ä¾èµå³ç³»ã ä¸è¿ï¼å¦æç¡®å®éè¦æ¾å¼å®ä¹ä¾èµå³ç³»ï¼ 为äºç¡®ä¿ååæä»¶ä¸å±éäºç¹å®çåè¡çï¼ä»åºè¯¥ä¾èµäº systemd.special(7) ä¸ååºçåå以åèªèº«æå±è½¯ä»¶å䏿ä¾çååã

6. ç¡®ä¿å¨ "[Install]" å°èä¸åå«å®æ´çå¯ç¨ä¿¡æ¯(åè§ systemd.unit(5) æå)ã è¥å¸æèªå¨å¯å¨è¯¥ååï¼ ååºè¯¥è®¾ç½® WantedBy=multi-user.target æ WantedBy=graphical.target è¥å¸æèªå¨å¯å¨è¯¥ååç奿¥åï¼ååºè¯¥è®¾ç½® WantedBy=sockets.target ã é常你è¿å¸æå¨å¯ç¨è¯¥ååæ¶ï¼ ä¸èµ·å¯ç¨å¯¹åºç奿¥ååå(åå®ä¸º foo.service)ï¼ å æ¤è¿åºè¯¥è®¾ç½® Also=foo.socket

å®è£ service ååæä»¶

å½ä»æºä»£ç ç¼è¯å®è£(make install)è½¯ä»¶åæ¶ï¼ å¶ä¸- çç³»ç»æå¡ååæä»¶ä¼è¢«é»è®¤å®è£å° pkg-config systemd --variable=systemdsystemunitdir å½ä»¤è¿åçç®å½ä¸(éå¸¸æ¯ /usr/lib/systemd/system)ï¼ èå¶ä¸çç¨æ·æå¡ååæä»¶ä¼è¢«é»è®¤å®è£å° pkg-config systemd --variable=systemduserunitdir å½ä»¤è¿åçç®å½ä¸(éå¸¸æ¯ /usr/lib/systemd/user)ï¼ ä½å¹¶ä¸åºè¯¥ä½¿ç¨ systemctl enable ... å½ä»¤å¯ç¨å®ä»¬ã å½ä»å管çå¨å®è£(rpm -i)äºè¿å¶è½¯ä»¶åæ¶ï¼ å¶ä¸- çååæä»¶åºè¯¥åæ ·å®è£å°ä¸è¿°ä½ç½®ã ä½ä¸åä¹å¤å¨äºï¼ è¿åºè¯¥ä½¿ç¨ systemctl enable ... å½ä»¤å¯ç¨å®ä»¬ï¼ å æ- ¤å®è£çååæå¯è½ä¼å¨å¼æºæ¶èªå¨å¯å¨ã

ç§»æ¤å·²æç宿¤è¿ç¨

è½ç¶ systemd å¼å®¹ä¼ ç»ç SysV åå§åç³»ç»ï¼ 使¯ç§»æ¤æ§æç宿¤è¿ç¨å¯ä»¥æ´å¥½çå©ç¨ systemd çåè¿ç¹æ§ã å»ºè®®å¯¹æ§æç SysV 宿¤è¿ç¨åå¦ä¸æ¹è¿ï¼ ...[çç¥]...

æ¾ç½®å®æ¤è¿ç¨çæ°æ®

建议éµå® file-hierarchy(7) æå»ºè®®çéç¨ååã

åè§

systemd(1), sd-daemon(3), sd_listen_fds(3), sd_notify(3), daemon(3), systemd.service(5), file-hierarchy(7)

NOTES

1.

LSB recommendations for SysV init scripts

http://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html

2.

Apple MacOS X Daemon Requirements

https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html

è·

æ¬é¡µé¢ä¸æçç±ä¸æ man æå页计åæä¾ã

ç¿»è¯äººåï¼éæ¥å½
鿥å½ä½åéï¼http://www.jinbuguo.com
䏿 man æå页计åï¼https://github.com/man-pages-zh/manpages-zh