This package restarts systemd services on system updates every time a package is updated (installed or
deleted) using the systems package mamanger (every time dnf {update, upgrade, downgrad}
is executed).
It primarily is tailored for Amazon Linux 2023 but easily can be ported to all RPM based systems like
Fedora. Smart-Restart utilizes the needs-restarting
package from dnf-utils
and a custom denylisting
mechanism to determine which services need to be restarted and how to determine if a system reboot is
advices. In case a system reboot is advised, a reboot hint marker file is generated
(/run/smart-restart/reboot-hint-marker
) containing the services and other components which require a
restart.
sudo dnf install -y smart-restart
On the next sudo dnf update/downgrade/install/erase
invocation, this script will kick in and restart all
services which are not denylisted if necessary.
Smart-Restart can be instructed to block certain services from being restarted. Those services also won't
contribute to the decision if a reboot is required.
To add new services, put a file with the suffix -denylist
in /etc/smart-restart-conf.d/
. Lines starting
with "#" will be ignored.
cat /etc/smart-restart-conf.d/custom-denylist
# Some comments
myservice.service
All *-denylist
files are read and evaluated when making the decision.
Additionally to denylisting, Smart-Restart provides a mechanism to run custom scripts before and after the service restart attempts. Those can be used to manually perform preparation steps or inform other components of a outstanding or completed restart.
All scripts in /etc/smart-restart-conf.d/
with the suffix -{pre,post}-restart
are executed. In case the order
is important, prefix all scripts with a number to ensure the execution order. For example
ls /etc/smart-restart-conf.d/*-pre-restart
001-my-script-pre-restart
002-some-other-script-pre-restart
For now, manual installation of Smart-Restart supports AL2 and AL2023. The main reason for the differentiation
is the package manager. AL2 mainly uses yum
and AL2023 dnf
. The following prequsites bring the needs-restarting
script and the a package managers plugin which allows to hook into the different parts of the package managers
installation process.
For dnf based systems:
sudo dnf install -y dnf-utils dnf-plugin-post-transaction-actions
sudo make install
For yum based systems:
sudo yum isntall -y yum-utils yum-plugin-post-transaction-actions
sudo make install
In case this package is installed on RPM based systems which are not Amazon Linux, the installation will fail
recognizing the distribution. This behavior can be overriden forcing make
to assume yum or dnf
as main
package manager using DIST_OVERRIDE=.amzn2
or DIST_OVERRIDE=.amzn2023
respectively.
Example:
sudo make DIST_OVERRIDE=.amzn2 install
For instructions on how to contribute to this project consult the CONTRIBUTION document.
See CONTRIBUTING for more information.
This project is licensed under the Apache-2.0 License.