Skip to content

Latest commit

 

History

History
2526 lines (2506 loc) · 124 KB

feature-comparison.md

File metadata and controls

2526 lines (2506 loc) · 124 KB

Feature comparison

This document is auto-generated. It pulls all features from the xml-doc from systemd and checks whether the features is supported in rustysd. (shoutout to wmanley who wrote the initial script!). Note that this shows a lot of crosses. This can have two reasons:

  1. The most likely case is that the feature is not (and will likely never) be supported because it is out of scope of this project (see Readme on how that is determined)
  2. The feature is not yet supported but should be. If thats the case please file an issue and I will push it to the top of the priority list.

This document is meant as a simple way of checking whether all features you need from systemd are supported in rustysd.

sd_notify

Term Supported Search Notes
READY=1 ✔️ Search Waiting for ready notification for service-type notify is supported
RELOADING=1 Search
STOPPING=1 Search
STATUS=… ✔️ Search Sending free-text status updates to be displayed for the user is supported
ERRNO=… Search
BUSERROR=… Search
MAINPID=… Search
WATCHDOG=1 Search
WATCHDOG=trigger Search
WATCHDOG_USEC=… Search
EXTEND_TIMEOUT_USEC=… Search
FDSTORE=1 Search
FDSTOREREMOVE=1 Search
FDNAME=… Search
$NOTIFY_SOCKET ✔️ Search Listening to a notification socket is supported (see section fd_notifiy for details on which messages are understood). NotifyAccess= is not fully supported though.

systemd.exec

Term Supported Search Notes
WorkingDirectory= Search
RootDirectory= Search
RootImage= Search
MountAPIVFS= Search
BindPaths= Search
BindReadOnlyPaths= Search
User= Search The user id can be set for starting services. Currently only done for the main executable
Group= Search The group id can be set for starting services. Currently only done for the main executable
DynamicUser= Search
SupplementaryGroups= Search The supplementary group ids can be set for starting services. Currently only done for the main executable
PAMName= Search
CapabilityBoundingSet= Search
AmbientCapabilities= Search
NoNewPrivileges= Search
SecureBits= Search
SELinuxContext= Search
AppArmorProfile= Search
SmackProcessLabel= Search
LimitCPU= Search
LimitFSIZE= Search
LimitDATA= Search
LimitSTACK= Search
LimitCORE= Search
LimitRSS= Search
LimitNOFILE= Search
LimitAS= Search
LimitNPROC= Search
LimitMEMLOCK= Search
LimitLOCKS= Search
LimitSIGPENDING= Search
LimitMSGQUEUE= Search
LimitNICE= Search
LimitRTPRIO= Search
LimitRTTIME= Search
UMask= Search
KeyringMode= Search
OOMScoreAdjust= Search
TimerSlackNSec= Search
Personality= Search
IgnoreSIGPIPE= Search
Nice= Search
CPUSchedulingPolicy= Search
CPUSchedulingPriority= Search
CPUSchedulingResetOnFork= Search
CPUAffinity= Search
NUMAPolicy= Search
NUMAMask= Search
IOSchedulingClass= Search
IOSchedulingPriority= Search
ProtectSystem= Search
ProtectHome= Search
RuntimeDirectory= Search
StateDirectory= Search
CacheDirectory= Search
LogsDirectory= Search
ConfigurationDirectory= Search
RuntimeDirectoryMode= Search
StateDirectoryMode= Search
CacheDirectoryMode= Search
LogsDirectoryMode= Search
ConfigurationDirectoryMode= Search
RuntimeDirectoryPreserve= Search
TimeoutCleanSec= Search
ReadWritePaths= Search
ReadOnlyPaths= Search
InaccessiblePaths= Search
TemporaryFileSystem= Search
PrivateTmp= Search
PrivateDevices= Search
PrivateNetwork= Search
NetworkNamespacePath= Search
PrivateUsers= Search
ProtectHostname= Search
ProtectKernelTunables= Search
ProtectKernelModules= Search
ProtectKernelLogs= Search
ProtectControlGroups= Search
RestrictAddressFamilies= Search
RestrictNamespaces= Search
LockPersonality= Search
MemoryDenyWriteExecute= Search
RestrictRealtime= Search
RestrictSUIDSGID= Search
RemoveIPC= Search
PrivateMounts= Search
MountFlags= Search
SystemCallFilter= Search
SystemCallErrorNumber= Search
SystemCallArchitectures= Search
Environment= Search
EnvironmentFile= Search
PassEnvironment= Search
UnsetEnvironment= Search
StandardInput= Search
StandardOutput= Search Standardoutput can be either handled by rustysds normal logging or be redirected to a file, either write or append. Other modes are not yet supported.
StandardError= Search Standarderror can be either handled by rustysds normal logging or be redirected to a file, either write or append. Other modes are not yet supported.
StandardInputText= Search
StandardInputData= Search
LogLevelMax= Search
LogExtraFields= Search
LogRateLimitIntervalSec= Search
LogRateLimitBurst= Search
SyslogIdentifier= Search
SyslogFacility= Search
SyslogLevel= Search
SyslogLevelPrefix= Search
TTYPath= Search
TTYReset= Search
TTYVHangup= Search
TTYVTDisallocate= Search
UtmpIdentifier= Search
UtmpMode= Search
$PATH Search
$LANG Search
$USER Search
$LOGNAME Search
$HOME Search
$SHELL Search
$INVOCATION_ID Search
$XDG_RUNTIME_DIR Search
$RUNTIME_DIRECTORY Search
$STATE_DIRECTORY Search
$CACHE_DIRECTORY Search
$LOGS_DIRECTORY Search
$CONFIGURATION_DIRECTORY Search
$MAINPID Search
$MANAGERPID Search
$LISTEN_FDS ✔️ Search Providing number of filedescriptors is supported
$LISTEN_PID ✔️ Search Provifing the listen_pid to the child is supported
$LISTEN_FDNAMES ✔️ Search Providing names for filedescriptors is supported
$NOTIFY_SOCKET ✔️ Search Listening to a notification socket is supported (see section fd_notifiy for details on which messages are understood). NotifyAccess= is not fully supported though.
$WATCHDOG_PID Search
$WATCHDOG_USEC Search
$TERM Search
$JOURNAL_STREAM Search
$SERVICE_RESULT Search
$EXIT_CODE Search
$EXIT_STATUS Search
$PIDFILE Search

