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

程序开发,脚本,各类开发工具,程序语言讨论

版主: *sake

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

#1  牵牛花大神 » 周六 12月 10日, 2016年 1:54 pm

suse shutdown 是如何关机的,我该如何实现拦截 shutdown 然后操作它。
需求是:执行 shutdown 时,启动自己的脚本 myscript,我想让它做一些关机前要做的事情。
我已经做到了 shutdown 时启动 myscript,但是我需要看到 myscript 的黑窗口,但是 suse 在 shutdown 的时候直接进入了关机画面,这个画面会停留一段时间,因为我的脚本 myscript 在运行,请问如何看到 myscript 的黑色窗口呢。或许能够拦截 shutdown 流程,让 myscript 执行完毕后,再由 myscript 来实现 shutdown。
头像
牵牛花大神
 
帖子: 8
注册: 周六 12月 10日, 2016年 1:44 pm
Cash on hand: 59.00
送出感谢: 0 次
收到感谢: 0 次

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

#2  恋衣之曲 » 周一 12月 19日, 2016年 7:17 pm

方法 1:

你需要自己写一个 service ,模板如下
代码: 全选
[Unit]
Description= 服务描述

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

[Install]
WantedBy=multi-user.target

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

http://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

这个脚本会弹出窗口让你选择关机,你可以在关机前插入自己的脚本。
头像
恋衣之曲
使徒
 
帖子: 328
注册: 周一 12月 16日, 2013年 12:05 pm
Cash on hand: 276.10
Bank: 36.80
送出感谢: 1
收到感谢: 53

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

#3  牵牛花大神 » 周二 12月 20日, 2016年 2:43 am

非常感谢你的指教,有空多多交流,我从网上找了很多不能用的东西,有时间了研究一下你说的第二种方法
头像
牵牛花大神
 
帖子: 8
注册: 周六 12月 10日, 2016年 1:44 pm
Cash on hand: 59.00
送出感谢: 0 次
收到感谢: 0 次


回到 开发与开发工具

在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客