windows 의 nginx 를 new lisp 로 관리 합 니 다.

3907 단어
nginx. lsp 파일 을 썼 습 니 다. 전달 파 라 메 터 를 통 해 Nginx 프로 세 스 관 리 를 할 수 있 습 니 다.
사용 방법
1. nginx 사이트 에서 windows 버 전의 프로그램 을 다운로드 하고 압력 을 가 한 후 new lisp. lsp 파일 을 이 디 렉 터 리 로 복사 합 니 다.
2. windows 의 system 32 디 렉 터 리 에 new lisp. exe 프로그램 이 있 는 지 확인 합 니 다.
3. 프로그램 실행, 현재 5 개의 인자 지원
newlisp nginx.lsp start|stop|monitor|reload|view

예 를 들 어 프로 세 스 를 view 로 관찰 합 니 다.
c:
ewlisp nginx.lsp view Image Name PID Session Name Session# Mem Usage ========================= ======== ================ =========== ============ nginx.exe 8048 Console 1 6,716 K nginx.exe 4512 Console 1 6,988 K nginx.exe 1684 Console 1 6,836 K nginx.exe 4652 Console 1 7,132 K nginx.exe 6512 Console 1 6,816 K nginx.exe 6868 Console 1 7,152 K

stop 매개 변수 로 모든 nginx 프로 세 스 를 닫 을 수 있 습 니 다.
구체 적 인 실현 코드 는 다음 과 같다.
;; parse argument as one of the following
;; start|stop|reload|monitor|view

(define (log-ok msg)
  (append-file "nginx_process_ok.log" (append "
" (string (now 480)) " ")) (append-file "nginx_process_ok.log" (append ": " msg)) ) (define (log-err msg) (append-file "nginx_process_err.log" (append "
" (string (now 480)) " ")) (append-file "nginx_process_err.log" (append ": " msg)) ) (define (start) (process "start.bat") ) (define (kill-process e) (if (regex "^nginx.exe" e) (begin (set 'pid ((regex "^nginx.exe[ ]+([0123456789]+)" e) 3)) (exec (append "Taskkill /PID " pid " /F"))))) (define (handle-element e) (if (regex "^nginx.exe" e) (set 'h true))) (define (check-nginx-process) (set 'cmd "tasklist /fi \"imagename eq nginx.exe\"") (set 'result (exec cmd)) (set 'h nil) (dolist (str result) (handle-element str)) ) (define (kill-nginx-processes) (set 'cmd "tasklist /fi \"imagename eq nginx.exe\"") (set 'result (exec cmd)) (set 'h nil) (dolist (str result) (kill-process str)) ) (define (view) (set 'cmd "tasklist /fi \"imagename eq nginx.exe\"") (set 'result (exec cmd)) (dolist (str result) (println str)) ) (define (stop) (set 'cmd "tasklist /fi \"imagename eq nginx.exe\"") (set 'result (exec cmd)) (check-nginx-process) (if h (begin (println "stoping nginx now ...") (exec "nginx -s stop") (sleep 1000) (check-nginx-process) (if h (begin (println "kill nginx processes ...") (kill-nginx-processes) ))) (println "do nothing because nginx is stopped")) ) (define (reload) (exec "nginx -s reload") ) (define (monitor) (while true (begin (sleep 10000) (println "check nginx process at 10 seconds") (check-nginx-process) ( h (begin (log-err "nginx is stopped, start it now ...") (start)) (log-ok "nginx process is alive") ) ) ) ) (define (main-fun) (set 'action ((main-args) 2)) (unless action (begin (println "please pass one of the arguments: start|stop|reload|monitor|view") (exit))) (if (= "start" action) (start)) (if (= "stop" action) (stop)) (if (= "reload" action) (reload)) (if (= "monitor" action) (monitor)) (if (= "view" action) (view)) ) (main-fun) (exit)

좋은 웹페이지 즐겨찾기