kill(1) on Solnix vs Linux and the BSDs

Solnix /usr/bin/kill is the illumos kill. It takes only the POSIX forms: -s signal_name, -signal_name, -signal_number and -l. The Linux util-linux kill adds -p, -a, -q, -L, -d, --timeout and lookup by process name, none of which the Solnix page documents.

What Solnix runs

A default Solnix system runs the illumos kill at /usr/bin/kill. /usr/xpg4/bin/kill is also shipped; the bundle does not describe how it differs. The page says shells have built-in versions of kill (ATTRIBUTES lists csh, ksh, sh and ksh93), so in a script plain kill may not run /usr/bin/kill.

Differences

Compared withTopicWhat differs
LinuxLinux-only optionsSolnix kill documents only -s, -l, -signal_name and -signal_number. Linux kill also has -L/--table, -a, -p, -q/--queue, -r, -d, --verbose and --timeout, which do not exist on Solnix.
Source: Solnix kill(1) SYNOPSIS, OPTIONS; Linux kill(1) SYNOPSIS, OPTIONS
Linuxprocess names as operandsLinux kill accepts command names, and pid:pidfd_inode, as operands. The page calls name lookup a local extension. Solnix kill takes only a decimal pid or a job control job ID. Its page says to find process numbers with ps(1).
Source: Linux kill(1) SYNOPSIS, DESCRIPTION; Solnix kill(1) OPERANDS
Linux-s argumentOn Solnix, -s takes a symbolic signal name without the SIG prefix, in any case, or the name 0. Linux -s takes a name or a number. kill -s 9 is documented on Linux only. On Solnix use kill -9.
Source: Solnix kill(1) -s; Linux kill(1) -s
Linuxexit statusSolnix exits 0 only if every pid operand matched a process and at least one matching process received the signal. Otherwise it exits >0. Linux kill exits 64 for partial success when several processes are given.
Source: Solnix kill(1) EXIT STATUS; Linux kill(1) EXIT STATUS
FreeBSD, OpenBSD, NetBSDpid -1The BSD pages document pid -1: the superuser signals all processes, other users signal all their own processes. The Solnix page refers to kill(2) for negative pids and only spells out 0 (the process group).
Source: FreeBSD kill(1) special PIDs; OpenBSD kill(1) special PIDs; NetBSD kill(1) special pids; Solnix kill(1) OPERANDS
FreeBSD, OpenBSD, NetBSDnegative pid and --Solnix says a negative first pid should be preceded by --. NetBSD says its own kill does not require this, but it is required when no signal is given. FreeBSD and OpenBSD do not mention --.
Source: Solnix kill(1) OPERANDS; NetBSD kill(1) DESCRIPTION; FreeBSD kill(1); OpenBSD kill(1)
Linux, NetBSD-l output formatNetBSD /bin/kill -l uses the POSIX format only when POSIXLY_CORRECT is set. Linux kill -l prints one signal per line when output is not a terminal. Solnix kill -l writes all supported signal names, and the page gives no format switch.
Source: NetBSD kill(1) -l; Linux kill(1) -l; Solnix kill(1) -l

Standards

  • POSIX: kill is a POSIX.1-2024 utility.
  • Solnix: /usr/bin/kill, csh, ksh, sh: CSI Enabled; Interface Stability Committed; Standard: see standards(7).
  • FreeBSD: The kill utility is expected to be IEEE Std 1003.2 (“POSIX.2”) compatible.
  • OpenBSD: The kill utility is compliant with the IEEE Std 1003.1-2008 (“POSIX.1”) specification. The -signal_name and -signal_number syntax is marked by IEEE Std 1003.1-2008 (“POSIX.1”) as being an X/Open System Interfaces option.
  • NetBSD: The kill utility is expected to be IEEE Std 1003.2 (“POSIX.2”) compatible.

Writing portable scripts

  • Use kill -s NAME pid with the signal name and no SIG prefix (for example kill -s HUP 1234). Every page here documents that form.
  • Put -- before a negative pid (a process group), as Solnix and NetBSD advise.
  • Do not rely on Linux-only options (-p, --timeout, process names as operands). Look up the pid with ps(1) first.

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.