linuxã§ããã¯ã°ã©ã¦ã³ãå¦çã便å©ã«ããã³ãã³ãï¼ãã¾ã
追è¨2009/10/16: ããã¤ãææãåãã¾ããããlinuxã§ã£ã¦ãããzshã«çµæ§ä¾åãã¦ãã¾ã£ã¦ãã¾ãã
ã¤ãèªåç°å¢ã«ã¤ãã¦ã°ã£ããèããæªãæãï½
æ¸ããã¨æã£ãçºç«¯ã
ãã¨ã³ãã³ãã©ã¤ã³ã®TIPSã«é¢ãã¦ã¯ãäºæ³å¤ãªäººãäºæ³å¤ãªäºãç¥ããªããã®ã ï¼ã¨é©ãäºãããã¾ãã
disownãç¥ããªãã£ãã£ã¦ãã¨ã¯ããã®ã¸ããããããããç¥ããã¦ãªããã?ã¨ããããã¯ã°ã©ã¦ã³ãå¦çã«é¢ããè±ç¥èï¼ï¼ãã¾ãï¼ãããã¤ãã
ç¥ã£ã¦ããããããªããã ãã©ãããããã®ãéè¦ããã£ã¦ããã£ããå£ã«åºãã¦è¨ã£ã¦ã¿ã¦ããã®ã¯å¤§äºã ãã!
1. ããã£ã±ãªããdisownããç¶æ ã§ããã¯ã°ã©ã¦ã³ãå¦çã«ããã&|ã
ãã¡ãã¡ããã¯ã°ã©ã¦ã³ãå¦çã«ããå¾ã«disownããã£ã¦2度æéãå«ãªäººã«ã
disownã«ã¤ãã¦ã¯ä¸è¨ã®è¨äºåç
§ã
% php example.php &|
ãããªé¢¨ã«ãã&|ãããã¨ãjobã«å ¥ããã«ãããªãdisownãããç¶æ ã§ããã¯ã°ã©ã¦ã³ãå¦çã¨ãªãã¾ãã
追è¨2009/10/16: id:shimookaããã®ææã§ç¥ãã¾ãããã&!ã¨ããã®ãåå¨ãããããã§ããman zshbuiltinsã«ããã¨ã&!ã&|ãåããã®ã¿ããã§ãã
ã¾ããããã¯zshã®ã¿ã®ããã§ãbashã¨ãã ã¨ã ãã¿ããã§ããããã
ã¾ãããããç¥ããªãã¦ã
% php example.php & disown %1
ã£ã¦ã¤ãªãã¡ããã°ã»ã¼åããªãã§ããã©ããã§ãä¸ã®ããæ¹ã®æ¹ãã¨ã¬ã¬ã³ãã§ããã
2. å¦çã®åªå 度ãä¸ãããreniceã
ãªããè£ã§éããããèµ°ããã¤ã¤åããµã¼ãå
ã§ä½æ¥ããããªãã¦æã
å¥ã«ãããã®å¦çã¯ææ¥ã¾ã§ã«çµãã£ã¨ãã¦ãããã°ããããããããã¾å¦çé£ããªãããã
ã¨ãæã£ãããreniceã³ãã³ãã®åºçªã
% ps PID TTY TIME CMD 17907 pts/2 00:00:01 zsh 18148 pts/2 00:00:00 tailf 18183 pts/2 00:00:00 ps % renice 10 18148 18148: old priority 0, new priority 10
ããã»ã¹ã«ã¯åªå
度ã¨ãããã®ãåå¨ãã¦ãã¦ãåªå
度ãé«ããã®ã»ã©å¤ãã®ãã¯ã¼ãå²ãã¦å¦çãã¾ãã
æ°åãå°ããæ¹ãåªå
度ãé«ãããã®å¤ã¯-20ã19ã¾ã§ããã¾ãã-20ãæåªå
ã19ã¨ããäºã§ããé常ã¯0ã§ãã*1
reniceã³ãã³ãã¯ãæ¢ã«å®è¡ä¸ã®ããã»ã¹ã®åªå
度ã夿´ããã³ãã³ãã§ãä¸è¨ã®ããã«æ°ãã夿´ãããåªå
度ã¨ã対象ã®PIDãæå®ãã¦ããã¾ãã
ãªããé常ã¦ã¼ã¶ã®å ´åã¯reniceã³ãã³ãã使ã£ã¦ãåªå
度ããä¸ãããäºã¯ã§ãã¾ãããä¸ããã ãã§ããåªå
度ãä¸ãããå ´åã«ã¯root権éã§ãã£ã¦ãã ããã
3. ããã£ã±ãªããåªå 度ãæå®ãniceã
ç´¹ä»ããé çªãããããã£ã¦ï¼ã¾ãã¾ãã
ã¾ããreniceã§åªå
度ã®èª¬æããããè¯ãããï¼åªå
度ãä¸ããç¶æ
ã§èµ·åã§ãããã§ãã
% nice php example.php
ããããã¨ãã³ãã³ãã®åªå
度ã10ã§èµ·åãã¾ãã*2
ã¡ãªã¿ã«ãããã©ã«ãã¯+10ã§ãããªãã·ã§ã³ã§æå®ãã§ãã¾ãããã¤ãã¹ã使ããã®ã¯ããã£ã±ãrootã ãã§ããã
4. ããã¯ã°ã©ã¦ã³ãå¦çã®æ±ºå®çï¼ãnohupã
ããã¯ã°ã©ã¦ã³ãå¦çãæ¾ç½®ãã¦ä»»ãã¨ããã£ã¦å ´åã¯nohupãæå¼·ã§ãï½
ã¾ããæè¿ã¯screenåãé¢ãã¡ãããã£ã¦äººãå¤ããã§ããããã
% nohup php example.php &
ããããã¨ãnohup.outã¨ãããã¡ã¤ã«ã«æ¨æºåºåã¨ã¨ã©ã¼åºåããªãã¤ã¬ã¯ããã¦ããã¤HUPãåãä»ããªãããã«ããç¶æ
ã§ãphp example.php &ãã®ããã»ã¹ãèµ·åãã¾ãã
*3
HUPã§åæ¢ããªãã®ã§ãnohupããã³ãã³ãã¯è¦ªã®ã·ã§ã«ãããã°ã¢ã¦ããã¦ã大ä¸å¤«ï¼ã£ã¦æãã«ãªãã®ã§ãããããdisownããªãã¦ãããã®ã§ãããã¡ãã¡ãªãã¤ã¬ã¯ããæå®ããªãã¦ãããããç´ æµï¼ï¼ï½ã*4
ä½è«ã§ãããã·ã§ã«ããã°ã¢ã¦ãæã«HUPããã®ã¯ã·ã§ã«ã®è¨å®ã®åé¡*5ãªã®ã§ãä¾ãã°zshãªã
setopt nohup
ã¨ãã¦ããã¨ãHUPã¯ããªããªãã¾ãããããªã£ã¦ãã°ã¶ã£ã¡ããdisownãªãã¦å¿
è¦ãªãã§ãï¼ï½
ã§ããttyãæ»ãã æã¯èªåã§é å¼µã£ã¦ãï¼ã¯ãã¨
ãã¾ã. tailã§ãã°ãæµãã®ã大好ããªããªãã«ããtailfã
æå¤ã¨ç¥ããã¦ãªããªãã¨æã便å©ã³ãã³ãã®ä»£è¡¨æ ¼ã ã£ããããã®ããã®tailfã³ãã³ãã
ã¿ããªãscreenéãã¾ãã£ã¦tail -fãã¾ããã¾ãããï¼ã§ãããã¼ã
ãããªäººã¯ããã®tailfã³ãã³ãã使ãã°typeæ°å°ãªãããã¤è»½éã«tail -fã§ãã¾ãã*6
# tailf /var/log/messages
ããããã ããã ãã§ããtailã®ã¨ã¤ãªã¢ã¹ã§ã¯ãªãã®ã§ãtailã¿ããã«ãããã髿©è½ã«ã¯ã§ãã¾ãããã§ãtail -fã§ããæµããããªããtailfã¯typeæ°ãå°ãªããªã£ã¦ããã¨ç´ æµã§ãã
ãªãããã¡ãã£ã¨ããçºç«¯ããããã¤ãæåã©ãããããï¼ã¨ã¯æãã¤ã¤ä¾¿å©ç³»ã®ã³ãã³ããç´¹ä»ãã¾ããã
ãã¼ããã¾ãã常èã ã!ã£ã¦äººã¯ããããªãããç¥ããªãã£ã人ã«ã¯ããå½¹ã«ç«ã¦ã¦è¯ãã£ãã§ãï¼
ã£ã¦ãªæãã§ã
*1:ãªãã&ãã¤ãã¦å®è¡ããã¨åªå 度ã¯5ã«ãªãã¾ãããªã®ã§ãå®ã¯ &ã§ããã¯ã°ã©ã¦ã³ãå®è¡(5)ããã®ã¨ãCtrl+Zãã¦bgããã®(0)ã§ã¯ãå¾è ã®æ¹ãåªå 度ã®é«ãç¶æ ã§å®è¡ããã¾ãã
*2:ãªããæ£ç¢ºã«è¨ãã¨+10ããããã¨ããæãã§ããå ã®æ³¨éã§æ¸ããããã«ã&ã§å®è¡ãã¦ããå ´åã¯å ã5ãªã®ã§ãniceããã¨15ã«ãªãã£ã¦ãã¨ã§ãã
*3:ã¡ãªã¿ã«ããã®è¨äºãæ¸ãã¨ãã«ãã¾ãã¾man nohupãè¦ç´ãã¦æ°ä»ããã®ã§ããããã¹ã±ã¸ã¥ã¼ãªã³ã°åªå 度㯠5 å¢ããããã®ã§ãå®è¡ã®å²ãå½ã¦æéã¯ããå°ãããªãããã¨ããè¨è¿°ãmanã«ããã¾ããããããã¯ã¡ãã£ã¨åã§ããnohupèªèº«ã¯åªå 度ã¯ä¸ãã¾ãããé常&ãã¤ãã¦å®è¡ãããã®ãåã°å¸¸èã«ãªã£ã¦ããããã«ã&ã«ããåªå 度ã®å¤æ´ãnohupã®æ©è½ã¨åéããããã®ã§ãããããããããã®ã£ã¦ãã©ãã«å ±åããã°ãããã ãããï¼
*4:ã¡ãªã¿ã«ãnohupã³ãã³ãããªãã¤ã¬ã¯ããããã¨ã§ãåºåå ãnohup.outãããã®ãªãã¤ã¬ã¯ãå ã«å¤æ´ã§ãã¾ãã
*5:æè¿ã®bashãªããã¯ããã©ã«ãã§HUPããªããããã§ããzshã¯ããã©ã«ãã§HUPãã¾ãã
*6:ã¨ã¯ãããæè¿ã®tailã¯é²åãã¦ãããããtailfã®ã¢ããã³ãã¼ã¸ã¯ããããã¾ããªããããã§ããhttp://x68000.q-e-d.net/~68user/unix/pickup?tail