热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux系统中设置服务启动优先级的方法

本文详细介绍了Linux系统中init进程的作用及其启动过程,解释了运行级别的概念,并提供了调整服务启动顺序的具体步骤和实例。通过了解这些内容,用户可以更好地管理系统的启动流程和服务配置。
### 一、Init进程的作用

在Linux系统中,init是内核启动的第一个用户级进程(PID为1)。它负责引导系统的初始化工作,确保所有必要的服务和应用程序能够正确启动。init通常位于`/sbin/init`,如果找不到该文件,内核会尝试启动`/bin/sh`,但这是最后的手段。

### 二、运行级别概述

运行级别定义了操作系统当前的功能状态,范围从0到6,每个级别有不同的用途:

- **0**:停机(不应将默认运行级别设置为0)
- **1**:单用户模式(维护模式)
- **2**:多用户模式,无NFS支持
- **3**:完全多用户模式(标准模式)
- **4**:保留未使用
- **5**:图形化多用户模式(X Window System)
- **6**:重启(不应将默认运行级别设置为6)

这些级别在`/etc/inittab`文件中定义,init根据该文件中的配置来决定启动哪些服务。启动脚本通常位于`/etc/rc.d/init.d`目录下,并通过符号链接连接到`/etc/rc.d/rcN.d`目录(N为运行级别),以控制服务的启动和停止顺序。

### 三、调整服务启动顺序

在Linux系统中,可以通过修改`chkconfig`注释行中的数值来调整服务的启动顺序。例如,在`/etc/init.d`下的启动脚本中找到如下行:

```bash
# chkconfig: 2345 64 36
```

这里的`64`表示启动顺序,`36`表示关闭顺序。要更改顺序,可以直接编辑此行,然后使用以下命令重新注册服务:

```bash
chkconfig --del servicename
chkconfig --add servicename
chkconfig servicename on
```

### 四、启动过程详解

Linux系统的启动流程包括以下几个关键步骤:

1. **加载内核**:启动内核并初始化硬件设备。
2. **执行init**:启动init进程,读取`/etc/inittab`文件。
3. **初始化系统**:执行`/etc/rc.d/rc.sysinit`脚本,进行基本的系统初始化。
4. **运行级别初始化**:根据指定的运行级别执行相应的启动脚本(如`/etc/rc.d/rc`)。
5. **本地自定义脚本**:执行`/etc/rc.d/rc.local`,允许用户添加自定义命令。
6. **等待用户登录**:启动`/sbin/mingetty`,准备用户登录界面。

### 五、实例:设置Apache服务开机自动启动

假设您已经手动编译安装了Apache服务,并希望它在运行级别3下自动启动。具体步骤如下:

1. 创建启动脚本:
```bash
touch /etc/rc.d/init.d/apache
vi /etc/rc.d/init.d/apache
chown -R root /etc/rc.d/init.d/apache
chmod 700 /etc/rc.d/init.d/apache
ln -s /etc/rc.d/init.d/apache /etc/rc.d/rc3.d/S60apache
```
2. 编辑启动脚本内容:
```bash
#!/bin/bash
# Start httpd service
/server/apache/bin/apachectl start
```

通过上述步骤,Apache服务将在运行级别3下随系统启动而自动启动。可以根据需要使用`chkconfig`工具进一步调整启动配置。

### 六、启动脚本执行顺序

在Red Hat, Red Flag, CentOS, Fedora等Linux发行版中,启动脚本的执行顺序如下:

1. 启动内核(vmlinuz)
2. 执行`/etc/inittab`
3. 运行初始化脚本:
- `/etc/rc.d/rc.sysinit`
- `/etc/rc.d/rc`(根据运行级别执行相应脚本)
- `/etc/rc.d/rc.local`
4. 启动登录界面(`/sbin/mingetty`)
5. 用户登录时执行的shell配置文件:
- `/etc/profile.d/*`
- `/etc/profile`
- `/etc/bashrc`
- `~/.bashrc`
- `~/.bash_profile`

了解这些细节有助于更精细地控制系统的启动行为和优化性能。
推荐阅读
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • PostgreSQL 10 离线安装指南
    本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • Startup 类配置服务和应用的请求管道。Startup类ASP.NETCore应用使用 Startup 类,按照约定命名为 Startup。 Startup 类:可选择性地包括 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 深入解析 Spring Security 用户认证机制
    本文将详细介绍 Spring Security 中用户登录认证的核心流程,重点分析 AbstractAuthenticationProcessingFilter 和 AuthenticationManager 的工作原理。通过理解这些组件的实现,读者可以更好地掌握 Spring Security 的认证机制。 ... [详细]
  • 本文详细介绍了如何在 Windows 环境下使用 node-gyp 工具进行 Node.js 本地扩展的编译和配置,涵盖从环境搭建到代码实现的全过程。 ... [详细]
  • 本文介绍如何使用布局文件在Android应用中排列多行TextView和Button,使其占据屏幕的特定比例,并提供示例代码以帮助理解和实现。 ... [详细]
  • 本文探讨了在Windows Server 2008环境下配置Tomcat使用80端口时遇到的问题,包括端口被占用、多项目访问失败等,并提供详细的解决方法和配置建议。 ... [详细]
  • 本文探讨了在Java多线程环境下,如何确保具有相同key值的线程能够互斥执行并按顺序输出结果。通过优化代码结构和使用线程安全的数据结构,我们解决了线程同步问题,并实现了预期的并发行为。 ... [详细]
  • 本次考试于2016年10月25日上午7:50至11:15举行,主要涉及数学专题,特别是斐波那契数列的性质及其在编程中的应用。本文将详细解析考试中的题目,并提供解题思路和代码实现。 ... [详细]
  • 配置Windows操作系统以确保DAW(数字音频工作站)硬件和软件的高效运行可能是一个复杂且令人沮丧的过程。本文提供了一系列专业建议,帮助你优化Windows系统,确保录音和音频处理的流畅性。 ... [详细]
  • 本文详细解释了如何使用@IfProfileValue注解来检测Spring框架中的配置文件是否处于活动状态,并探讨其与@Profile和@activeProfiles的区别。 ... [详细]
author-avatar
杰仔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有