diff --git a/TRANSIENT-SETTINGS.md b/TRANSIENT-SETTINGS.md new file mode 100644 index 0000000000..17fe0604ec --- /dev/null +++ b/TRANSIENT-SETTINGS.md @@ -0,0 +1,447 @@ +# What settings are currently available for transient units? + +Our intention is to make all settings that are available as unit file settings +also available for transient units, through the D-Bus API. At the moment, some +unit types (socket, swap, path) are not supported at all via unit types, but +most others are pretty well supported, with some notable omissions. + +The lists below contain all settings currently available in unit files. The +ones currently available in transient units are prefixed with `✓`. + +## Generic Unit Settings + +Only the most important generic unit settings are available for transient units. + +``` +✓ Description= + Documentation= + SourcePath= +✓ Requires= +✓ Requisite= +✓ Wants= +✓ BindsTo= +✓ Conflicts= +✓ Before= +✓ After= +✓ OnFailure= +✓ PropagatesReloadTo= +✓ ReloadPropagatedFrom= +✓ PartOf= + JoinsNamespaceOf= + RequiresMountsFor= + StopWhenUnneeded= + RefuseManualStart= + RefuseManualStop= + AllowIsolate= +✓ DefaultDependencies= + OnFailureJobMode= + OnFailureIsolate= + IgnoreOnIsolate= + JobTimeoutSec= + JobRunningTimeoutSec= + JobTimeoutAction= + JobTimeoutRebootArgument= + StartLimitIntervalSec=SECONDS + StartLimitBurst=UNSIGNED + StartLimitAction=ACTION +✓ FailureAction= +✓ SuccessAction= +✓ AddRef= + RebootArgument=STRING + ConditionPathExists= + ConditionPathExistsGlob= + ConditionPathIsDirectory= + ConditionPathIsSymbolicLink= + ConditionPathIsMountPoint= + ConditionPathIsReadWrite= + ConditionDirectoryNotEmpty= + ConditionFileNotEmpty= + ConditionFileIsExecutable= + ConditionNeedsUpdate= + ConditionFirstBoot= + ConditionKernelCommandLine= + ConditionArchitecture= + ConditionVirtualization= + ConditionSecurity= + ConditionCapability= + ConditionHost= + ConditionACPower= + ConditionUser= + ConditionGroup= + AssertPathExists= + AssertPathExistsGlob= + AssertPathIsDirectory= + AssertPathIsSymbolicLink= + AssertPathIsMountPoint= + AssertPathIsReadWrite= + AssertDirectoryNotEmpty= + AssertFileNotEmpty= + AssertFileIsExecutable= + AssertNeedsUpdate= + AssertFirstBoot= + AssertKernelCommandLine= + AssertArchitecture= + AssertVirtualization= + AssertSecurity= + AssertCapability= + AssertHost= + AssertACPower= + AssertUser= + AssertGroup= +✓ CollectMode= +``` + +## Execution-Related Settings + +All execution-related settings are available for transient units. + +``` +✓ WorkingDirectory= +✓ RootDirectory= +✓ RootImage= +✓ User= +✓ Group= +✓ SupplementaryGroups= +✓ Nice= +✓ OOMScoreAdjust= +✓ IOSchedulingClass= +✓ IOSchedulingPriority= +✓ CPUSchedulingPolicy= +✓ CPUSchedulingPriority= +✓ CPUSchedulingResetOnFork= +✓ CPUAffinity= +✓ UMask= +✓ Environment= +✓ EnvironmentFile= +✓ PassEnvironment= +✓ UnsetEnvironment= +✓ DynamicUser= +✓ RemoveIPC= +✓ StandardInput= +✓ StandardOutput= +✓ StandardError= +✓ StandardInputText= +✓ StandardInputData= +✓ TTYPath= +✓ TTYReset= +✓ TTYVHangup= +✓ TTYVTDisallocate= +✓ SyslogIdentifier= +✓ SyslogFacility= +✓ SyslogLevel= +✓ SyslogLevelPrefix= +✓ LogLevelMax= +✓ LogExtraFields= +✓ SecureBits= +✓ CapabilityBoundingSet= +✓ AmbientCapabilities= +✓ TimerSlackNSec= +✓ NoNewPrivileges= +✓ KeyringMode= +✓ SystemCallFilter= +✓ SystemCallArchitectures= +✓ SystemCallErrorNumber= +✓ MemoryDenyWriteExecute= +✓ RestrictNamespaces= +✓ RestrictRealtime= +✓ RestrictAddressFamilies= +✓ LockPersonality= +✓ LimitCPU= +✓ LimitFSIZE= +✓ LimitDATA= +✓ LimitSTACK= +✓ LimitCORE= +✓ LimitRSS= +✓ LimitNOFILE= +✓ LimitAS= +✓ LimitNPROC= +✓ LimitMEMLOCK= +✓ LimitLOCKS= +✓ LimitSIGPENDING= +✓ LimitMSGQUEUE= +✓ LimitNICE= +✓ LimitRTPRIO= +✓ LimitRTTIME= +✓ ReadWritePaths= +✓ ReadOnlyPaths= +✓ InaccessiblePaths= +✓ BindPaths= +✓ BindReadOnlyPaths= +✓ PrivateTmp= +✓ PrivateDevices= +✓ ProtectKernelTunables= +✓ ProtectKernelModules= +✓ ProtectControlGroups= +✓ PrivateNetwork= +✓ PrivateUsers= +✓ ProtectSystem= +✓ ProtectHome= +✓ MountFlags= +✓ MountAPIVFS= +✓ Personality= +✓ RuntimeDirectoryPreserve= +✓ RuntimeDirectoryMode= +✓ RuntimeDirectory= +✓ StateDirectoryMode= +✓ StateDirectory= +✓ CacheDirectoryMode= +✓ CacheDirectory= +✓ LogsDirectoryMode= +✓ LogsDirectory= +✓ ConfigurationDirectoryMode= +✓ ConfigurationDirectory= +✓ PAMName= +✓ IgnoreSIGPIPE= +✓ UtmpIdentifier= +✓ UtmpMode= +✓ SELinuxContext= +✓ SmackProcessLabel= +✓ AppArmorProfile= +✓ Slice= +``` + +## Resource Control Settings + +All cgroup/resource control settings are available for transient units + +``` +✓ CPUAccounting= +✓ CPUWeight= +✓ StartupCPUWeight= +✓ CPUShares= +✓ StartupCPUShares= +✓ CPUQuota= +✓ MemoryAccounting= +✓ MemoryLow= +✓ MemoryHigh= +✓ MemoryMax= +✓ MemorySwapMax= +✓ MemoryLimit= +✓ DeviceAllow= +✓ DevicePolicy= +✓ IOAccounting= +✓ IOWeight= +✓ StartupIOWeight= +✓ IODeviceWeight= +✓ IOReadBandwidthMax= +✓ IOWriteBandwidthMax= +✓ IOReadIOPSMax= +✓ IOWriteIOPSMax= +✓ BlockIOAccounting= +✓ BlockIOWeight= +✓ StartupBlockIOWeight= +✓ BlockIODeviceWeight= +✓ BlockIOReadBandwidth= +✓ BlockIOWriteBandwidth= +✓ TasksAccounting= +✓ TasksMax= +✓ Delegate= +✓ IPAccounting= +✓ IPAddressAllow= +✓ IPAddressDeny= +``` + +## Process Killing Settings + +All process killing settings are available for transient units: + +``` +✓ SendSIGKILL= +✓ SendSIGHUP= +✓ KillMode= +✓ KillSignal= +``` + +## Service Unit Settings + +Only the most important service settings are available for transient units. + +``` + PIDFile= +✓ ExecStartPre= +✓ ExecStart= +✓ ExecStartPost= +✓ ExecReload= +✓ ExecStop= +✓ ExecStopPost= + RestartSec= + TimeoutStartSec= + TimeoutStopSec= + TimeoutSec= +✓ RuntimeMaxSec= + WatchdogSec= +✓ Type= +✓ Restart= + PermissionsStartOnly= + RootDirectoryStartOnly= +✓ RemainAfterExit= + GuessMainPID= + RestartPreventExitStatus= + RestartForceExitStatus= + SuccessExitStatus= +✓ NonBlocking= + BusName= +✓ FileDescriptorStoreMax= +✓ NotifyAccess= + Sockets= + USBFunctionDescriptors= + USBFunctionStrings= +``` + +## Mount Unit Settings + +Only the most important mount unit settings are currently available to transient units: + +``` +✓ What= + Where= +✓ Options= +✓ Type= + TimeoutSec= + DirectoryMode= + SloppyOptions= + LazyUnmount= + ForceUnmount= +``` + +## Automount Unit Settings + +Only one automount unit setting is currently available to transient units: + +``` + Where= + DirectoryMode= +✓ TimeoutIdleSec= +``` + +## Timer Unit Settings + +Most timer unit settings are available to transient units. + +``` +✓ OnCalendar= +✓ OnActiveSec= +✓ OnBootSec= +✓ OnStartupSec= +✓ OnUnitActiveSec= +✓ OnUnitInactiveSec= + Persistent= +✓ WakeSystem= +✓ RemainAfterElapse= +✓ AccuracySec= +✓ RandomizedDelaySec= + Unit= +``` + +## Slice Unit Settings + +Slice units are fully supported as transient units, but they have no settings +of their own beyond the generic unit and resource control settings. + +## Scope Unit Settings + +Scope units are fully supported as transient units (in fact they only exist as +such), but they have no settings of their own beyond the generic unit and +resource control settings. + +## Socket Unit Settings + +Socket units are currently not available at all as transient units: + +``` + ListenStream= + ListenDatagram= + ListenSequentialPacket= + ListenFIFO= + ListenNetlink= + ListenSpecial= + ListenMessageQueue= + ListenUSBFunction= + SocketProtocol= + BindIPv6Only= + Backlog= + BindToDevice= + ExecStartPre= + ExecStartPost= + ExecStopPre= + ExecStopPost= + TimeoutSec= + SocketUser= + SocketGroup= + SocketMode= + DirectoryMode= + Accept= + Writable= + MaxConnections= + MaxConnectionsPerSource= + KeepAlive= + KeepAliveTimeSec= + KeepAliveIntervalSec= + KeepAliveProbes= + DeferAcceptSec= + NoDelay= + Priority= + ReceiveBuffer= + SendBuffer= + IPTOS= + IPTTL= + Mark= + PipeSize= + FreeBind= + Transparent= + Broadcast= + PassCredentials= + PassSecurity= + TCPCongestion= + ReusePort= + MessageQueueMaxMessages= + MessageQueueMessageSize= + RemoveOnStop= + Symlinks= + FileDescriptorName= + Service= + TriggerLimitIntervalSec= + TriggerLimitBurst= + SmackLabel= + SmackLabelIPIn= + SmackLabelIPOut= + SELinuxContextFromNet= +``` + +## Swap Unit Settings + +Swap units are currently not available at all as transient units: + +``` + What= + Priority= + Options= + TimeoutSec= +``` + +## Path Unit Settings + +Path units are currently not available at all as transient units: + +``` + PathExists= + PathExistsGlob= + PathChanged= + PathModified= + DirectoryNotEmpty= + Unit= + MakeDirectory= + DirectoryMode= +``` + +## Install Section + +The `[Install]` section is currently not available at all for transient units, and it probably doesn't even make sense. + +``` + Alias= + WantedBy= + RequiredBy= + Also= + DefaultInstance= +```