systemd-specific exit codes
LSB service exit codes
| Exit Code | Symbolic Name | Description |
|---|---|---|
| 2 | EXIT_INVALIDARGUMENT | Invalid or excess arguments. |
| 3 | EXIT_NOTIMPLEMENTED | Unimplemented feature. |
| 4 | EXIT_NOPERMISSION | The user has insufficient privileges. |
| 5 | EXIT_NOTINSTALLED | The program is not installed. |
| 6 | EXIT_NOTCONFIGURED | The program is not configured. |
| 7 | EXIT_NOTRUNNING | The program is not running. |
systemd-specific exit codes
| Exit Code | Symbolic Name | Description |
|---|---|---|
| 200 | EXIT_CHDIR | Changing to the requested working directory failed. See WorkingDirectory= above. |
| 201 | EXIT_NICE | Failed to set up process scheduling priority (nice level). See Nice= above. |
| 202 | EXIT_FDS | Failed to close unwanted file descriptors, or to adjust passed file descriptors. |
| 203 | EXIT_EXEC | The actual process execution failed (specifically, the execve(2) system call). Most likely this is caused by a missing or non-accessible executable file. |
| 204 | EXIT_MEMORY | Failed to perform an action due to memory shortage. |
| 205 | EXIT_LIMITS | Failed to adjust resource limits. See LimitCPU= and related settings above. |
| 206 | EXIT_OOM_ADJUST | Failed to adjust the OOM setting. See OOMScoreAdjust= above. |
| 207 | EXIT_SIGNAL_MASK | Failed to set process signal mask. |
| 208 | EXIT_STDIN | Failed to set up standard input. See StandardInput= above. |
| 209 | EXIT_STDOUT | Failed to set up standard output. See StandardOutput= above. |
| 210 | EXIT_CHROOT | Failed to change root directory (chroot(2)). See RootDirectory=/RootImage= above. |
| 211 | EXIT_IOPRIO | Failed to set up IO scheduling priority. See IOSchedulingClass=/IOSchedulingPriority= above. |
| 212 | EXIT_TIMERSLACK | Failed to set up timer slack. See TimerSlackNSec= above. |
| 213 | EXIT_SECUREBITS | Failed to set process secure bits. See SecureBits= above. |
| 214 | EXIT_SETSCHEDULER | Failed to set up CPU scheduling. See CPUSchedulingPolicy=/CPUSchedulingPriority= above. |
| 215 | EXIT_CPUAFFINITY | Failed to set up CPU affinity. See CPUAffinity= above. |
| 216 | EXIT_GROUP | Failed to determine or change group credentials. See Group=/SupplementaryGroups= above. |
| 217 | EXIT_USER | Failed to determine or change user credentials, or to set up user namespacing. See User=/PrivateUsers= above. |
| 218 | EXIT_CAPABILITIES | Failed to drop capabilities, or apply ambient capabilities. See CapabilityBoundingSet=/AmbientCapabilities= above. |
| 219 | EXIT_CGROUP | Setting up the service control group failed. |
| 220 | EXIT_SETSID | Failed to create new process session. |
| 221 | EXIT_CONFIRM | Execution has been cancelled by the user. See the systemd.confirm_spawn= kernel command line setting on kernel-command-line(7) for details. |
| 222 | EXIT_STDERR | Failed to set up standard error output. See StandardError= above. |
| 224 | EXIT_PAM | Failed to set up PAM session. See PAMName= above. |
| 225 | EXIT_NETWORK | Failed to set up network namespacing. See PrivateNetwork= above. |
| 226 | EXIT_NAMESPACE | Failed to set up mount, UTS, or IPC namespacing. See ReadOnlyPaths=, ProtectHostname=, PrivateIPC=, and related settings above. |
| 227 | EXIT_NO_NEW_PRIVILEGES | Failed to disable new privileges. See NoNewPrivileges=yes above. |
| 228 | EXIT_SECCOMP | Failed to apply system call filters. See SystemCallFilter= and related settings above. |
| 229 | EXIT_SELINUX_CONTEXT | Determining or changing SELinux context failed. See SELinuxContext= above. |
| 230 | EXIT_PERSONALITY | Failed to set up an execution domain (personality). See Personality= above. |
| 231 | EXIT_APPARMOR_PROFILE | Failed to prepare changing AppArmor profile. See AppArmorProfile= above. |
| 232 | EXIT_ADDRESS_FAMILIES | Failed to restrict address families. See RestrictAddressFamilies= above. |
| 233 | EXIT_RUNTIME_DIRECTORY | Setting up runtime directory failed. See RuntimeDirectory= and related settings above. |
| 235 | EXIT_CHOWN | Failed to adjust socket ownership. Used for socket units only. |
| 236 | EXIT_SMACK_PROCESS_LABEL | Failed to set SMACK label. See SmackProcessLabel= above. |
| 237 | EXIT_KEYRING | Failed to set up kernel keyring. |
| 238 | EXIT_STATE_DIRECTORY | Failed to set up unit's state directory. See StateDirectory= above. |
| 239 | EXIT_CACHE_DIRECTORY | Failed to set up unit's cache directory. See CacheDirectory= above. |
| 240 | EXIT_LOGS_DIRECTORY | Failed to set up unit's logging directory. See LogsDirectory= above. |
| 241 | EXIT_CONFIGURATION_DIRECTORY | Failed to set up unit's configuration directory. See ConfigurationDirectory= above. |
| 242 | EXIT_NUMA_POLICY | Failed to set up unit's NUMA memory policy. See NUMAPolicy= and NUMAMask= above. |
| 243 | EXIT_CREDENTIALS | Failed to set up unit's credentials. See LoadCredential= and SetCredential= above. |
| 245 | EXIT_BPF | Failed to apply BPF restrictions. See RestrictFileSystems= above. |
BSD exit codes
| Exit Code | Symbolic Name | Description |
|---|---|---|
| 64 | EX_USAGE | Command line usage error |
| 65 | EX_DATAERR | Data format error |
| 66 | EX_NOINPUT | Cannot open input |
| 67 | EX_NOUSER | Addressee unknown |
| 68 | EX_NOHOST | Host name unknown |
| 69 | EX_UNAVAILABLE | Service unavailable |
| 70 | EX_SOFTWARE | internal software error |
| 71 | EX_OSERR | System error (e.g., can't fork) |
| 72 | EX_OSFILE | Critical OS file missing |
| 73 | EX_CANTCREAT | Can't create (user) output file |
| 74 | EX_IOERR | Input/output error |
| 75 | EX_TEMPFAIL | Temporary failure; user is invited to retry |
| 76 | EX_PROTOCOL | Remote error in protocol |
| 77 | EX_NOPERM | Permission denied |
| 78 | EX_CONFIG | Configuration error |
查看服务脚本内容 (以sshd服务为示例): systemctl cat sshd
# /usr/lib/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target