如何在ubuntu关闭时执行一个或多个命令和脚本?系统启动时是否有/ etc / profile和〜/ .bashrc这样的脚本? 我知道linux关闭可能有很多原因,除了处理kill信号之外,我可以在哪里得到这个原因?
答案 0 :(得分:3)
在系统启动时是否有像/ etc / profile和〜/ .bashrc这样的脚本?
在启动时调用SysV Init脚本(/etc/init.d/*
)。在系统启动时调用某些活动的一个简单/简单的方法是将其放入/etc/init.d/local
(/etc/rc.local
用于其他一些发行版)。另见:RcLocalHowto。
如何在ubuntu关闭时执行一个或多个命令和脚本?
听起来好像你想创建一个真正的初始化脚本,在进入运行级别X-Z时会start
,并且在退出它们时会stop
。另见:UbuntuBootupHowto。
我知道linux关闭可能有很多原因,除了处理kill信号之外,我可以在哪里得到这个原因?
非交互式地做这件事并不简单。您可以查看系统日志,查找来自shutdown
的指示。
答案 1 :(得分:2)
当您注销Ubuntu 11.04时,会执行〜/ .bash_logout文件 我不确定,但假设10.04中有类似的脚本 希望这会有所帮助。
答案 2 :(得分:2)
您可以将脚本放在/etc/rc0.d(用于暂停)和/etc/rc6.d/(用于重启)中。确保脚本具有可执行权限。
有不同的运行级别:
* 0系统暂停
* 1单用户
* 2全多用户模式(默认)
* 3-5与2
相同
* 6系统重启
运行级别0是系统暂停条件。当达到运行级别0时,/ etc / rc0.d中的所有脚本都是exectute。
运行级别6用于表示系统重启。这与运行级别0相同,只是在序列结束时发出重新启动而不是关闭电源。
如果要在休眠或睡眠时执行脚本,请将脚本放在/etc/pm/sleep.d /
中这是一个脚本示例:
#!/bin/sh
WLANSTATUS=`cat /sys/class/ieee80211/phy*/rfkill*/state`
test -z $WLANSTATUS && exit 1
case $1 in
hibernate)
# Do something before hibernate
;;
suspend)
# Do something before sleep
;;
thaw)
# Do something after hibernate
;;
resume)
# Do something after sleep
if [ $WLANSTATUS = 0 ]; then
echo 0 > /sys/devices/platform/asus_laptop/wlan
elif [ $WLANSTATUS = 1 ]; then
echo 1 > /sys/devices/platform/asus_laptop/wlan
fi
;;
*) echo "somebody is calling me totally wrong."
;;
esac
玩得开心!