我只想在 Ubuntu 21.04 上每次重启/关机/断电之前(当我运行关机或断电命令时,或使用 GNOME/KDE GUI 选项时)运行(以 root 身份)命令或脚本。我尝试将脚本放入其中/etc/init.d
并建立符号链接/etc/rc6.d/
,/etc/rc0.d/
但没有成功。
不知道是否有这样的一行sudo crontab -e
。
答案1
您可以通过创建服务文件然后重新加载来执行此操作systemd
。操作方法如下:
打开终端(如果尚未打开)
确保您要在关机时运行的脚本是可执行的:
chmod +x ~/scripts/pre-shutdown.sh
为关机服务创建一个文件
/etc/systemd/system
。为了便于举例,我将文件命名为nighty-night.service
。将以下行添加到文件
.service
,并根据需要进行修改:[Unit] Description=Pre-Shutdown Processes DefaultDependencies=no Before=shutdown.target # This works because it is installed in the target and will be # executed before the target state is entered # Also consider kexec.target [Service] Type=oneshot ExecStart=/home/smeterlink/scripts/pre-shutdown.sh # your path and filename [Install] WantedBy=halt.target reboot.target shutdown.target
重新加载 systemd,启用服务以便它在启动时启动,然后启动它:
sudo systemctl daemon-reload sudo systemctl enable nighty-night.service sudo systemctl start nighty-night.service
你可以使用以下命令查看它是否运行正常systemctl status nighty-night
这里的所有都是它的。