zoukankan      html  css  js  c++  java
  • 用newlisp管理windows下的nginx

    我写了一个nginx.lsp文件,可以通过传递参数来进行Nginx进程管理。

    使用方法

    1. 从nginx站点下载windows版本的程序,加压后,将newlisp.lsp文件复制到该目录。

    2. 确保windows的system32目录下有newlisp.exe程序。

    3. 运行程序, 目前支持5个参数

    newlisp nginx.lsp start|stop|monitor|reload|view

    比如下面用view来观察进程:

    c:\newlisp 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 (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")
    	(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)
    	   (unless h
    		   (begin
    		     (println "nginx is stopped, start it now ...")
    		     (start))
    		   (println "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)
    



  • 相关阅读:
    TensorFlow中使用GPU
    C++内存管理与注意事项
    深入理解Transformer及其源码
    Dropout原理与实现
    指针生成网络(Pointer-Generator-Network)原理与实战
    深度学习中的优化算法总结
    Hadoop伪分布式搭建
    集成学习总结
    模型评估
    基于Spring AOP实现的权限控制
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3095843.html
Copyright © 2011-2022 走看看