systemd.kill

Term Supported Search Notes
KillMode= Search
KillSignal= Search
RestartKillSignal= Search
SendSIGHUP= Search
SendSIGKILL= Search
FinalKillSignal= Search
WatchdogSignal= Search

systemd.path

Term Supported Search Notes
PathExists= Search
PathExistsGlob= Search
PathChanged= Search
PathModified= Search
DirectoryNotEmpty= Search
Unit= Search
MakeDirectory= Search
DirectoryMode= Search

systemd.resource-control

Term Supported Search Notes
CPU Search
Memory Search
IO Search
CPUAccounting= Search
CPUWeight= Search
StartupCPUWeight= Search
CPUQuota= Search
CPUQuotaPeriodSec= Search
AllowedCPUs= Search
AllowedMemoryNodes= Search
MemoryAccounting= Search
MemoryMin= Search
MemoryLow= Search
MemoryHigh= Search
MemoryMax= Search
MemorySwapMax= Search
TasksAccounting= Search
TasksMax= Search
IOAccounting= Search
IOWeight= Search
StartupIOWeight= Search
IODeviceWeight= Search
IOReadBandwidthMax= Search
IOWriteBandwidthMax= Search
IOReadIOPSMax= Search
IOWriteIOPSMax= Search
IODeviceLatencyTargetSec= Search
IPAccounting= Search
IPAddressAllow= Search
IPAddressDeny= Search
IPIngressFilterPath= Search
IPEgressFilterPath= Search
DeviceAllow= Search
DevicePolicy=auto|closed|strict Search
Slice= Search
Delegate= Search
DisableControllers= Search
CPUShares= Search
StartupCPUShares= Search
MemoryLimit= Search
BlockIOAccounting= Search
BlockIOWeight= Search
StartupBlockIOWeight= Search
BlockIODeviceWeight= Search
BlockIOReadBandwidth= Search
BlockIOWriteBandwidth= Search

