suse shutdown是如何关机的,我该如何实现拦截shutdown然后操作它

suse shutdown 是如何关机的,我该如何实现拦截 shutdown 然后操作它。
需求是:执行 shutdown 时,启动自己的脚本 myscript,我想让它做一些关机前要做的事情。
我已经做到了 shutdown 时启动 myscript,但是我需要看到 myscript 的黑窗口,但是 suse 在 shutdown 的时候直接进入了关机画面,这个画面会停留一段时间,因为我的脚本 myscript 在运行,请问如何看到 myscript 的黑色窗口呢。或许能够拦截 shutdown 流程,让 myscript 执行完毕后,再由 myscript 来实现 shutdown。

方法 1:

你需要自己写一个 service ,模板如下

[Unit]
Description= 服务描述

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop= 运行你的脚本

[Install]
WantedBy=multi-user.target

然后把这个 service 文件放到 /etc/systemd/system/ 目录下,启动这个服务,关机时应该会调用这个脚本。

unix.stackexchange.com/questions/39226/how-to-run-a-script-with-systemd-right-before-shutdown

不过你说要显示一个窗口,这表示这个脚本是在 X 关闭之前要执行,上面达不到要求,还需要你去研究一下 。

方法 2:

首先安装 zenity,然后下面有一个关机脚本

#!/bin/bash

ACTION=`zenity --width=90 --height=230 --list --radiolist --text=" 选择注销方式" --title=" 注销" --column " 选择" --column " 方式" TRUE 关机 FALSE 重启 `

if  -n "${ACTION}" ];then
  case $ACTION in
  关机)
    systemctl poweroff
    ;;
  重启)
    systemctl reboot
    ;;
  esac
fi

这个脚本会弹出窗口让你选择关机,你可以在关机前插入自己的脚本。

非常感谢你的指教,有空多多交流,我从网上找了很多不能用的东西,有时间了研究一下你说的第二种方法