摘要:的安裝使用安裝的配置生成配置文件的配置文件如下啟動啟動的命令如下使用查看相關信息查看的所有命令可以使用幫助命令查看某個命令的具體用法為的使用通過配置文件所知,我們的配置的如下連接的代碼示例如下當我們不知道有哪些方法的時候,可以使用如
supervisord 的安裝
使用 easy_install 安裝 supervisord
sudo easy_install supervisordsupervisord 的配置
生成配置文件
sudo sh -c "/usr/local/bin/echo_supervisord_conf > /etc/supervisord.conf"
supervisord 的配置文件如下
; Sample supervisor config file. ; ; For more information on the config file, please see: ; http://supervisord.org/configuration.html ; ; Note: shell expansion ("~" or "$HOME") is not supported. Environment ; variables can be expanded using this syntax: "%(ENV_HOME)s". [unix_http_server] file=/tmp/supervisor.sock ; (the path to the socket file) ;chmod=0700 ; socket file mode (default 0700) ;chown=nobody:nogroup ; socket file uid:gid owner ;username=user ; (default is no username (open server)) ;password=123 ; (default is no password (open server)) [inet_http_server] ; inet (TCP) server disabled by default port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface) username=ops ; (default is no username (open server)) password=vipshop ; (default is no password (open server)) [supervisord] logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log) logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB) logfile_backups=10 ; (num of main logfile rotation backups;default 10) loglevel=info ; (log level;default info; others: debug,warn,trace) pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid) nodaemon=false ; (start in foreground if true;default false) minfds=1024 ; (min. avail startup file descriptors;default 1024) minprocs=200 ; (min. avail process descriptors;default 200) ;umask=022 ; (process file creation umask;default 022) ;user=chrism ; (default is current user, required if root) ;identifier=supervisor ; (supervisord identifier, default is "supervisor") ;directory=/tmp ; (default is not to cd during start) ;nocleanup=true ; (don"t clean up tempfiles at start;default false) ;childlogdir=/tmp ; ("AUTO" child log dir, default $TEMP) ;environment=KEY="value" ; (key value pairs to add to environment) ;strip_ansi=false ; (strip ansi escape codes in logs; def. false) ; the below section must remain in the config file for RPC ; (supervisorctl/web interface) to work, additional interfaces may be ; added by defining them in separate rpcinterface: sections [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [supervisorctl] serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket ;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket ;username=chris ; should be same as http_username if set ;password=123 ; should be same as http_password if set ;prompt=mysupervisor ; cmd line prompt (default "supervisor") ;history_file=~/.sc_history ; use readline history if available ; The below sample program section shows all possible program subsection values, ; create one or more "real" program: sections to be able to control them under ; supervisor. [program:ds.tools.vip.com] command=sh /apps/dat/web/newcode/debug_ds/run.sh ; the program (relative uses PATH, can take args) process_name=%(program_name)s ; process_name expr (default %(program_name)s) numprocs=1 ; number of processes copies to start (def 1) directory=/apps/dat/web/newcode/debug_ds/ ; directory to cwd to before exec (def no cwd) ;umask=022 ; umask for process (default None) ;priority=999 ; the relative start priority (default 999) autostart=true ; start at supervisord start (default: true) autorestart=true ; whether/when to restart (default: unexpected) ;startsecs=1 ; number of secs prog must stay running (def. 1) ;startretries=3 ; max # of serial start failures (default 3) ;exitcodes=0,2 ; "expected" exit codes for process (default 0,2) stopsignal=QUIT ; signal used to kill process (default TERM) stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10) ;stopasgroup=false ; send stop signal to the UNIX process group (default false) ;killasgroup=false ; SIGKILL the UNIX process group (def false) ;user=chrism ; setuid to this UNIX account to run the program ;redirect_stderr=true ; redirect proc stderr to stdout (default false) ;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO ;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) ;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10) ;stdout_capture_maxbytes=1MB ; number of bytes in "capturemode" (default 0) ;stdout_events_enabled=false ; emit events on stdout writes (default false) ;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO ;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) ;stderr_logfile_backups=10 ; # of stderr logfile backups (default 10) ;stderr_capture_maxbytes=1MB ; number of bytes in "capturemode" (default 0) ;stderr_events_enabled=false ; emit events on stderr writes (default false) ;environment=A="1",B="2" ; process environment additions (def no adds) ;serverurl=AUTO ; override serverurl computation (childutils) ; The below sample eventlistener section shows all possible ; eventlistener subsection values, create one or more "real" ; eventlistener: sections to be able to handle event notifications ; sent by supervisor. ;[eventlistener:theeventlistenername] ;command=/bin/eventlistener ; the program (relative uses PATH, can take args) ;process_name=%(program_name)s ; process_name expr (default %(program_name)s) ;numprocs=1 ; number of processes copies to start (def 1) ;events=EVENT ; event notif. types to subscribe to (req"d) ;buffer_size=10 ; event buffer queue size (default 10) ;directory=/tmp ; directory to cwd to before exec (def no cwd) ;umask=022 ; umask for process (default None) ;priority=-1 ; the relative start priority (default -1) ;autostart=true ; start at supervisord start (default: true) ;autorestart=unexpected ; whether/when to restart (default: unexpected) ;startsecs=1 ; number of secs prog must stay running (def. 1) ;startretries=3 ; max # of serial start failures (default 3) ;exitcodes=0,2 ; "expected" exit codes for process (default 0,2) ;stopsignal=QUIT ; signal used to kill process (default TERM) ;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10) ;stopasgroup=false ; send stop signal to the UNIX process group (default false) ;killasgroup=false ; SIGKILL the UNIX process group (def false) ;user=chrism ; setuid to this UNIX account to run the program ;redirect_stderr=true ; redirect proc stderr to stdout (default false) ;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO ;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) ;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10) ;stdout_events_enabled=false ; emit events on stdout writes (default false) ;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO ;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) ;stderr_logfile_backups ; # of stderr logfile backups (default 10) ;stderr_events_enabled=false ; emit events on stderr writes (default false) ;environment=A="1",B="2" ; process environment additions ;serverurl=AUTO ; override serverurl computation (childutils) ; The below sample group section shows all possible group values, ; create one or more "real" group: sections to create "heterogeneous" ; process groups. ;[group:thegroupname] ;programs=progname1,progname2 ; each refers to "x" in [program:x] definitions ;priority=999 ; the relative start priority (default 999) ; The [include] section can just contain the "files" setting. This ; setting can list multiple files (separated by whitespace or ; newlines). It can also contain wildcards. The filenames are ; interpreted as relative to this file. Included files *cannot* ; include files themselves. ;[include] ;files = relative/directory/*.ini啟動 supervisord
啟動 supervisord 的命令如下:
supervisord
使用 supervisorctl 查看 supervisord 相關信息
$ supervisorctl ds.tools.vip.com RUNNING pid 13794, uptime 0:17:25 supervisor>
查看 supervisor 的所有命令可以使用 help 幫助命令
~]$ supervisorctl ds.tools.vip.com RUNNING pid 13794, uptime 0:17:25 supervisor> help default commands (type help): ===================================== add clear fg open quit remove restart start stop update avail exit maintail pid reload reread shutdown status tail version
查看某個命令的具體用法為 help commandname
supervisor> help start startXML-RPC API 的使用Start a process start :* Start all processes in a group start Start multiple processes or groups start all Start all processes supervisor>
通過配置文件所知,我們的配置的 url 如下:
[inet_http_server] ; inet (TCP) server disabled by default port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface) username=ops ; (default is no username (open server)) password=vipshop ; (default is no password (open server))
連接 supervisord 的代碼示例如下:
import xmlrpclib server = xmlrpclib.Server("http://ops:vipshop@127.0.0.1:9001/RPC2")
當我們不知道 supervisord 有哪些方法的時候,可以使用如下接口查詢出 API 支持的方法
methods = server.system.listMethods() print methods
輸出如下:
>>> print methods ["supervisor.addProcessGroup", "supervisor.clearAllProcessLogs", "supervisor.clearLog", "supervisor.clearProcessLog", "supervisor.clearProcessLogs", "supervisor.getAPIVersion", "supervisor.getAllConfigInfo", "supervisor.getAllProcessInfo", "supervisor.getIdentification", "supervisor.getPID", "supervisor.getProcessInfo", "supervisor.getState", "supervisor.getSupervisorVersion", "supervisor.getVersion", "supervisor.readLog", "supervisor.readMainLog", "supervisor.readProcessLog", "supervisor.readProcessStderrLog", "supervisor.readProcessStdoutLog", "supervisor.reloadConfig", "supervisor.removeProcessGroup", "supervisor.restart", "supervisor.sendProcessStdin", "supervisor.sendRemoteCommEvent", "supervisor.shutdown", "supervisor.startAllProcesses", "supervisor.startProcess", "supervisor.startProcessGroup", "supervisor.stopAllProcesses", "supervisor.stopProcess", "supervisor.stopProcessGroup", "supervisor.tailProcessLog", "supervisor.tailProcessStderrLog", "supervisor.tailProcessStdoutLog", "system.listMethods", "system.methodHelp", "system.methodSignature", "system.multicall"]
注:官方的文檔的 XML-RPC API
查看某個進程的詳細信息
proInfo = server.supervisor.getProcessInfo("ds.tools.vip.com") print proInfo
輸出如下:
{"now": 1405479228, "group": "ds.tools.vip.com", "description": "pid 13794, uptime 0:25:45", "pid": 13794, "stderr_logfile": "/tmp/ds.tools.vip.com-stderr---supervisor-hWn1G5.log", "stop": 0, "statename": "RUNNING", "start": 1405477683, "state": 20, "stdout_logfile": "/tmp/ds.tools.vip.com-stdout---supervisor-JGiMlV.log", "logfile": "/tmp/ds.tools.vip.com-stdout---supervisor-JGiMlV.log", "exitstatus": 0, "spawnerr": "", "name": "ds.tools.vip.com"}
具體詳細的可以參考官方文檔,列舉的很詳細,這只是一個簡單的介紹。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37312.html
摘要:寫在前面在寫之前提一句,英文好的同學可以直接訪問官網,閱讀官方文檔,本文主要針對個人在使用的時候踩過的一些坑的整理,可能會有一些謬誤,歡迎大神們指正,我會回來加以修改,閑言少敘,書歸正傳。 寫在前面 ??在寫之前提一句,英文好的同學可以直接訪問官網,閱讀官方文檔,本文主要針對個人在使用的時候踩過的一些坑的整理, 可能會有一些謬誤,歡迎大神們指正,我會回來加以修改,閑言少敘,書歸正傳。...
摘要:對于與而言,則可以看做是消息傳遞技術的一種衍生或封裝。在生產者通知消費者時,傳遞的往往是消息或事件,而非生產者自身。通過消息路由,我們可以配置路由規則指定消息傳遞的路徑,以及指定具體的消費者消費對應的生產者。采用和來進行遠程對象的通訊。 消息模式 歸根結底,企業應用系統就是對數據的處理,而對于一個擁有多個子系統的企業應用系統而言,它的基礎支撐無疑就是對消息的處理。與對象不同,消息本質上...
摘要:微軟的雖然引入了事件機制,可以在隊列收到消息時觸發事件,通知訂閱者。由微軟作為主要貢獻者的,則對以及做了進一層包裝,并能夠很好地實現這一模式。 在分布式服務框架中,一個最基礎的問題就是遠程服務是怎么通訊的,在Java領域中有很多可實現遠程通訊的技術,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,這些名詞之間到底是些什么關系呢,它們背后到底是基...
摘要:微軟的雖然引入了事件機制,可以在隊列收到消息時觸發事件,通知訂閱者。由微軟作為主要貢獻者的,則對以及做了進一層包裝,并能夠很好地實現這一模式。 在分布式服務框架中,一個最基礎的問題就是遠程服務是怎么通訊的,在Java領域中有很多可實現遠程通訊的技術,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,這些名詞之間到底是些什么關系呢,它們背后到底是基...
閱讀 2955·2021-10-20 13:46
閱讀 2512·2021-08-12 13:22
閱讀 2693·2019-08-30 15:54
閱讀 2336·2019-08-30 15:53
閱讀 540·2019-08-30 13:47
閱讀 3574·2019-08-23 16:56
閱讀 1720·2019-08-23 13:02
閱讀 1790·2019-08-23 12:25