systemd.service

Term Supported Search Notes
Type= Search Types are partly supported. Simple, dbus, notify, oneshot are supported. Forking, idle are not.
RemainAfterExit= Search
GuessMainPID= Search
PIDFile= Search
BusName= ✔️ Search Setting a bus name to wait for services of type dbus is supported.
ExecStart= ✔️ Search Exec'ing the command given is supported. The return value is checked for oneshot services. Ignoring the return value with the '-' prefix is supported, other prefixes are not.
ExecStartPre= Search Allowing commands to be run is supported. The return value is checked. Ignoring the return value with the '-' prefix is supported, other prefixes are not.
ExecStartPost= Search Allowing commands to be run is supported. The return value is checked. Ignoring the return value with the '-' prefix is supported, other prefixes are not.
ExecCondition= Search
ExecReload= Search
ExecStop= Search Allowing commands to be run is supported. The return value is checked. Ignoring the return value with the '-' prefix is supported, other prefixes are not.
ExecStopPost= Search Allowing commands to be run is supported. The return value is checked. Ignoring the return value with the '-' prefix is supported, other prefixes are not.
RestartSec= Search
TimeoutStartSec= ✔️ Search The time a services needs to start can be limited
TimeoutStopSec= ✔️ Search The time a services needs to stop can be limited
TimeoutAbortSec= Search
TimeoutSec= ✔️ Search The time a services needs to start/stop can be limited
RuntimeMaxSec= Search
WatchdogSec= Search
Restart= Search Restart is partially supported. The settings 'always' and 'no' are supported
SuccessExitStatus= Search
RestartPreventExitStatus= Search
RestartForceExitStatus= Search
RootDirectoryStartOnly= Search
NonBlocking= Search
NotifyAccess= Search Not fully supported. All settings are accepted but are not being enforced right now. Acts as if 'all' was set.
Sockets= Search Adding more socket files to servcies is supported. But only so that one socket belongs to only one service (sytsemd allows for sockets to belong to multiple services).
FileDescriptorStoreMax= Search
USBFunctionDescriptors= Search
USBFunctionStrings= Search
OOMPolicy= Search

systemd.socket

Term Supported Search Notes
ListenStream= ✔️ Search Opening streaming sockets is supported. The whole IPv4 and IPv6 stuff needs some attention though
ListenDatagram= ✔️ Search Opening datagram sockets is supported. The whole IPv4 and IPv6 stuff needs some attention though
ListenSequentialPacket= ✔️ Search Opening sequential packet sockets is supported.
ListenFIFO= ✔️ Search Opening FIFOs is supported. Filemode setting is not supported as of yet though.
ListenSpecial= Search
ListenNetlink= Search
ListenMessageQueue= Search
ListenUSBFunction= Search
SocketProtocol= Search
BindIPv6Only= Search
Backlog= Search
BindToDevice= Search
SocketUser= Search
SocketGroup= Search
SocketMode= Search
DirectoryMode= Search
Accept= Search Only the setting 'no' is supported. Inted-style activation is not yet supported.
Writable= Search
MaxConnections= Search
MaxConnectionsPerSource= Search
KeepAlive= Search
KeepAliveTimeSec= Search
KeepAliveIntervalSec= Search
KeepAliveProbes= Search
NoDelay= Search
Priority= Search
DeferAcceptSec= Search
ReceiveBuffer= Search
SendBuffer= Search
IPTOS= Search
IPTTL= Search
Mark= Search
ReusePort= Search
SmackLabel= Search
SmackLabelIPIn= Search
SmackLabelIPOut= Search
SELinuxContextFromNet= Search
PipeSize= Search
MessageQueueMaxMessages= Search
FreeBind= Search
Transparent= Search
Broadcast= Search
PassCredentials= Search
PassSecurity= Search
TCPCongestion= Search
ExecStartPre= Search Allowing commands to be run is supported. The return value is checked. Ignoring the return value with the '-' prefix is supported, other prefixes are not.
ExecStartPost= Search Allowing commands to be run is supported. The return value is checked. Ignoring the return value with the '-' prefix is supported, other prefixes are not.
ExecStopPre= Search
ExecStopPost= Search Allowing commands to be run is supported. The return value is checked. Ignoring the return value with the '-' prefix is supported, other prefixes are not.
TimeoutSec= ✔️ Search The time a services needs to start/stop can be limited
Service= ✔️ Search Adding a socket explicitly to a service is supported.
RemoveOnStop= Search
Symlinks= Search
FileDescriptorName= ✔️ Search Naming the sockets for passing in $LISTEN_FDNAMES is supported
TriggerLimitIntervalSec= Search
TriggerLimitBurst= Search

