获取到运行进程的PID是非常有用的。操作系统应用可以使用PID来查找关于进程本身的信息。当进程失败时获取到的PID就非常有价值,这样就可以使用PID跟踪整个系统中的系统日志,如/var/log/messages
、/var/log/syslog
。
获取当前进程PID
Golang 版本
1.12.1
前言
获取到运行进程的PID是非常有用的。操作系统应用可以使用PID来查找关于进程本身的信息。当进程失败时获取到的PID就非常有价值,这样就可以使用PID跟踪整个系统中的系统日志,如/var/log/messages
、/var/log/syslog
。
实现
package main
import (
"fmt"
"os"
"os/exec"
"strconv"
)
func main() {
pid := os.Getpid()
fmt.Printf("进程 PID: %d \n", pid)
prc := exec.Command("ps", "-p", strconv.Itoa(pid), "-v")
out, err := prc.Output()
if err != nil {
panic(err)
}
fmt.Println(string(out))
}
进程 PID: 28259
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
28259 pts/0 Sl+ 0:00 0 648 102535 1224 0.0 ./main
原理
os
包中的Getpid
方法返回当前进程的PID。上述例子演示了如何通过系统应用ps
命令获取该进程的更多信息。
在应用开始时打印PID可能很有用,在应用崩溃时,获取到的PID就可以调查相应的问题。