golang ---查看进程(Windows)
package main import (
"fmt"
"os"
"os/exec"
"strconv"
"strings"
) func isProcessExist(appName string) (bool, string, int) {
appary := make(map[string]int)
cmd := exec.Command("cmd", "/C", "tasklist")
output, _ := cmd.Output()
//fmt.Printf("fields: %v\n", output)
n := strings.Index(string(output), "System")
if n == -1 {
fmt.Println("no find")
os.Exit(1)
}
data := string(output)[n:]
fields := strings.Fields(data)
for k, v := range fields {
if v == appName {
appary[appName], _ = strconv.Atoi(fields[k+1]) return true, appName, appary[appName]
}
} return false, appName, -1
} func main() { fmt.Println(isProcessExist("chrome.exe")) }
输出:
true chrome.exe 7316
查找进程并删除进程
package main import (
"fmt"
"os"
"os/exec"
"strconv"
"strings"
) func isProcessExist(appName string) (bool, string, int) {
appary := make(map[string]int)
cmd := exec.Command("cmd", "/C", "tasklist")
output, _ := cmd.Output()
//fmt.Printf("fields: %v\n", output)
n := strings.Index(string(output), "System")
if n == -1 {
fmt.Println("no find")
os.Exit(1)
}
data := string(output)[n:]
fields := strings.Fields(data)
for k, v := range fields {
if v == appName {
appary[appName], _ = strconv.Atoi(fields[k+1]) return true, appName, appary[appName]
}
} return false, appName, -1
} func main() {
apName := "notepad++.exe"
fmt.Println(isProcessExist(apName))
c := exec.Command("cmd.exe", "/C", "taskkill", "/IM", apName)
err := c.Start()
if err != nil {
fmt.Println(err)
}
c.Wait() }
package main import (
"fmt"
"log"
"os/exec"
) func main() {
var inputStr string
for {
fmt.Println("---------------------------------------------------")
fmt.Print("1->退出 ")
fmt.Print("2->显示进程 ")
fmt.Print("3->结束进程 ")
fmt.Println("4->显示全部进程")
fmt.Println("---------------------------------------------------")
fmt.Scanln(&inputStr)
if inputStr == "1" {
fmt.Println("已退出...")
break
} else if inputStr == "2" {
fmt.Print("请输入进程名称:")
var processName string
fmt.Scanln(&processName)
if len(processName) == 0 {
fmt.Println("进程名称不可为空!")
} else {
text := "imagename eq " + processName + "*"
listProcess(text)
}
} else if inputStr == "3" {
fmt.Print("请输入要结束的进程名称:")
var processName string
fmt.Scanln(&processName)
if len(processName) == 0 {
fmt.Println("进程名称不可为空!")
} else {
text := "imagename eq " + processName + "*"
killProcess(text)
}
} else if inputStr == "4" {
listAllProcess()
} else {
fmt.Println("请输入正确的参数!")
}
}
fmt.Scanln(&inputStr)
} func listProcess(text string) {
fmt.Println(text)
cmd := exec.Command("tasklist", "/fi", text)
out, err := cmd.CombinedOutput()
if err != nil {
log.Fatal(err)
}
fmt.Println(string(out))
}
func listAllProcess() {
cmd := exec.Command("tasklist")
out, err := cmd.CombinedOutput()
if err != nil {
log.Fatal(err)
}
fmt.Println(string(out))
} func killProcess(text string) {
cmd := exec.Command("taskkill", "/f", "/t", "/fi", text)
out, err := cmd.CombinedOutput()
if err != nil {
log.Fatal(err)
}
fmt.Println(string(out))
}
有关tasklist相关命令请参考:https://www.cnblogs.com/saryli/p/11652789.html
golang ---查看进程(Windows)的更多相关文章
- Windows下查看进程及结束进程命令[转]
Windows下查看进程及结束进程命令 1)查看占用8080端口的进程号 >netstat –aon | findstr “8080” 结果:TCP 0.0.0.0:8080 ...
- Windows查看指定端口是否占用和查看进程
Winodows上查看指定端口号的使用情况和占用进程以及终止所占用端口进程进程用到.下面主要描述如何操作. 1.查看所有端口占用情况 C:\Users\Administrator>netstat ...
- windows查看进程线程的命令pslist
pslist是用命令行查看线程:ProcessExplorer是图形化的查看线程,都在附件中. 1.查看进程 tasklist or pslist -t Name ...
- windows下查看进程及结束进程命令
windows下查看进程及结束进程命令 1)查看占用8080端口的进程号 >netstat –aon | findstr “8080” 结果:TCP 0.0.0.0:8080 ...
- windows查看进程
由端口到进程: 直接查看进程: 查看本机连接端口: 杀进程: (eg:kill httpd) tskill 1596
- Windows netstat 查看端口、进程占用 查看进程路径
1.查看端口.进程占用 运行->进入cmd->netstat -ano 2.查看进程路径 运行->WMIC->process 3.查看进程PID和占用内存情况 运行->进 ...
- supervisor运行golang守护进程
最近在鼓捣golang守护进程的实现,无意发现了supervisor这个有意思的东西.supervisor是一个unix的系统进程管理软件,可以用它来管理apache.nginx等服务,若服务挂了可以 ...
- Linux查看进程线程个数
1.根据进程号进行查询: # pstree -p 进程号 # top -Hp 进程号 2.根据进程名字进行查询: # pstree -p `ps -e | grep server | awk '{pr ...
- Linux 查看进程消耗内存情况总结
在Linux中,有很多命令或工具查看内存使用情况,今天我们来看看如何查看进程消耗.占用的内存情况,Linux的内存管理和相关概念要比Windows复杂一些.在此之前,我们需要了解一下Linux系统下面 ...
随机推荐
- VMware vSphere API开发(一)---vSphere 体系核心概念
1.VMware SDDC VMware 软件定义数据中心(software defined dataCenter,SDDC),包括了从最底层的VMware vSphere.软件定义存储 ...
- SpringCloud学习第三章-springcloud 父项目创建
父项目 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...
- TinyXML2 使用
TinyXML2 TinyXML2 TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译,使用TinyXML进行C++ XML解析,使用简单,容易上手. ...
- XGBoost使用教程(纯xgboost方法)一
一.导入必要的工具包# 导入必要的工具包import xgboost as xgb # 计算分类正确率from sklearn.metrics import accuracy_score二.数据读取X ...
- 浅析 fstab 与移动硬盘挂载方法
本文转自 Steins;Lab,非常详细地介绍了树莓派上 fstab 的配置项. 近期自己的Raspberry Pi出了点问题,总结总结便有了这篇文章. 本文首先记录“移动硬盘挂载”实际发生的问题,然 ...
- jenkins pipeline之stash/unstash
在使用jenkins时,经常会问到文件怎么存储? 正好jenkins有一个stash的功能,下面简单介绍下: 先看看官方是怎么解释的: stash: Stash some files to be us ...
- 装ubuntu的坑
装ubuntu安装盘的U盘,在BOOT中会出现两种载入方式,切记不要用UEFI方式打开,否则安装ubuntu会在最后卡在GRUB的安装上面,然后失败.
- 文件操作b模式
不能制指定编码 二进制写操作的两种方式 closed 文件是否打开 encoding 文件的打开编码 flush() 刷新:将写的内容保存起来 tell() 当前光标位置在哪里 seek()控制光标移 ...
- PHP 多个字段自增或者自减
//自增$res=Db::name('accessories') ->where('id',$req['id']) ->inc('number',$req['number']) -> ...
- Django 1.11 bootstrap样式文件无法加载问题解决
先吐槽一波,多看官方教程,多找对应版本解决方法,多思考!... 在调试模式下面,打开页面无法加载bootstrap.min.css样式,解决思路如下: 查看settings文件INSTALL_APP配 ...