深入理解Linux关机命令:sysvinit源码解析
需积分: 10 40 浏览量
更新于2024-09-13
收藏 129KB PDF 举报
在Linux操作系统中,关机和重启操作可以通过多种命令实现,包括shutdown、reboot、halt、poweroff、telinit和init。这些命令均源自sysvinit软件包,一个经典的初始化系统管理工具。sysvinit-2.86源码提供了深入理解这些命令工作原理的机会,它们并非完全独立,而是存在链接关系。
1. `poweroff`和`reboot`实际上是`halt`的链接,这是通过Makefile中的软链接实现的:
- ln -sf halt $(ROOT)/sbin/reboot
- ln -sf halt $(ROOT)/sbin/poweroff
在终端运行`ls -l /sbin/poweroff`、`ls -l /sbin/reboot`和`ls -l /sbin/telinit`可验证这一结构,`telinit`同样链接到`init`。
2. `halt`命令有多个参数,如:
- `-n` 阻止sync系统调用,用于fsck修复根分区后防止旧的超级块覆盖。
- `-w` 不执行实际关机或重启,仅记录wtmp日志。
- `-d` 不写wtmp日志,已包含在 `-n` 中。
- `-f` 强制关机或重启,不通过shutdown过程。
- `-h` 将硬盘置于standby模式。
- `-i` 关闭所有网络接口。
默认情况下,如果执行的是`halt`,且没有指定其他参数,它会调用`poweroff`。
当用户非root权限执行`halt`时,会检查用户权限并根据权限进行处理。如果用户不是root,halt会退出。如果执行的是`poweroff`或`reboot`,它们会被视为`halt`的`-p`参数,即默认关机行为。
`halt`会根据INIT_VERSION和RUNLEVEL环境变量确定其行为,这涉及到系统启动级别的判断,如一级(单用户模式)、二级(多用户模式)等。当没有特定参数时,halt会执行相应的关机或重启操作,然后系统会逐渐关闭进程和服务,直到完全停机或重启。
Linux的关机和重启命令不仅功能上有所区别,而且在执行过程中还受到系统环境变量和权限控制的影响。通过研究sysvinit源码和手册,可以更深入地理解这些命令如何协同工作以及它们在系统管理中的角色。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2009-04-10 上传
2020-07-29 上传
2010-06-26 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
我是天行健
- 粉丝: 0
- 资源: 1
最新资源
- 高级React和GraphQL课程介绍
- 基于Simulink的matlab阻抗控制代码在人形机器人中的应用
- 九宫重排技术详细介绍与应用
- Ansible自动化配置HAProxy:每次添加节点时自动更新配置
- desmos-playground代码实践与重构技巧分享
- Wowchemy研究小组模板:快速创建漂亮学术网站指南
- 应届生技术指导:网页设计与Golang程序开发实践
- 快速上手:使用ts-node-starter构建Node.js项目
- HTML5倒计时模板:网站上线的倒数神器
- 无需安装即可使用的DiagramDesigner画图工具
- Code Genius:便捷的代码分享与待办事项应用
- 掌握LeetCode: Java编程能力提升秘籍
- 志远信息管理系统 v2.0发布:JSP技术驱动的全新体验
- C++堆栈跟踪异常处理技术深度解析
- Strapi:快速构建定制API的开源Node.js无头CMS
- React应用开发快速入门指南