码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2018-02-12 18:47:48      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:span   amp   res   folder   pre   close   nil   .com   查看进程   

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

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

标签:span   amp   res   folder   pre   close   nil   .com   查看进程   

原文地址:https://www.cnblogs.com/shengulong/p/8444919.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!