深入理解Linux关机命令:sysvinit源码解析
需积分: 10 62 浏览量
更新于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 上传
2021-09-06 上传
2010-06-26 上传
点击了解资源详情
点击了解资源详情
2024-06-26 上传
2018-01-04 上传
2011-10-13 上传
我是天行健
- 粉丝: 0
- 资源: 1
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