2017-07-12 65 views
1

当系统停止/关闭时,我需要执行一些命令。如何检查Linux是否停机或重新启动

我需要知道这个在我的脚本/etc/init.d/myScript里,当系统关闭时会调用它。

我以前通过检查$ runlevel变量来实现它,如果它设置为0,那么系统正在停止运行,几年前它在Raspbian中工作。但是,在我的Linux cubieboard2 4.9.12-sunxi Armbian中没有设置这个变量,当我在myScript中的“STOP”情况下执行“runlevel”命令时,它说它在N 5 runlevel中,这是不正确的,因为我已执行关机

欢迎提供所有提示。

+0

我想的方法有两种:( a)使用'last'命令,它可以根据选项为您提供上次关机或最后一次重启时间,或者(b)解析'/ var/log/messages'文件。这些工作是否有用? – Pierre

+1

是不是通过切换到运行级别0来停止系统,从而执行'/ etc/rc0.d /'目录中的所有脚本?因此,即使通过'$ runlevel'(根据我的手册页应该是'$ RUNLEVEL')或'runlevel'命令来识别当前运行级别,您可以在/ etc/rc0中放置一个符号链接。 d /'到一个特殊的脚本,只有当系统暂停时才会被调用。 – Alfe

+0

如果您正在运行systemd,则可以尝试通过“systemctl get-default”获取运行级别 –

回答

0

如果您遵守LSB标准,则无需处理脚本中的runlevel。 根据LSB规范,您可能想要将脚本标头。以下是一个示例 标题。

### BEGIN INIT INFO 
# Provides:   scriptname 
# Required-Start: $remote_fs $syslog 
# Required-Stop:  $remote_fs $syslog 
# Default-Start:  2 3 4 5 
# Default-Stop:  0 1 6 
# Short-Description: Start daemon at boot time 
# Description:  Enable service provided by daemon. 
### END INIT INFO 

LSB standard

另外第20章的更多细节,你可以控制runlevel在该脚本将invoked.It也可以通过chkconfig命令控制

相关问题