使用python编写简单的守护进程
server程序与桌面程序最基本的差别在于:server程序通常需要更加稳定地运行,最好是永远都不会中断,确保服务的持续性。
要做到这点,首先当然应当提高程序本身的稳定性,程序本身必须足够稳定才有意义。
然而,天有不测风云,无论多简单的软件,总是会有bug,会有可能导致程序crash。这种情况下,仅仅依赖提高程序本身的稳定性是不够的。我们还需要另外的手段来保证服务的持续性。
最简单的办法就是用守护进程监视当前程序,一旦发生异常或者crash,就重新启动程序。使用python就可以简单地做到这点。
例如,我们通过python脚本(start_mss_app.py)来监视msscli服务程序的运行:
#start_mss_app.py -- run and monitor msscli application import os import sys sys.path.append("./") def monitor(appName): pid = os.fork() if 0 == pid: # child process os.system(appName) sys.exit(0) else: # parent process os.wait() if __name__ == '__main__' : while 1: monitor('./msscli')
运行时很简单,使用命令 python start_mss_app.py & 即可。
当msscli程序发生异常导致crash或者退出时,python脚本会自动重起msscli程序。
在进行系统维护或者升级时,我们也有必要强制关掉msscli服务程序,此时由于上述守护进程的存在,我们先必须kill掉守护进程,然后才能kill掉msscli服务程序:
sudo killall python
sudo killall msscli