How to use the command `systemd-inhibit` (with examples)
- Linux
- December 25, 2023
The systemd-inhibit
command is a powerful tool that allows the user to prevent the system from entering certain power states or to block certain operations temporarily. It can be used to inhibit system sleep and shutdown requests, as well as automatic idle handling. This article will illustrate various use cases of the systemd-inhibit
command, providing the code, motivation, explanation, and example output for each use case.
Use case 1: List all active inhibition locks and the reasons for their creation
Code:
systemd-inhibit --list
Motivation: This use case is useful when you want to know the currently active inhibition locks on your system and understand the reasons for their creation.
Explanation: The --list
option is used to list all the active inhibition locks and the reasons for their creation.
Example output:
Who: 1000 (john)
UID: 1000 (john)
PID: 1234 (example-program)
Process: example-program [PID 1234]
Invocation: /usr/bin/example-program
Inhibit: sleep
Who: 1000 (john)
UID: 1000 (john)
PID: 5678 (download-script)
Process: download-script [PID 5678]
Invocation: /bin/bash /path/to/download-script.sh
Inhibit: idle
In the example output above, there are two active inhibition locks. The first one is created by the program “example-program” to inhibit sleep, and the second one is created by the script “download-script.sh” to inhibit idle.
Use case 2: Block system shutdown for a specified number of seconds with the sleep
command
Code:
systemd-inhibit --what shutdown sleep 5
Motivation: This use case can be helpful when you want to temporarily prevent the system from shutting down, but only for a specific duration.
Explanation: The --what shutdown
option specifies that the inhibition lock should block system shutdown requests. The sleep 5
command represents the time in seconds for which the shutdown should be blocked.
Example output: (No output is displayed)
After running the above command, the system shutdown will be blocked for 5 seconds. Once the specified duration has passed, the system will be able to shut down.
Use case 3: Keep the system from sleeping or idling until the download is complete
Code:
systemd-inhibit --what sleep:idle wget https://example.com/file
Motivation: This use case is useful when you want to prevent the system from sleeping or going into idle mode until a download operation is completed.
Explanation: The --what sleep:idle
option indicates that the system should be inhibited from sleeping or idling. The wget https://example.com/file
command represents the download operation that needs to be completed.
Example output: (No output is displayed)
By executing the above command, the system will stay awake and will not enter sleep or idle mode until the download of the specified file is completed.
Use case 4: Ignore lid close switch until the script exits
Code:
systemd-inhibit --what sleep:handle-lid-switch path/to/script
Motivation: This use case can be beneficial when you want to prevent the system from reacting to lid close events until a specific script or process finishes running.
Explanation: The --what sleep:handle-lid-switch
option instructs the system to ignore lid close events. The path/to/script
represents the script or process that needs to finish before handling lid close events again.
Example output: (No output is displayed)
After executing the above command, the system will not react to lid close events until the specified script or process exits.
Use case 5: Ignore power button press while command is running
Code:
systemd-inhibit --what handle-power-key command
Motivation: This use case can be useful when you want to prevent the power button from triggering any actions while a specific command or process is running.
Explanation: The --what handle-power-key
option tells the system to ignore power button presses. The command
represents the command or process that needs to finish before handling power button events again.
Example output: (No output is displayed)
By running the above command, the power button events will be ignored until the specified command or process exits.
Use case 6: Describe who and why created the inhibitor
Code:
systemd-inhibit --who $USER --why reason --what operation command
Motivation: This use case is valuable when you want to provide additional information about who created the inhibition lock and the reason behind its creation.
Explanation: The --who
option allows you to specify the user who created the inhibitor. The --why
option is used to provide a reason for the creation of the inhibitor. The --what
option is used to specify the operation the lock inhibits. The command
represents the command or process associated with the inhibitor.
Example output: (No output is displayed)
By executing the above command, the inhibitor will be created with the specified user, reason, operation, and associated command.
Conclusion:
The systemd-inhibit
command is a versatile tool that can be used for various power management-related tasks. Whether you need to block system sleep/shutdown requests, prevent idling, or ignore certain hardware events, systemd-inhibit
provides the necessary functionality. By understanding the different options and use cases illustrated in this article, you can effectively utilize this command to suit your specific requirements.