如何在 Ubuntu 21.04 关机前运行命令

如何在 Ubuntu 21.04 关机前运行命令

我只想在 Ubuntu 21.04 上每次重启/关机/断电之前(当我运行关机或断电命令时,或使用 GNOME/KDE GUI 选项时)运行(以 root 身份)命令或脚本。我尝试将脚本放入其中/etc/init.d并建立符号链接/etc/rc6.d//etc/rc0.d/但没有成功。

不知道是否有这样的一行sudo crontab -e

答案1

您可以通过创建服务文件然后重新加载来执行此操作systemd。操作方法如下:

  1. 打开终端(如果尚未打开)

  2. 确保您要在关机时运行的脚本是可执行的:

    chmod +x ~/scripts/pre-shutdown.sh
    
  3. 为关机服务创建一个文件/etc/systemd/system。为了便于举例,我将文件命名为nighty-night.service

  4. 将以下行添加到文件.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
    
  5. 重新加载 systemd,启用服务以便它在启动时启动,然后启动它:

    sudo systemctl daemon-reload
    sudo systemctl enable nighty-night.service
    sudo systemctl start nighty-night.service
    

你可以使用以下命令查看它是否运行正常systemctl status nighty-night

这里的所有都是它的。

相关内容