代码拉取完成,页面将自动刷新
package bzcmd
import (
"fmt"
"gitee.com/breezeHub/bzv2/pkg/code/bzerr"
"gitee.com/breezeHub/bzv2/pkg/data/bzbyte"
"gitee.com/breezeHub/bzv2/pkg/data/bzstr"
"gitee.com/breezeHub/bzv2/pkg/text/bzfile"
"github.com/pkg/errors"
"strconv"
)
func PidOf(pidName string) []int {
var ret []int
dirs, err := bzfile.DirList("/proc")
if err != nil {
return ret
}
count := len(dirs)
for i := 0; i < count; i++ {
pid, err := strconv.Atoi(dirs[i])
if err != nil {
continue
}
cmdlineFile := fmt.Sprintf("/proc/%d/cmdline", pid)
if !bzfile.IsExist(cmdlineFile) {
continue
}
cmdlineBytes, err := bzfile.ReadBytes(cmdlineFile)
if err != nil {
continue
}
cmdlineBytesLen := len(cmdlineBytes)
if cmdlineBytesLen == 0 {
continue
}
noNut := make([]byte, 0, cmdlineBytesLen)
for j := 0; j < cmdlineBytesLen; j++ {
if cmdlineBytes[j] != 0 {
noNut = append(noNut, cmdlineBytes[j])
}
}
if bzstr.Contains(bzbyte.ToString(noNut), pidName) {
ret = append(ret, pid)
}
}
return ret
}
func KillPidOf(pidName string) error {
if bzstr.IsEmpty(pidName) {
return errors.New("pid name is empty")
}
pids := PidOf(pidName)
for _, pid := range pids {
if out, err := KillPid9(pid); err != nil {
return bzerr.WrapF(err, "kill -9 %d fail, output: %s", pid, out)
}
}
return nil
}
func KillPid9(pid int) (string, error) {
out, err := CmdOutput("kill", "-9", strconv.Itoa(pid))
if err != nil {
return out, errors.Wrapf(err, "kill -9 %d fail, output: %s", pid, out)
}
return out, nil
}
func KillPid15(pid int) (string, error) {
out, err := CmdOutput("kill", "-15", strconv.Itoa(pid))
if err != nil {
return out, errors.Wrapf(err, "kill -15 %d fail, output: %s", pid, out)
}
return out, nil
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。