• pkill有的时候并不能杀死进程?


    pkill的用法:http://man.linuxde.net/pkill

    根据进程命令行,杀死进程

    如下intellij.go代码为一个代理服务器,把本地请求转向一个代理

    package main
    
    import (
        "flag"
        "log"
        "net/http"
        "net/http/httputil"
        "net/url"
    )
    
    type handle struct {
        reverseProxy string
    }
    
    func (this *handle) ServeHTTP(w http.ResponseWriter, r *http.Request) {
        remote, err := url.Parse(this.reverseProxy)
        if err != nil {
            log.Fatalln(err)
        }
        proxy := httputil.NewSingleHostReverseProxy(remote)
        r.Host = remote.Host
        proxy.ServeHTTP(w, r)
        log.Println(r.RemoteAddr + " " + r.Method + " " + r.URL.String() + " " + r.Proto + " " + r.UserAgent())
    }
    
    func main() {
        bind := flag.String("l", "0.0.0.0:8888", "listen on ip:port")
        remote := flag.String("r", "http://idea.imsxm.com:80", "reverse proxy addr")
        flag.Parse()
        log.Printf("Listening on %s, forwarding to %s", *bind, *remote)
        h := &handle{reverseProxy: *remote}
        err := http.ListenAndServe(*bind, h)
        if err != nil {
            log.Fatalln("ListenAndServe: ", err)
        }
    }
    intellij.go

    在mac下启动:go run intellij.go

    查看进程:有两个进程96473、96466

       

     开启进程后的情况:

    因此这个代理服务器的真正进程ID是96473,进程名字是/var/folders/....../intellij

    如果使用pkill go只能杀死进程ID 96466,并不能终止代理服务。但是有意思的时,杀死进程ID 96466并不影响代理服务器的工作

    真正能让代理服务器停止工作的命令是:pkill intellij

    猜想:96466是daemon,96473是主进程,杀死守护进程96466并不影响主进程96473的运行,反之,杀死主进程96473,守护进程就没有存在的意义,一同死掉

    强制杀死进程用signal 9: pkill -9 96473

  • 相关阅读:
    GFS.BigTable.MapReduce谷歌论文学习笔记
    Android图表
    JAVA内存管理
    关于Ajax工作原理
    走进AngularJs(二) ng模板中常用指令的使用方式
    走进AngularJs(一)angular基本概念的认识与实战
    使用CSS3 制作一个material-design 风格登录界面
    一分钟搞定AlloyTouch图片轮播
    PHP+JQUEY+AJAX实现分页
    全面的Seo面试题
  • 原文地址:https://www.cnblogs.com/shengulong/p/8444919.html
Copyright © 2020-2023  润新知