ps(1) on Solnix vs Linux and the BSDs

On Solnix, ps is the illumos ps at /usr/bin/ps, a POSIX-style tool with SysV flags. Several flags that Linux and BSD users know mean something else here: -e selects all processes (it shows the environment on the BSDs), -a excludes session leaders, -u takes a user list, and -m shows microstate data (the BSDs use it to sort by memory).

What Solnix runs

A default Solnix system runs the illumos ps at /usr/bin/ps. /usr/ucb/ps is also shipped. The Solnix page says ps also accepts BSD-style options such as aux and refers to ps(1B). The bundle does not include ps(1B), so it does not say how those options behave.

Differences

Compared withTopicWhat differs
FreeBSD, OpenBSD, NetBSD-e meaningSolnix ps -e lists every running process, the same as -A, and makes -a, -u, -p and the other selection options have no effect. On FreeBSD, OpenBSD and NetBSD, -e adds the process environment to the output.
Source: Solnix ps(1) -e, -A; FreeBSD ps(1) -e; OpenBSD ps(1) -e; NetBSD ps(1) -e
FreeBSD, OpenBSD, NetBSD-a meaningSolnix ps -a lists all processes except session leaders and processes with no terminal. On the BSDs, -a means processes of all users that have a controlling terminal, and -x or -A adds the rest. Solnix has no -x.
Source: Solnix ps(1) -a; FreeBSD ps(1) -a, -A, -x; OpenBSD ps(1) -a, -A, -x; NetBSD ps(1) -a, -A
FreeBSD, OpenBSD, NetBSD-u takes a list; BSD -u is a display formatSolnix ps -u uidlist selects processes by effective user ID or login name. On FreeBSD, OpenBSD and NetBSD, -u takes no argument and selects a user-oriented set of columns (user, pid, %cpu, %mem, vsz, rss ...). On OpenBSD and NetBSD, -u also implies -r. Selection by user there is -U.
Source: Solnix ps(1) -u, -U; OpenBSD ps(1) -u, -U; NetBSD ps(1) -u, -U; FreeBSD ps(1) -U
FreeBSD, OpenBSD, NetBSD-m meaningSolnix ps -m adds microstate information, per thread with -L. On OpenBSD ps -m sorts by memory usage, and on NetBSD it is equivalent to -k vsz. The FreeBSD page says -m changes the sort order. Solnix has no sort options or -r.
Source: Solnix ps(1) -m; OpenBSD ps(1) -m; NetBSD ps(1) -m, -k; FreeBSD ps(1) DESCRIPTION (-m, -r, -u, -v change sort order)
FreeBSD, OpenBSD, NetBSD-L meaning and threadsSolnix ps -L prints a line for each lightweight process (lwp). On the BSDs, -L lists the available output keywords. Threads are shown with -H on FreeBSD and OpenBSD, and -s on NetBSD. On Solnix, -H adds the home lgroup column LGRP.
Source: Solnix ps(1) -L, -H; FreeBSD ps(1) -L, -H; OpenBSD ps(1) -L, -H; NetBSD ps(1) -L, -s
FreeBSD, OpenBSD, NetBSD-d, -f and tree outputSolnix -d lists all processes except session leaders and -f gives a full listing. FreeBSD and NetBSD -d, and OpenBSD -f, draw a parent/child tree. FreeBSD -f means print full command lines, which is already the FreeBSD default.
Source: Solnix ps(1) -d, -f; FreeBSD ps(1) -d, -f; OpenBSD ps(1) -f; NetBSD ps(1) -d
OpenBSD, NetBSD-W meaningSolnix ps -W truncates long names, marking truncation with a trailing asterisk. On OpenBSD and NetBSD, -W swap names a file to read swap information from when not using the running kernel. Solnix has no -w; OpenBSD -w selects 132 columns.
Source: Solnix ps(1) -W; OpenBSD ps(1) -W, -w; NetBSD ps(1) -W
FreeBSD, OpenBSD, NetBSDkernel image optionsSolnix accepts -n namelist for compatibility but ignores it. FreeBSD, OpenBSD and NetBSD provide -M core and -N system to read values from a core file or another kernel; Solnix has neither.
Source: Solnix ps(1) -n; FreeBSD ps(1) SYNOPSIS (-M, -N); OpenBSD ps(1) -M, -N; NetBSD ps(1) -M, -N
FreeBSD, OpenBSD, NetBSDdefault columnsSolnix default output is process ID, terminal, cumulative time and command name, with no state column. FreeBSD, OpenBSD and NetBSD show state by default, and OpenBSD and NetBSD default to the command with arguments. The Linux default also has no state column.
Source: Solnix ps(1) DESCRIPTION; FreeBSD ps(1) DESCRIPTION; OpenBSD ps(1) DESCRIPTION; NetBSD ps(1) DESCRIPTION; Linux ps(1) DESCRIPTION
FreeBSDzones and jailsSolnix selects by zone with -z zonelist and adds a ZONE column with -Z, truncated to 8 characters. Use -eo zone,... for wider names. FreeBSD selects by jail with -J jid or name, where -J 0 means host processes.
Source: Solnix ps(1) -z, -Z; FreeBSD ps(1) -J
Linuxenvironment and personalityLinux ps reads PS_FORMAT, PS_PERSONALITY, CMD_ENV, POSIXLY_CORRECT and others. The Solnix page documents only COLUMNS, LANG and the LC_* variables plus NLSPATH, so PS_FORMAT has no documented effect on Solnix.
Source: Linux ps(1) ENVIRONMENT VARIABLES; Solnix ps(1) ENVIRONMENT VARIABLES
OpenBSD-G and list argumentsSolnix -p, -U and -G accept lists, comma separated or quoted. OpenBSD documents -G as unsupported and says -p, -t and -U take only single arguments, not lists.
Source: Solnix ps(1) DESCRIPTION, -G; OpenBSD ps(1) STANDARDS

Standards

  • POSIX: ps is a POSIX.1-2024 utility.
  • Solnix: Interface Stability: Committed.
  • Linux: This ps conforms to Version 2 of the Single Unix Specification, The Open Group Technical Standard Base Specifications Issue 6, IEEE Std 1003.1 2004 Edition, X/Open System Interfaces Extension [UP XSI] and ISO/IEC 9945:2003. The NOTES section says CPU usage does not conform to the standards.
  • OpenBSD: Compliant with IEEE Std 1003.1-2008 (“POSIX.1”), except that -G is unsupported and -ptU support only single arguments. Of the XSI flags -defglnu, -dfgn are not supported and -elu behave differently.

Writing portable scripts

  • Avoid -e, -a, -u, -m, -L, -d, -f and -W in portable scripts, since they differ across Solnix and the BSDs. Select processes with -p pid and choose columns explicitly with -o.
  • Do not rely on the default column set or on -l output. Name the columns you need with -o.

Every difference here is taken from the manual pages linked above: Solnix's published page, Linux (man-pages and the GNU and util-linux manuals), FreeBSD, OpenBSD and NetBSD. Each row names its source. Where a manual is silent, this page is too. Compiled 2026-10-26. Found a mistake? Mail hackers@lists.solnix.io.