程序在OS关机时需要做善后处理,那么就要判断系统是否是在reboot或者关机,Centos6.5可以通过runlevel命令查询到当前运行级别,重启时变为6,关机时变为0. Centos7废弃了runlevel的这一套,那么怎么判断呢?
1. 判断方法:
当 systemctl list-units --type target 命令同时查询到如下reboot和shutdown两个输出时,表示正在rebootreboot.target loaded inactive dead start Rebootshutdown.target loaded inactive dead start Shutdown
如果只能查到shutdown而没有reboot,则是在关机。
2. 原理分析
Centos7采用target方式管理系统,Centos6.5那种按照runlevel来区分OS运行级别的方式已被废弃。新旧对应关系如下:
from:
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Targets.html#tabl-Managing_Services_with_systemd-Targets-Runlevels
Table 9.6. Comparison of SysV Runlevels with systemd Targets
Runlevel |
---|