Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Show commandline name instead of shortened command line #2465

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

waterkip
Copy link

@waterkip waterkip commented Apr 7, 2024

/proc/pid/cmdline holds the complete command line for a process unlike /prod/pid/comm

The biggest difference when using cmdline vs comm is the following, when running an app via update-alternatives as done with Debian for example, you get the name x-terminal-emulator vs x-terminal-emul. Essentially, we want the full name of the process and not the shortened one.

This would allow for some more magic with which, readlink and basename that to get the actual name. However, readlink isn't available on all systems and some options aren't available on BSD systems. realpath might be used, but also that may not be available, which leaves us with implementing a bash only solution in case these do not exist. I've tried doing that with bash (via bats) in the past. Bats solved it doing it like this: bats-core/bats-core#312

An alternative way is to ls the file /proc/id/exe and look at where this symlink is pointing to and basename that:

$(basename ls -l /proc/2464281/exe | awk '{print $NF}')

/proc/pid/cmdline holds the complete command line for a process unlike
/prod/pid/comm

The biggest difference when using cmdline vs comm is the following, when
running an app via update-alternatives as done with Debian for example,
you get the name x-terminal-emulator vs x-terminal-emul. Essentially, we
want the full name of the process and not the shortened one.

This would allow for some more magic with which, readlink and basename
that to get the actual name. However, readlink isn't available on all
systems and some options aren't available on BSD systems. realpath might
be used, but also that may not be available, which leaves us with
implementing a bash only solution in case these do not exist. I've tried
doing that with bash (via bats) in the past. Bats solved it doing it
like this: bats-core/bats-core#312

An alternative way is to ls the file /proc/id/exe and look at where
this symlink is pointing to and basename that:

  $(basename ls -l /proc/2464281/exe | awk '{print $NF}')

Signed-off-by: Wesley Schwengle <wesleys@opperschaap.net>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant