3.8 Daemon¡B«H¸¹¤Î²×¤îµ{§Ç

·í¦b°õ¦æ¤å®Ñ½s¿è¾¹®É¡A±z¥i¥H«Ü®e©ö¦a¨Ï¥Î¥¦¡A¥s¥¦Åª¨úÀɮשάO¤°»òªº¡C ¥i¥H³o¼Ë°µ¬O¦]¬°½s¿è¾¹¦³´£¨Ñ³o¨Ç¥\¯à¡A ÁÙ¦³´N¬O½s¿è¾¹¨Ìªþ¦b¤@­Ó²×ºÝ¾÷ (Terminal) ¤§¤W¡C ¦³¨Çµ{¦¡¨Ã¤£¬O³]­p¦¨¤@ª½¦b±µ¦¬¨Ï¥ÎªÌªº¿é¤Jªº¡A ©Ò¥H¥¦­Ì¦b¤@¶}©l°õ¦æªº®É­Ô´N±q²×ºÝ¾÷Â_¶}¤F¡C ¨Ò¦p»¡¡A ºô­¶¦øªA¾¹¾ã¤Ñ³£¦b¦^À³ºô­¶¤è­±ªº­n¨D¡A¥¦³q±`¤£»Ý­n±z¿é¤J¥ô¦óªF¦è¡C ¥t¥~¡A¹³¬O§â«H±q¤@­Ó¯¸¶Ç°e¨ì¥t¤@­Ó¯¸ªºµ{¦¡¡A¤]¬O³oºØÃþ«¬ªºÀ³¥Îµ{¦¡¡C

§Ú­Ì§â³oºØµ{¦¡ºÙ§@ daemon¡C Daemon (´cÅ]¡B¦uÅ@¯«) ¬O§ÆÃ¾¯«¸Ü¤¤ªº¨¤¦â¡GÍ¢­Ì¤£Äݩ󵽨}°}Àç©Î¨¸´c°}Àç¡A¬O¦uÅ@ªº¤pºëÆF¡C ¤j­P¤W¨Ó»¡Í¢­Ì´N¬O¦b´À¤HÃþ°µ¤@¨Ç¦³¥Îªº¨Æ±¡¡A ¸ò¤µ¤Ñªººô­¶¦øªA¾¹©Î¬O¶l¥ó¦øªA¾¹«Ü¹³¡C ³o¤]´N¬O¬°¦ó BSD ªº¦N²»ª«¡Aªø´Á¥H¨Ó³£¬O¤@°¦¬ïµÛ¦|¥¬¾c®³µÛ¤T¤e¯Òªº§Ö¼Ö¤p´cÅ]ªº­ì¦]¡C

³q±`¨Ó»¡ deamon µ{¦¡ªº¦W¦r«á­±³£·|¥[¤@­Ó¦r¥À ¡§d¡¨¡C BIND ¬O Berkeley Internet Name Domain ªºÁY¼g (¦ý¹ê»Ú¤W°õ¦æªºµ{¦¡¦WºÙ¬O named)¡BApache ºô­¶¦øªA¾¹ªºµ{¦¡¦WºÙ¬O httpd¡B¦Lªí¾÷ªA°Èµ{¦¡¬O lpd¡A¨Ì¦¹Ãþ±À¡C ³o¬O²ßºD¥Îªk¡A¨Ã¨S¦³µw©Ê³W©w¡A¨Ò¦p Sendmail ¥D­nªº±H«H daemon ¬O¥s°µ sendmail ¦Ó¤£¬O maild¡A¸ò±z·Q¹³ªº¤£¤@¼Ë¡C

¦³¨Ç®É­Ô·|»Ý­n¸ò¬Y­Ó daemon µ{§Ç·¾³q¡A ³o¨Ç·¾³q¬O³z¹L©Ò¿×ªº«H¸¹(signal)¨Ó¶Ç»¼µ¹¸Ó daemon µ{§Ç(©Î¬O¨ä¥L°õ¦æ¤¤ªºµ{§Ç)¡C ÂǥѰe¥X«H¸¹¡A±z¥i¥H©M¤@­Ó daemon (©Î¬O¥ô¦ó¤@­Ó¥¿¦b¶]ªºµ{§Ç) ·¾³q¡C «H¸¹¦³«Ü¦hºØ¡X¡X¦³¨Ç¦³¯S©wªº·N¸q¡A¦³¨Ç«h¬O·|¥ÑÀ³¥Îµ{¦¡¨Ó¸ÑŪ¡C À³¥Îµ{¦¡ªº»¡©ú¤å¥ó·|§i¶D±z¸Óµ{¦¡¬O¦p¦ó¸ÑŪ«H¸¹ªº¡C ±z¥u¯à°e«H¸¹µ¹±z¾Ö¦³ªºµ{§Ç¡A°e kill(1) ©Î kill(2) ªº«H¸¹µ¹§O¤Hªºµ{§Ç¬O¤£³Q¤¹³\ªº¡C ¤£¹L root ¤£¨ü¦¹­­¨î¡A¥L¥i¥H°e«H¸¹µ¹¥ô¦ó¤Hªºµ{§Ç¡C

FreeBSD ¥»¨­¦b¬Y¨Ç±¡ªp¤]·|°e«H¸¹µ¹À³¥Îµ{¦¡¡C °²³]¦³­ÓÀ³¥Îµ{¦¡¼g±o«ÜÄê¡AµM«á¥ø¹Ï­n¦s¨ú¥¦¤£¸Ó¸Iªº°O¾ÐÅ骺®É­Ô¡AFreeBSD ·|°e¤@­Ó Segmentation Violation «H¸¹ (SIGSEGV) µ¹³o­Óµ{§Ç¡C ¤S¦pªG¦³¤@­ÓÀ³¥Îµ{¦¡¥Î¤F alarm(3) ªº system call ­n¨D¨t²Î¦b¹L¤@¬q®É¶¡¤§«á¥s¥L¤@¤U¡A®É¶¡¨ì¤Fªº®É­Ô¾xÄÁªº«H¸¹ (SIGALRM) ´N·|³Q°e¥X¤F¡A¨ä¥Lªº¨Ì¦¹Ãþ±À¡C

SIGTERM and SIGKILL ³o¨â­Ó«H¸¹¥i¥H®³¨Ó²×¤îµ{§Ç¡C ¥Î SIGTERM µ²§ôµ{§Ç¬O¤ñ¸û¦³Â§»ªªº¤è¦¡¡A¸Óµ{§Ç·|®·®» (catch) ³o­Ó«H¸¹¦Ó¤F¸Ñ¨ì±z·Q­n§â¥LÃö±¼¡C ±µµÛ¤U¨Ó¥¦·|§â¥¦¦Û¤w¶}ªº°O¿ýÀɳq³qÃö±¼¡A µM«á¦bÃö±¼µ{§Ç¤§«eµ²§ô±¼¤âÃ䪺¤u§@¡C ¦b¬Y¨Ç±¡ªp¤Uµ{§Ç¦³¥i¯à·|¸Ë§@¨S¬Ý¨£ SIGTERM¡A°²¦p¥¦¥¿¦b°µ¤@¨Ç¤£¯à¤¤Â_ªº¤u§@ªº¸Ü¡C

SIGKILL ´N¨S¦³¿ìªk³Qµ{§Ç©¿²¤¤F¡C ³o¬O¤@­Ó¡§§ÚºÞ§A¥¿¦b·F¹À¡A²{¦b´Nµ¹§Ú°±¤U¨Ó¡¨ªº«H¸¹¡C ¦pªG±z°e¤F SIGKILL «H¸¹µ¹¬Y­Óµ{§Ç¡AFreeBSD ±N·|§â¥¦°±±¼[1]¡C

³o¨Ç¬O¨ä¥L±z¦³¥i¯à·|­n¥Î¨ìªº«H¸¹¡G SIGHUP¡ASIGUSR1¡A¥H¤Î SIGUSR2¡C ³o¨Ç¬O³q¥Îªº«H¸¹¡A·í°e¥X®É¤£¦PªºÀ³¥Îµ{¦¡·|¦³¤£¦Pªº¤ÏÀ³¡C

°²³]±z§ó°Ê¤F±zªººô­¶¦øªA¾¹ªº³]©wÀÉ¡X¡X ±z·Q­n¥sºô­¶¦øªA¾¹¥h­«·sŪ¨ú³]©w­È¡C ±z¥i¥HÃö³¬«á¦A­«·s±Ò°Ê httpd¡A¦ý¬O³o»ò°µ·|³y¦¨ºô­¶¦øªA¾¹¼È°±ªA°È¤@¬q®É¶¡¡A ³o¼Ë¤l¥i¯à¤£¤Ó¦n¡C ¤j³¡¥÷ªº daemon ³£¼g¦¨·|¥h¦^À³ SIGHUP¡C ·í¦¬¨ì³o­Ó«H¸¹¤§«á¡A¥¦­Ì·|¥h­«·sŪ¨ú¦Û¤wªº³]©wÀÉ¡C ¦]¦¹±z¥i¥H¥Î°e SIGHUP «H¸¹¨Ó¨ú¥NÃö±¼­«¶}¡C ¤S¦]¬°¨S¦³¼Ð·Ç¦b³W½d¦p¦ó¦^À³³o¨Ç«H¸¹¡A¤£¦Pªº daemon ¥i¯à·|¦³¤£¦Pªº¦æ¬°¡A©Ò¥H¦³ºÃ°Ýªº¸Ü½Ð¥ý½T»{¨Ã½¾\ deamon ªº»¡©ú¤å¥ó¡C

«H¸¹¬O¥Ñ kill(1) «ü¥O°e¥Xªº¡A¦p½d¨Ò©Ò¥Ü¡G

°e«H¸¹µ¹µ{§Ç

³o­Ó½d¨Ò±N·|¥Ü½d¦p¦ó°e¤@­Ó«H¸¹µ¹ inetd(8)¡C inetd ªº³]©wÀɬO /etc/inetd.conf¡A¦Ó inetd ·|¦b¦¬¨ì SIGHUP ªº®É­Ô­«·sŪ¨ú³o­Ó³]©wÀÉ¡C

  1. §ä¥X±z·Q­n°e«H¸¹ªº¨º­Óµ{§Çªº ID¡C ±z·|¥Î¨ì ps(1) ¥H¤Î grep(1) ³o¨â­Ó«ü¥O¡C grep(1) ¬O¥Î¨Ó¦b¿é¥X¤¤·j´M¡A §ä¥X±z«ü©wªº¦r¦ê¡C ³o­Ó«ü¥O¬O¥Ñ¤@¯ë¨Ï¥ÎªÌ°õ¦æ¡A¦Ó inetd(8) ¬O¥Ñ root °õ¦æ¡A©Ò¥H¦b¨Ï¥Î ps(1) ®É»Ý­n¥[¤W ax ¿ï¶µ¡C

    % ps -ax | grep inetd
      198  ??  IWs    0:00.00 inetd -wW
    

    ¦]¦¹¥iª¾ inetd(8) ªº PID ¬° 198¡C ¦b¬Y¨Ç±¡ªp¤U grep inetd ³o­Ó«ü¥O¥»¨­¤]·|¥X²{¦b¿é¥X¸Ì¡C ³o¬O¦]¬° ps(1) ¤D¬O§ä©Ò¦³°õ¦æ¤¤ªºµ{§Çªº¤è¦¡³y¦¨ªº¡C

  2. ¥Î kill(1) ¨Ó°e«H¸¹¡C ¤S¦]¬° inetd(8) ¬O¥Ñ root °õ¦æªº¡A±z¥²¶·¥Î su(1) ¤Á´«¦¨ root¥ý¡C

    % su
    Password:
    # /bin/kill -s HUP 198
    

    ¤@¯ë±¡ªp¹ï¤j¦h¼Æ UNIX® «ü¥O¨ÓÁ¿¡A·í kill(1) °õ¦æ¦¨¥\®É¨Ã¤£·|¿é¥X¥ô¦ó°T®§¡C °²³]±z°e¤@­Ó«H¸¹µ¹¬Y­Ó¤£¬O±z©Ò¾Ö¦³ªºµ{§Ç¡A ¨º»ò±z´N·|¦Y¨ì³o­Ó¿ù»~°T®§¡G ¡§kill: PID: Operation not permitted¡¨¡C ¦Ó¦pªG±z¥´¿ù PID ªº¸Ü¡A¨º´N·|§â«H¸¹°eµ¹¿ù»~ªºµ{§Ç¡C ³o¼Ë¥i¯à·|«ÜÁV¡A ¤£¹L¦pªG±z°÷©¯¹Bªº¸Ü¡A¥i¯à­è¦n´N¥u¬O§â«H¸¹°eµ¹¤@­Ó«D¨Ï¥Î¤¤ªº PID¡A¨º±z´N¥u·|¬Ý¨ì ¡§kill: PID: No such process¡¨ ¦Ó¤w¡C

    ¬°¤°»ò¥Î /bin/kill¡H: «Ü¦h shell ¦³´£¨Ñ¤º«Øªº kill «ü¥O¡C ¤]´N¬O»¡³oºØ shell ·|ª½±µ°e«H¸¹¡A¦Ó¤£¬O°õ¦æ /bin/kill¡C ³o¼Ë¬OÆZ¤è«Kªº¨S¿ù°Õ¡A¦ý¬O¤£¦Pªº shell ·|¦³¤£¦Pªº»yªk¨Ó«ü©w«H¸¹ªº¦WºÙµ¥¡C »P¨ä¹Á¸Õ¥h§â¥¦­Ì³q³q¾Ç·|¡A¤£¦p´N³æ¯Âªºª½±µ¥Î /bin/kill ... §a¡C

­n°e¨ä¥Lªº«H¸¹ªº¸Ü¤]¬O«D±`Ãþ¦ü¡A´Nµø»Ý­n§â«ü¥O¤¤ªº TERM ©Î KILL ´À´«±¼§Y¥i¡C

Important: ÀH«K§ì¤@­Ó¨t²Î¤¤ªºµ{§ÇµM«á§â¥L¬å±¼¨Ã¤£¬O­Ó¦n¥D·N¡C ¯S§O¬O init(8)¡A process ID 1¡A¤@­Ó«D±`¯S§Oªºµ{§Ç¡C °õ¦æ /bin/kill -s KILL 1 ªºµ²ªG´N¬O¨t²Î¥ß¨èÃö¾÷¡C ¦]¦¹¦b±z«ö¤U Return ­n°õ¦æ kill(1)¤§«e¡A ½Ð¤@©w­n°O±o¦A¦¸½T»{±z¤Uªº°Ñ¼Æ¡C

Notes

[1]

¤£§¹¥þ¥¿½T¡X¡XÁÙ¬O¦³¤Ö¼ÆªF¦è¤£¯à³Q¤¤Â_¡C ¨Ò¦p¦³­Óµ{§Ç¥¿¦b±qºô¸ô¤Wªº§Oªº¹q¸£Åª¤@­ÓÀɮסA ¦Ó¨º³¡¹q¸£¦]¬°¬Y¨Ç²z¥Ñ³s¤£¨ì (¾÷¾¹³QÃö±¼¡A©Î¬Oºô¸ôÄê±¼¤F)¡A ¨º³o­Óµ{§Ç§Ú­Ì´N»¡¥L¬O¤@­Ó¡§¤£¯à¤¤Â_ªº¡¨µ{§Ç¡C ³q±`¦b¸g¹L¨â¤ÀÄÁ¥ª¥k¤§«á³o­Óµ{§Ç·|¹O®É¡C ·íµo¥Í¹O®Éªº®É­Ô³o­Óµ{§Ç´N·|³Qµ²§ô±¼¤F¡C

¥»¤å¤Î¨ä¥L¤å¥ó¡A¥i¥Ñ¦¹¤U¸ü¡Gftp://ftp.FreeBSD.org/pub/FreeBSD/doc/¡C

­Y¦³ FreeBSD ¤è­±ºÃ°Ý¡A½Ð¥ý¾\Ū FreeBSD ¬ÛÃö¤å¥ó¡A¦p¤£¯à¸Ñ¨Mªº¸Ü¡A¦A¬¢¸ß <questions@FreeBSD.org>¡C
Ãö©ó¥»¤å¥óªº°ÝÃD¡A½Ð¬¢¸ß <doc@FreeBSD.org>¡C