Путеводитель по Руководству Linux

  User  |  Syst  |  Libr  |  Device  |  Files  |  Other  |  Admin  |  Head  |



   systemd.exec    ( 5 )

конфигурация среды выполнения (Execution environment configuration)

PROCESS EXIT CODES

When invoking a unit process the service manager possibly fails to apply the execution parameters configured with the settings above. In that case the already created service process will exit with a non-zero exit code before the configured command line is executed. (Or in other words, the child process possibly exits with these error codes, after having been created by the fork(2) system call, but before the matching execve(2) system call is called.) Specifically, exit codes defined by the C library, by the LSB specification and by the systemd service manager itself are used.

The following basic service exit codes are defined by the C library.

Table 6. Basic C library exit codes ┌──────────┬───────────────┬────────────────────┐ │Exit Code Symbolic Name Description │ ├──────────┼───────────────┼────────────────────┤ │0 │ EXIT_SUCCESS │ Generic success │ │ │ │ code. │ ├──────────┼───────────────┼────────────────────┤ │1 │ EXIT_FAILURE │ Generic failure or │ │ │ │ unspecified error. │ └──────────┴───────────────┴────────────────────┘

The following service exit codes are defined by the LSB specification[10].

Table 7. 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. │ └──────────┴──────────────────────┴────────────────────┘

The LSB specification suggests that error codes 200 and above are reserved for implementations. Some of them are used by the service manager to indicate problems during process invocation:

Table 8. 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. │ └──────────┴──────────────────────────────┴─────────────────────────────────────────────┘

Finally, the BSD operating systems define a set of exit codes, typically defined on Linux systems too:

Table 9. 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 │ └──────────┴────────────────┴────────────────────┘