windows 의 nginx 를 new lisp 로 관리 합 니 다.
사용 방법
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)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.