PARGS(1)
π NAME π
pargs β bestie, this is the tool that prints a process's arguments, its environment variables, or its auxiliary vector. That's it. That's the whole job. And it ate. π
β¨ SYNOPSIS β¨
pargs [-l] [-a|--args] [-e|--env] [-x|--auxv] [pid | core]...
π¦ DESCRIPTION π¦
okay so picture this: you've got a target process, or a process core file, and you want the tea. pargs peeks inside and prints out the arguments, the environment variables and their values, or the process auxiliary vector. π
For live processes, the arguments and environment variables are read straight out of process memory, which means you're seeing the current state β including anything that got modified at runtime. Yes, like when someone calls setenv(3), or just straight-up overwrites argv. π
And this is the part that's giving different energy from /proc/pid/cmdline and /proc/pid/environ, because those two are just static snapshots frozen at process start. No updates. No growth. Just vibes from the past. Meanwhile pargs is live, current, in the group chat right now. π²
Also! Two little twins you should know about:
- The pauxv command is literally equivalent to running
pargs(1)with the-xoption. - The penv command is literally equivalent to running
pargs(1)with the-eoption.
Periodt. π
π OPTIONS π
-lβ prints the arguments as one single command line. The way it's printed is suitable for interpretation by/bin/sh, so it's copy-paste-into-your-shell friendly. iconic behaviour honestly. π-a,--argsβ print the process arguments. This is the default btw, in case you were wondering. For live processes, these are read from process memory and reflect the current values. π«-e,--envβ print the process environment variables and their values. For live processes, the environment is read from process memory via theenvironsymbol, and it reflects runtime changes made withsetenv(3)orputenv(3). so if somebody changed it, you'll see it. π-x,--auxvβ print the process auxiliary vector exactly as contained in/proc/pid/auxv. π§
πΈ OPERANDS πΈ
pidβ a Process ID list. You can also pass a/proc/pidpath instead, which means shell expansions like/proc/*will target all processes on the system. Go off, glob. πcoreβ a process core file, as produced bysystemd-coredump(8), or an Ubuntu/Debian apport.crashfile. For systemd core files, the file does not need to exist on disk β if it's been removed, the corresponding systemd journal entry gets used instead. Check the NOTES below for the whole story. π
π EXIT STATUS π
0on success π- non-zero if an error occurs β like no such process, permission denied, or an invalid option. sad but true. π
π FILES π
/proc/pid/*β process information and control files. the source of truth, the archives, the lore. π
π§ NOTES π§
So here's the situation, bestie. When a core file has been removed by systemd-tmpfiles(8), or by storage limits configured in coredump.conf(5), the systemd-coredump(8) journal entry for the crash may still be available. In that case you can pass the path to the deleted core file as the core operand β even though the file no longer exists on disk β and the process metadata will be retrieved from the journal entry instead. β¨
Want the path of a missing core file? Use coredumpctl(1), like this:
coredumpctl list <name> -F COREDUMP_FILENAME
Ubuntu/Debian apport .crash files are supported too π«Ά. These files use Debian control syntax with base64-encoded gzip core dumps. Text fields β such as ProcCmdline, ProcEnviron, and ExecutablePath β are mapped to COREDUMP_* fields, and the core dump is extracted on first access. lowkey magic. πͺ
π SEE ALSO π
pauxv(1), penv(1), coredumpctl(1), proc(5)
okay that's the whole page, you're so welcome π this was pargs 0.2.23, from September 2026 β go read a process's whole diary, bestie, it's your moment. πβ¨
π¦ where this page comes from
- fedora 44: ptools 0.2.23-1.fc44 Β· Apache-2.0 AND MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms