Your company here — click to reach over 10,000 unique daily visitors

procenv - Man Page

display process environment details


procenv [OPTION]


Display details of the process environment in a parseable format.


Options shown with a bracketed asterisk '(*)' are non-display options and must precede any other (display) options.

-a,  --meta

Display meta details.

-A,  --arguments

Display program arguments.

-b,  --libs

Display details of linked libraries. See dl_iterate_phdr(3).

-B,  --libc

Display standard library details. See feature_test_macros(7) (Linux).

-c,  --cgroups

Display cgroup details (Linux only). See proc(5).

-C,  --cpu

Display CPU and scheduler details. See kvm_getprocs(3) (BSD), pthread_getaffinity_np(3), sched_getcpu(3) (Linux).

--crumb-separator=str (*)

Specify string str as alternate delimiter for crumb format output (default=':').

-d,  --compiler

Display compiler details. See cpp(1), cc(1) and feature_test_macros(7) (Linux).

-e,  --environment

Display environment variables. See environ(7).

-E,  --semaphores

Display semaphore details (not queryable on BSD). See semctl(2).

--exec (*)

Treat non-option arguments as program to execute after running procenv. See exec(3).

-f,  --fds

Display file descriptor details. Under FreeBSD, file descriptor capabilities will also be displayed assuming the kernel has Capsicum support. See cap_getmode(2) (BSD), cap_rights_get(2) (BSD), cap_rights_is_set(3) (BSD), fcntl(2), isatty(5).

-F,  --namespaces

Display namespace details (Linux only). See proc(5).

--file=FILE (*)

Send output to file FILE (implies --output=file).

--file-append (*)

If --file is specified, append to it rather than overwriting it.

--format=FORMAT (*)

Specify output format. FORMAT may be one of:

  • crumb ("breadcrumbs").
  • json (JavaScript Object Notation).
  • text (plain ASCII text) [default].
  • xml (Extensible Markup Language).
-g,  --sizeof

Display sizes of data types.

-h,  --help

This help text.

-i,  --misc

Display miscellaneous details. See umask(P), getcwd(3), personality(2) (Linux), proc(5), prctl(2), aa_getcon(2) (Linux), getpidcon(3) (Linux), sysconf(3), kvm_getprocs(3) (BSD), getpriority(2).

--indent (*)

Number of indent characters to use for each indent (default=2).

--indent-char=c (*)

Use character c for indenting (default=' ' (space)).

-j,  --uname

Display uname details. See uname(2).

-k,  --clocks

Display clock details. See clock_getres(2).

-l,  --limits

Display limits. See getrlimit(2).

-L,  --locale

Display locale details. See setlocale(3) and locale(7).

-m,  --mounts

Display mount details. See getmntent(3) and statfs(2) (Linux), and getmntinfo(3) (BSD).

-M,  --message-queues

Display message queue details (not queryable on BSD). See msgctl(2).

-n,  --confstr

Display confstr details. See confstr(5).

-N,  --network

Display network details. See getifaddrs(3), getnameinfo(3), ip(7), netdevice(7), and ioctl(2) (Linux).

-o,  --oom

Display out-of-memory manager details (Linux only). See proc(5).

--output=TYPE (*)

Send output to alternative location. TYPE can be one of:

  • file (send output to a file).
  • stderr (write to standard error).
  • stdout (write to standard output (default)).
  • syslog (write to the system log file).
  • terminal (write to terminal).
-p,  --process

Display process details. See getpid(2), getppid(2), getresuid(2), getresgid(2), getuid(2), geteuid(2), getgid(2), getegid(2), getsid(2), getlogin(3), getpgrp(2), ctermid(3), tcgetpgrp(3), tcgetsid(3), getpwuid(3) and getgroups(2).

-P,  --platform

Display platform details.

-q,  --time

Display time details. See clock_gettime(2), localtime(3) and asctime(3).

-r,  --ranges

Display range of data types. See limits.h(P).

-s,  --signals

Display signal details. See sigaction(2).

-S,  --shared-memory

Display shared memory details (not queryable on BSD). See shmctl(2).

--separator=str (*)

Specify string str as alternate delimiter for text format output (default=': ').

-t,  --tty

Display terminal details. On Linux, will also show if any attributes are locked when running as root. See tcgetattr(3) and tty_ioctl(4) (Linux).

-T,  --threads

Display thread details. See pthread_attr_getstacksize(3), pthread_attr_getstacksize(3) and pthread_attr_getguardsize(3).

-u,  --stat

Display stat details. See stat(2).

-U,  --rusage

Display rusage details. See getrusage(2).

-v,  --version

Display version details.

-w,  --capabilities

Display Linux capability details. For FreeBSD file descriptor capabilities, see --fds. See prctl(2) (Linux), libcap(3) (Linux).

-x,  --pathconf

Display pathconf details. See pathconf(3).

-y,  --sysconf

Display sysconf details. See sysconf(3) and posixoptions(7) (Linux).

-Y,  --memory

Display memory details. See getpagesize(2), numa(3) (Linux) and numa(7) (Linux), sysinfo(3).

-z,  --timezone

Display timezone details. See tzset(3).

Environment Variables

The following environment variables may be used as aliases to their command-line counterparts:


Alternative to --crumb-separator.


Alternative to --exec.


Alternative to --file.


Alternative to --file-append.


Alternative to --format.


Alternative to --indent.


Alternative to --indent-char.


Alternative to --separator.


Alternative to --output.



 # Show limits
 procenv -l

 # Send compiler information to syslog (note the order of the options).
 procenv --output=syslog --compiler

 # Write compiler details direct to the terminal
 procenv --output=terminal --compiler

 # Run a command ('mycmd --arg1 --foo=bar') without creating a new
 # process, but have procenv run first and log its output to a
 # regular file.
 exec procenv --file=/tmp/procenv.log --exec -- mycmd --arg1 --foo=bar

 # The following kernel command-line snippet will cause procenv to
 # run as PID 1 and write output to the first serial tty device. It will then
 # execute the init daemon (specifying some arguments to show how this is possible).
 # Note that since procenv re-executes, the init daemon will (also) be run as PID 1.
 init=/usr/bin/procenv PROCENV_FILE=/dev/ttyS0 PROCENV_EXEC="/sbin/init --foo-bar --baz"

 # Display all data in JSON format using an indent of 4 spaces
 procenv --format=json --indent=4

 # Display all data in XML format using tabs for indents
 procenv --format=xml --indent-char="\t"

 # Display signal details in XML format
 procenv --format=xml --signals

 # Display resource limits in easily-parseable format
 procenv --format=crumb --limits

 # Produce output suitable for importing into a spreadsheet
 procenv --format=crumb --crumb-separator=',' --separator=',' --limits

 # Produce stylised output
 procenv --format=crumb --crumb-separator=' → ' --separator='='



Written by James Hunt <jamesodhunt@gmail.com> and Kees Cook <kees@ubuntu.com>.


GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

See Also

capabilities(7) (Linux), capsicum(4) (BSD), cc(1), clock_gettime(2) (Linux), credentials(7), date(1), env(1), exec(P), getconf(1), groups(1), ifconfig(8), ip(9), ipcs(1), kill(1), ldd(1), locale(1), ls(1), mount(1), proc(5), ps(1), rights(4)(BSD), sh(1), stat(1), stty(1), umask(P), uname(1)