mitchellh / go-ps

Find, list, and inspect processes from Go (golang).
MIT License
1.46k stars 250 forks source link

Executable names corrupted on Linux #52

Open mcandre opened 3 years ago

mcandre commented 3 years ago

Executable names are wonky. For example, /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal is truncated to unattended-upgr.

unattended-upgr is not the real executable name. It's not even a filename. It's an incomplete part of the directory name supplied as a command line argument.

1-u-1 commented 4 months ago

Hello! This is an old one but this is because go-ps reads from /proc/pid/stat, which returns the same minor information as /proc/pid/comm. I opened an issue to have it read os.Readlink of the /proc/pid/exe to get the real path. In the mean time, you can write your own basic function to take the pid, build the /proc/pid/exe path and use os.Readlink to read it out. Hope this helps!