systemd.timer

Term Supported Search Notes
OnActiveSec= Search
OnBootSec= Search
OnStartupSec= Search
OnUnitActiveSec= Search
OnUnitInactiveSec= Search
OnCalendar= Search
AccuracySec= Search
RandomizedDelaySec= Search
OnClockChange= Search
OnTimezoneChange= Search
Unit= Search
Persistent= Search
WakeSystem= Search
RemainAfterElapse= Search

systemd.unit

Term Supported Search Notes
Description= ✔️ Search Descriptions are read and will be displayed by the control interface
Documentation= Search
Wants= ✔️ Search Specifying which units to pull in is supported
Requires= ✔️ Search Specifying which units to pull in is supported
Requisite= Search
BindsTo= Search
PartOf= Search
Conflicts= Search
Before= ✔️ Search Ordering of units according to before/after relation is supported fully
After= ✔️ Search Ordering of units according to before/after relation is supported fully
OnFailure= Search
PropagatesReloadTo= Search
ReloadPropagatedFrom= Search
JoinsNamespaceOf= Search
RequiresMountsFor= Search
OnFailureJobMode= Search
IgnoreOnIsolate= Search
StopWhenUnneeded= Search
RefuseManualStart= Search
RefuseManualStop= Search
AllowIsolate= Search
DefaultDependencies= Search
CollectMode= Search
FailureAction= Search
SuccessAction= Search
FailureActionExitStatus= Search
SuccessActionExitStatus= Search
JobTimeoutSec= Search
JobRunningTimeoutSec= Search
JobTimeoutAction= Search
JobTimeoutRebootArgument= Search
StartLimitIntervalSec= Search
StartLimitBurst= Search
StartLimitAction= Search
RebootArgument= Search
SourcePath= Search
ConditionArchitecture= Search
ConditionVirtualization= Search
ConditionHost= Search
ConditionKernelCommandLine= Search
ConditionKernelVersion= Search
ConditionSecurity= Search
ConditionCapability= Search
ConditionACPower= Search
ConditionNeedsUpdate= Search
ConditionFirstBoot= Search
ConditionPathExists= Search
ConditionPathExistsGlob= Search
ConditionPathIsDirectory= Search
ConditionPathIsSymbolicLink= Search
ConditionPathIsMountPoint= Search
ConditionPathIsReadWrite= Search
ConditionDirectoryNotEmpty= Search
ConditionFileNotEmpty= Search
ConditionFileIsExecutable= Search
ConditionUser= Search
ConditionGroup= Search
ConditionControlGroupController= Search
ConditionMemory= Search
ConditionCPUs= Search
AssertArchitecture= Search
AssertVirtualization= Search
AssertHost= Search
AssertKernelCommandLine= Search
AssertKernelVersion= Search
AssertSecurity= Search
AssertCapability= Search
AssertACPower= Search
AssertNeedsUpdate= Search
AssertFirstBoot= Search
AssertPathExists= Search
AssertPathExistsGlob= Search
AssertPathIsDirectory= Search
AssertPathIsSymbolicLink= Search
AssertPathIsMountPoint= Search
AssertPathIsReadWrite= Search
AssertDirectoryNotEmpty= Search
AssertFileNotEmpty= Search
AssertFileIsExecutable= Search
AssertUser= Search
AssertGroup= Search
AssertControlGroupController= Search
Alias= Search
WantedBy= ✔️ Search Specifying which units pull this unit in is supported
RequiredBy= ✔️ Search Specifying which units pull this unit in is supported
Also= Search
DefaultInstance= Search