A simple unix/linux daemon in Python
http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/
by Sander Marechal
I've
written a simple Python class for creating daemons on unix/linux
systems. It was pieced together for various other examples, mostly
corrections to various Python Cookbook
articles and a couple of examples posted to the Python mailing lists.
It has support for a pidfile to keep track of the process. I hope it's
useful to someone.
Below is the Daemon class. To use it, simply subclass it and implement the run() method.
import sys, os, time, atexit
from signal import SIGTERM
class Daemon:
"""
A generic daemon class.
Usage: subclass the Daemon class and override the run() method
"""
def __init__(self, pidfile, stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'):
self.stdin = stdin
self.stdout = stdout
self.stderr = stderr
self.pidfile = pidfile
def daemonize(self):
"&q ......
A simple unix/linux daemon in Python
http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/
by Sander Marechal
I've
written a simple Python class for creating daemons on unix/linux
systems. It was pieced together for various other examples, mostly
corrections to various Python Cookbook
articles and a couple of examples posted to the Python mailing lists.
It has support for a pidfile to keep track of the process. I hope it's
useful to someone.
Below is the Daemon class. To use it, simply subclass it and implement the run() method.
import sys, os, time, atexit
from signal import SIGTERM
class Daemon:
"""
A generic daemon class.
Usage: subclass the Daemon class and override the run() method
"""
def __init__(self, pidfile, stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'):
self.stdin = stdin
self.stdout = stdout
self.stderr = stderr
self.pidfile = pidfile
def daemonize(self):
"&q ......
Èç¹ûÄã·ûºÏÏÂÃæÁ½¸öÌõ¼þ£¬Äã¿ÉÄܶÔfken¸ÐÐËȤ£º
ÄãÊǸöLinuxµÄÖÒʵÓû§£¬²¢ÇÒ´óÁ¿Ê¹ÓÃÃüÁîÐУ»
³öÓÚijЩÔÒò£¨±ÈÈç³ö¹ú¿¼G£©£¬ÄãÐèÒª´óÁ¿µØ±³µ¥´Ê
fken£¬¼´fuck englishµÄËõд£¬ÊÇÓÃPython±àдµÄС¹¤¾ß¡£
fkenÕâ¸öС¹¤¾ßÄÜÈÃÄãÔÚÆµ·±Ê¹ÓÃLinuxÖն˵Ĺý³ÌÖи¨ÖúÄã±³µ¥´Ê»òÕßÓ¢Óï¾äÐÍ£¬Ç¿»¯ÄãµÄ¼ÇÒä¡£
fken¿ÉÒÔµ¥¶ÀʹÓã¬ËüµÄ×÷ÓÃÊÇËæ»ú·µ»ØÒ»ÌõÓû§Ï£ÍûÇ¿»¯¼ÇÒäµÄÌõÄ¿£¬µ«ÕâÃ»Ê²Ã´ÆæÃîµÄ£¬ÃîµÄÊÇfken¿ÉÒÔºÍLinuxÖÕ¶ËÍêÃÀµØ½áºÏÔÚÒ»Æð——ÿµ±ÄãÔÚÖÕ¶ËÖÐÖ´ÐÐÍêÒ»ÌõÃüÁîÖ®ºó£¬Öն˶¼»á´òÓ¡Ò»Ìõ´ÓfkenµÃµ½Ò»ÌõÐèÒª¼ÇÒäµÄÌõÄ¿£¬ÕâÑùÈç¹ûÄãÊÇÒ»¸ö´óÁ¿Ê¹ÓÃÃüÁîÐеÄLinuxÓû§µÄ»°£¬Äã¾Í»áÔÚʹÓÃterminalµÄ¹ý³ÌÖлعËÄãÏë¼ÇÒäµÄÄÚÈÝ£¬´Ó¶ø´ïµ½Ç¿»¯¼ÇÒäµÄÄ¿µÄ¡£
fkenµÄÔ´´úÂë¼ûfken0.1.5Ô´´úÂë
¡£
fkenµÄÎļþ×é³É£º
fken.py£ºÖ÷ÒªµÄÔ´´úÂëÎļþ£»
fken£º¿Í»§¶Ë³ÌÐò£»
fkend£ºfkenµÄÊØ»¤½ø³Ì(daemon)£¬Ò»¸ö΢Ð͵ÄÊý¾Ý¿â£¬¿ÉÒÔ¶ÁÈ¡Óû§¶¨ÒåµÄÊý¾ÝÎļþÖеÄÌõÄ¿£»
fken_prompt_enhance£ºÒ»¸öbash½Å²½Îļþ£¬ÐÞ¸ÄPS1£¬½«fkenºÍlinuxÖÕ¶ËÕûºÏÔÚÒ»Æð£¬Ê¹µÃlinuxÖն˵ÄÃüÁîÐÐÌáʾ·û¸ü¾ßÐÅÏ¢Á¿£¬Ò²¸üÃÀ¹Û£¨Õâ¸öÓеãÖ÷¹Û...£©
~/.fken.conf£ºÅäÖÃÎļþ£¬Ä¿Ç°ÓÐÓõľÍһР......
ÃüÁî
1.
file
×÷Óãº
file ͨ¹ý̽²âÎļþÄÚÈÝÀ´ÅжÏÎļþÀàÐÍ¡£
ʹÓÃfileÃüÁî¿ÉÒÔÖªµÀij¸öÎļþ¾¿¾¹ÊǶþ½øÖÆ(ELF¸ñʽ)µÄ¿ÉÖ´ÐÐÎļþ, »¹ÊÇShell scrīptÎļþ,»òÕßÊÇÆäËüµÄʲô¸ñʽ¡£fileÄÜʶ±ðµÄÎļþÀàÐÍÓÐĿ¼¡¢Shell½Å±¾¡¢Ó¢ÎÄÎı¾¡¢¶þ½øÖÆ¿ÉÖ´ÐÐÎļþ¡¢CÓïÑÔÔ´Îļþ¡¢Îı¾Îļþ¡¢DOSµÄ¿ÉÖ´ÐÐÎļþ¡£ ÐèҪ˵Ã÷µÄÊÇ,fileÃüÁî²»ÄÜ̽²â°üÀ¨Í¼ÐΡ¢ÒôƵ¡¢ÊÓÆµµÈ¶àýÌåÎļþÀàÐÍ¡£
ȨÏÞ£º
ËùÓÐÓû§
¸ñʽ£º
file [options] ÎļþÃû
options:
-v ÔÚ±ê×¼Êä³öºóÏÔʾ°æ±¾ÐÅÏ¢£¬²¢ÇÒÍ˳ö
-z ̽²âѹËõ¹ýµÄÎļþÀàÐÍ
-L ÔÊÐí·ûºÏÁ¬½Ó
-f name ¶ÔnameÎļþÖеÄÎļþÃûÁÐ±í½øÐÐfile²Ù×÷
¾ÙÀý£º
mxc@mxc-laptop:~$ file -v test.c
file-4.26
magic file from /etc/magic:/usr/share/file/magic
mxc@mxc-laptop:~$ file -z poppler-data-0.1.tar.gz
poppler-data-0.1.tar.gz: POSIX tar archive (GNU) (gzip compressed data, from Unix, last modified: Fri Sep 22 09:34:46 2006)
mxc@mxc-laptop:~$ file -f test.c
/home/mxc/test.c: ASCII text
/home/mxc/wget-log: UTF-8 Unicode text, with CR, LF line terminators
2
mkdir
×÷Óãº
½¨Á¢Ãû³ÆÎªdirnameµÄ ......
1) SIGHUP
±¾ÐźÅÔÚÓû§ÖÕ¶ËÁ¬½Ó(Õý³£»ò·ÇÕý³£)½áÊøÊ±·¢³ö, ͨ³£ÊÇÔÚÖն˵ĿØÖƽø³Ì½áÊøÊ±, ֪ͨͬһsessionÄڵĸ÷¸ö×÷Òµ, ÕâʱËüÃÇÓë¿ØÖÆÖն˲»ÔÙ¹ØÁª¡£
µÇ¼Linuxʱ£¬ÏµÍ³»á·ÖÅ䏸µÇ¼Óû§Ò»¸öÖÕ¶Ë(Session)¡£ÔÚÕâ¸öÖÕ¶ËÔËÐеÄËùÓгÌÐò£¬°üÀ¨Ç°Ì¨½ø³Ì×éºÍºǫ́½ø³Ì×飬һ°ã¶¼ÊôÓÚÕâ
¸ö Session¡£µ±Óû§Í˳öLinuxµÇ¼ʱ£¬Ç°Ì¨½ø³Ì×éºÍºǫ́ÓжÔÖÕ¶ËÊä³öµÄ½ø³Ì½«»áÊÕµ½SIGHUPÐźš£Õâ¸öÐźŵÄĬÈϲÙ×÷ΪÖÕÖ¹½ø³Ì£¬Òò´Ëǰ
̨½ø ³Ì×éºÍºǫ́ÓÐÖÕ¶ËÊä³öµÄ½ø³Ì¾Í»áÖÐÖ¹¡£²»¹ý¿ÉÒÔ²¶»ñÕâ¸öÐźţ¬±ÈÈçwgetÄܲ¶»ñSIGHUPÐźţ¬²¢ºöÂÔËü£¬ÕâÑù¾ÍËãÍ˳öÁËLinuxµÇ
¼£¬wgetÒ² ÄܼÌÐøÏÂÔØ¡£
´ËÍ⣬¶ÔÓÚÓëÖÕ¶ËÍÑÀë¹ØÏµµÄÊØ»¤½ø³Ì£¬Õâ¸öÐźÅÓÃÓÚ֪ͨËüÖØÐ¶ÁÈ¡ÅäÖÃÎļþ¡£
2) SIGINT
³ÌÐòÖÕÖ¹(interrupt)ÐźÅ, ÔÚÓû§¼üÈëINTR×Ö·û(ͨ³£ÊÇCtrl-C)ʱ·¢³ö£¬ÓÃÓÚ֪ͨǰ̨½ø³Ì×éÖÕÖ¹½ø³Ì¡£
3) SIGQUIT
ºÍSIGINTÀàËÆ, µ«ÓÉQUIT×Ö·û(ͨ³£ÊÇCtrl-\)À´¿ØÖÆ. ½ø³ÌÔÚÒòÊÕµ½SIGQUITÍ˳öʱ»á²úÉúcoreÎļþ, ÔÚÕâ¸öÒâÒåÉÏÀàËÆÓÚÒ»¸ö³ÌÐò´íÎóÐźš£
4) SIGILL
Ö´ÐÐÁË·Ç·¨Ö¸Áî. ͨ³£ÊÇÒòΪ¿ÉÖ´ÐÐÎļþ±¾Éí³öÏÖ´íÎó, ......
IncludeµÄheaderÎļþ,Á¬½áÊý¾Ý¿â£¬ÏµÍ³¶¨Ò壬×ܹ²ÓÐÏÂÁÐÀ´Ô´Ö¸¶¨gccÈ¥ÄÇÕÒ¡£
µ±³õÔÚ±àÒëʱָ¶¨µÄ(ÔÚ~gcc/gcc/collect2.c:locatelib()
дÔÚspecsÄÚµÄ
ºóÀ´ÓÃ-D -I -LÖ¸¶¨µÄ
gcc»·¾³±äÁ¿É趨(±àÒëµÄʱºò)
ld.soµÄ»·¾³±äÁ¿(ÕâÊÇrun timeµÄʱºò£©
Ò»¡¢Í·Îļþ
gcc ÔÚ±àÒëʱÈçºÎȥѰÕÒËùÐèÒªµÄÍ·Îļþ £º
¡ùËùÒÔheader fileµÄËÑѰ»á´Ó-I¿ªÊ¼
¡ùÈ»ºóÕÒgccµÄ»·¾³±äÁ¿ C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
¡ùÔÙÕÒÄÚ¶¨Ä¿Â¼
/usr/include
/usr/local/include
/usr/lib/gcc-lib/i386-linux/2.95.2/include
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g -3
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include
¿âÎļþµ«ÊÇÈç¹û×°gccµÄʱºò£¬ÊÇÓиø¶¨µÄprefixµÄ»°£¬ÄÇô¾ÍÊÇ
/usr/include
prefix/include
prefix/xxx-xxx-xxx-gnulibc/include
prefix/lib/gcc-lib/xxxx-xxx-xxx-gnulibc/2.8.1/include
¶þ¡¢¿âÎļþ
cos()µÈº¯Ê½¿âµÄÑ¡ÏîÒª¶à¼Ó -lm
±àÒëµÄʱºò:
¡ùgcc»áÈ¥ÕÒ-L
¡ùÔÙÕÒgccµÄ»·¾³±äÁ¿LIBRARY_PATH
¡ùÔÙÕÒÄÚ¶¨Ä¿Â¼ /lib /usr/lib /usr/local/lib ÕâÊǵ±³õcompile gccʱдÔÚ³ÌÐòÄÚµÄ
Èý¡¢ÔËÐÐʱ¶¯Ì¬¿âµÄËÑË ......
javaÓëdot netÈËÔ±Ôõô²ÅÄÜתÐÐ×öǶÈëʽ¿ª·¢£¿
´ó¼Ò¶¼ÖªµÀ£¬Ç¶ÈëʽÊǵ±Ç°×î»ð¡¢×îÓÐǰ¾°µÄÒ»¸öÐÐÒµ£¬Æäְҵǰ¾°ÓëÖ°Òµ´ýÓöÓëjavaºÍnet¿ª·¢Ïà±È£¬Ó¦¸ÃÊÇÓÅÊÆÒ»´ó½Ø£¬¶ÔÓÚÄÇЩÕý´ÓÊÂjavaÒÔ¼°.net¿ª·¢µÄÈËÔ±À´Ëµ£¬ÈçºÎ²ÅÄÜÓÐЧתµ½Ç¶Èëʽ¿ª·¢µÄÐÐÒµÖÐÀ´ÄØ£¿
ҪתÈ뵽ǶÈëʽ¿ª·¢ÐÐÒµ£¬ÎãÓ¹ÖÃÒɵÄÒ»µãÊDZØÐëÕÆÎÕǶÈëʽ¿ª·¢µÄÏà¹ØÖªÊ¶Óë¼¼ÄÜ£¬»ýÀÛǶÈëʽ¿ª·¢Ïà¹ØµÄ¹¤×÷£¬ÔÚËùÓеÄѧϰ·½Ê½ÖУ¬²Î¼ÓרÃŵÄǶÈëʽ¼¼ÊõÅàѵÎÞÒÉÊÇ×î¿ì½Ý£¬³É±¾×îµÍµÄÒ»¸ö·½Ê½£¬µ«ÏÖÔÚµÄÅàѵ»ú¹¹Á¼Ý¬²»Æë£¬Òò´Ë£¬Ò»¸öǰÌá¾ÍÊÇÒ»¶¨ÒªÑ¡¶ÔÅàѵ»ú¹¹¡£RE.ERǶÈëʽѧԺ¾ÍÊÇÒ»¸öÕýÈ·µÄÑ¡Ôñ (´Ó2006Äê³ÉÁ¢µ½ÏÖÔÚ£¬Ñ§Ô±¿Ú±®ºÜºÃ)¡£
RE.ERǶÈëʽѧԺµÄ¾µä¿Î³Ì---ǶÈëʽLINUXϵͳ¿ª·¢¹¤³Ìʦ(¾ÍÒµ)°à¡£¾ÍÊÇΪÄÇЩÏëתÐе½Ç¶ÈëʽÐÐÒµ¹¤×÷µÄÈËʿרÃÅÉèÖõģ¬ÕâÃſγ̵ĿγÌÄ¿±êÈçÏ£º
(Ò») ×ÜÌåÄ¿±ê
±¾¿Î³Ì°ïÖúѧԱ´ïµ½ÈçÏÂ×ÜÌåÄ¿±ê£º
1¡¢ÔÚÖ»¾ßÓÐÒ»¶¨CÓïÑԵĻù´¡ÉÏ£¬ÕÆÎÕLINUXϵͳÒÔ¼°Ç¶Èëʽϵͳ¿ª·¢ËùÐèµÄ֪ʶºÍ¼¼ÄÜ£¬²¢´ïµ½ÆóÒµ¼¶µÄÒªÇó£»
2¡¢°ïÖúѧԱ»ýÀÛÏîÄ¿¿ª·¢¾Ñ飬ÒÔÂú×ãÆóÒµ¶ÔÃæÊÔÈËԱʵ¼ÊÏîÄ¿¾ÑéµÄÒªÇó£»
3¡¢°ïÖúÑ§Ô±ÕÆÎÕǶÈëʽϵͳÉè¼Æ·½·¨ ......