[ת] ʹÓÃPythonдLinuxµÄÊØ»¤½ø³Ì(daemon)
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):
"""
do the UNIX double-fork magic, see Stevens' "Advanced
Programming in the UNIX Environment" for details (ISBN 0201563177)
http://www.erlenstar.demon.co.uk/unix/faq_2.html#SEC16
"""
try:
pid = os.fork()
if pid > 0:
# exit first parent
sys.exit(0)
except OSError, e:
sys.stderr.write("fork #1 failed: %d (%s)\n" % (e.errno, e.strerror))
sys.exit(1)
# decouple from parent environment
os.chdir("/")
os.setsid()
os.umask(0)
# do second fork
try:
pid = os.fork()
if pid > 0:
# exit from second parent
sys.exit(0)
except OSError, e:
sys.stderr.write("fork #2 failed: %d (%s)\n" % (e.errno, e.strerror))
sys.exit(1)
# redirect standard file descriptors
sys.stdout.flush()
sys.stderr.flush()
si = file(self.stdin, 'r')
so = file(self.stdout, 'a+')
se = file(self.stderr, 'a+', 0)
os.dup2(si.fileno(), sy
Ïà¹ØÎĵµ£º
Ó¦¸Ã˵uClinuxͬ±ê×¼LinuxµÄ×î´óÇø±ð¾ÍÔÚÓÚÄÚ´æ¹ÜÀí£¬Í¬Ê±Ò²ÓÉÓÚuClinuxµÄÄÚ´æ¹ÜÀíÒý·¢ÁËһЩ±ê×¼LinuxËù²»»á³öÏÖµÄÎÊÌâ¡£±¾ÎĽ«°ÑuClinuxÄÚ´æ¹ÜÀíͬ±ê×¼LinuxµÄÄÇÄÚ´æ¹ÜÀí²¿·Ö½øÐбȽϷÖÎö¡£
±ê×¼LinuxʹÓõÄÐéÄâ´æ´¢Æ÷¼¼Êõ
±ê×¼LinuxʹÓÃÐéÄâ´æ´¢Æ÷¼¼Êõ£¬ÕâÖÖ¼¼ÊõÓÃÓÚÌṩ±È¼ÆËã»úϵͳÖÐʵ¼ÊʹÓõÄÎïÀíÄÚ´æ´óµÃ¶àµÄÄÚ´æ ......
½ñÌìÔÚ°²×°oracle¹ý³ÌÖУ¬²ÎÕÕÍøÉÏÏÂÔØµÄ×ÊÁÏÔÚRHEL5Éϰ²×°oracle£¬Õû¸ö¹ý³Ì±È½Ï˳Àû£¬µ«ÊÇÈ´Óöµ½ÁËÒ»µãÎÊÌ⣬ËäÈ»²»ÊǺÜÑÏÖØ£¬µ«ÊDZϾ¹ÊǸöÎÊÌâÐÄÀﻹÊDz»ºÜÊæ·þ£¬ÔÚ´ËÇë·¹ýµÄ½â¾ö¡£
Ö÷ÒªÎÊÌâÊÇoracleÓû§µÄ»·¾³±äÁ¿£¬ÔÚ°²×°oracle¹ý³ÌÖУ¬ÓÐÒ»²½ÊÇÐèÒªÒÔoracleÓû§µÇ¼£¬È»ºó±à¼ ......
Ðá̽Æ÷(sniffer)ÔÚÍøÂ簲ȫÁìÓòÊÇÒ»°ÑË«Èн££¬Ò»·½Ãæ³£±»ºÚ¿Í×÷ÎªÍøÂç¹¥»÷¹¤¾ß£¬´Ó
¶øÔì³ÉÃÜÂë±»µÁ¡¢Ãô¸ÐÊý¾Ý±»ÇԵȰ²È«Ê¼þ£»ÁíÒ»·½ÃæÓÖÔÚÐÖúÍøÂç¹ÜÀíÔ±¼à²âÍøÂç×´¿ö¡¢Õï¶ÏÍøÂç¹ÊÕÏ¡¢ÅųýÍøÂçÒþ»¼µÈ·½ÃæÓÐ×Ų»¿ÉÌæ´úµÄ×÷Óá£Ðá̽Æ÷ÊÇÆóÒµ
±Ø²»¿ÉÉÙµÄÍøÂç¹ÜÀí¹¤¾ß¡£±¾ÎÄÒÔLinuxƽ̨ÏÂÈý¸ö³£ÓõÄÍøÂçÐá̽Æ÷Tcpdump¡¢Eth ......
Ò»¡¢bash shellµÄ·ÖÀࣺ
µÇ¼shell:Óû§µÇ¼linuxÖ÷»úʱȡµÃµÄshell.
·ÇµÇ¼shell£ºÓû§µÇ¼linuxÖ÷»úºó£¨È¡µÃÁ˵Ǽshell£©ÓÉÓÚÐèÒªÆô¶¯Ö´ÐеÄshell,È磺ÓÃsuÇл»Óû§ºóÈ¡µÃµÄshell;ÔڵǼshellÖÐ
&nb ......
ÐòÑÔ
¡¡¡¡LinuxÊÇUnix²Ù×÷ϵͳµÄÒ»ÖÖ±äÖÖ£¬ÔÚLinuxϱàдÇý¶¯³ÌÐòµÄÔÀíºÍ˼ÏëÍêÈ«ÀàËÆÓÚÆäËûµÄUnixϵͳ£¬µ«Ëüdos»òwindow»·¾³ÏµÄÇý¶¯³ÌÐòÓкܴóµÄÇø±ð¡£ÔÚLinux»·¾³ÏÂÉè¼ÆÇý¶¯³ÌÐò£¬Ë¼Ïë¼ò½à£¬²Ù×÷·½±ã£¬¹¦ÄÜÒ²ºÜÇ¿´ó£¬µ«ÊÇÖ§³Öº¯ÊýÉÙ£¬Ö»ÄÜÒÀÀµkernelÖеĺ¯Êý£¬ÓÐЩ³£ÓõIJÙ×÷Òª×Ô¼ºÀ´±àд£¬¶øÇÒµ÷ÊÔÒ²²»·½±ã¡£±¾ÈËÕâ¼ ......