Linux 系统的运行级别(Run Level)

2023-11-01

    Linux 操作系统自从开始启动至启动完毕需要经历几个不同的阶段,这几个阶段就叫做 Runlevel,同样,当Linux操作系统关闭时也要经历另外几个不同的 Runlevel,下面详细介绍一下 Runlevel,并展示一些小技巧来让Linux系统避免不必要的重启动。

    Runlevel 可以认为是系统状态,形象一点,您可以认为 Runlevel 有点象微软的 Windows 操作系统中的正常启动(Normal)、安全模式(Safemode)和Command prompt only。进入每个 Runlevel 都需要启动或关闭相应的一系列服务(Services),这些服务(Services)以初始化脚本的方式放置于目录 /etc/rc.d/rc?.d/或者/etc/rc?.d下面。(?代表 Runlevel 的对应序号)。

    在大多数的Linux发行版本中,通常有8个运行级别系统状态(Runlevel System State):

  • 0 Halt the system 停机(千万不要把 initdefault 设置为0),机器关闭
  • 1 Single user mode 单用户模式,与 Win9x 下的安全模式类似
  • 2 Basic multi user mode 基本多用户模式,没有 NFS 支持
  • 3 Multi user mode 完整的多用户模式,是标准的运行级
  • 4 None 一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
  • 5 Multi user mode with GUI 就是X11,进到XWindow系统了
  • 6 Reboot the system 重新启动(千万不要把initdefault 设置为6),运行 init 6 机器就会重启
  • S, s Single user mode

    不同的运行级有不同的用处,也应该根据自己的不同情形来设置。例如,如果丢失了 root 口令,那么可以让机器启动进入单用户状态来设置。在启动后的 lilo 提示符下输入:

init=/bin/sh rw (或者 linux 1;linux single)

    就可以使机器进入运行级 1 ,并把 root 文件系统挂为读写。他会跳过所有系统认证,让你使用 passwd 程序来改变 root 口令,然后启动到一个新的运行级。

    多数的桌面的 Linux 系统缺省的 Runlevel 是 5,用户登陆时是图形界面,而多数的服务器版本的 Linux 系统缺省的 Runlevel 是 3,用户登陆时是字符界面,Runlevel 为 1 和 2 除了调试之外很少使用,Runlevel 为 s 和 S 并不是直接给用户使用,而是用来 Single user mode 作准备。

    Linux 的运行模式比起 Windows 的启动模式的优势在于:你可以在系统空闲时使用 .init 工具切换你现在使用的 Runlevel,另外,当你关闭或者启动 Linux 系统时你已经不知不觉中切换你的 Runlevel ,系统关机进程需要调用 Runlevel (0 或 6)来关闭所有正在运行中的进程。

显示当前运行模式

    刚入门时,你或许对先前和目前正在使用中的运行模式很好奇,Runlevel命令可以用来显示这些信息:

$ runlevel

3 5

    Runlevel命令的输出结果表明最初的运行模式是3,而现在的运行模式是5。

切换运行模式

    切换运行模式使用 telinit 命令(root用户):

$ telinit

    通常,切换运行模式的目的是重启某些应用进程,比如 XFree86,将运行模式从5切换到3将终止XFree86以及与之相关的所有进程,然后再把运行模式切换到5,XFree86就可以很干净的启动。在做这些工作之前,请确保所有在XFree86下的工作都已经保存,用root用户:

$ telinit 3

$ telinit 5

    在键入命令之后,你的屏幕可能会显示一些服务启动或者停止的信息。

在运行模式中加入启动服务

    要在某个运行模式中加入一个启动服务,首先要新建该服务启动脚本,然后把它放置于/etc/rc.d/init.d或者/etc/init.d/(根据你的 Linux版本有所不同),要将该启动脚本与运行模式关联起来,你需要这个运行模式的目录下建立一个与/etc/rc.d/init.d/下启动脚本的 symbolic link,文件名的前缀通常为SXX,XX为数字,这个数字是用来控制该运行模式下服务的启动顺序。脚本的执行顺序是按照数字大小升序执行,就是数字越小越先执行,下面就是一个在运行模式中加入启动服务具体的例子:

$ cp myservice /etc/rc.d/init.d/

$ ln -s /etc/rc.d/init.d/myservice /etc/rc3.d/S99myservice

    这样,下次以Runlevel 3启动时,myservice就会自动启动。

以某个Runlevel启动

    你可以自己制定启动时所进入的Runlevel,如果你的系统使用的是lilo,在启动命令中将相应的部分为:

LILO: Linux 5

    如果你使用的是GRUB,在启动时你可以按住e键进入设置模式,相应的位置显示为:

kernel /vmlinuz ro root=/dev/hda1 5

Ubuntu 的运行级别

    默认安装的 Ubuntu Linux 会直接到图形界面。不过很多时候我并不需要在图形界面上做事,字符界面的命令行就足够了。想起在RedHat里可以通过修改 /etc/inittab 来把默认运行级别(Runlevel)从 5 改到 3 来实现,不幸的是 Ubuntu 中并没有这个文件。但是,Ubuntu 也是可以兼容 inittab 的,不过需要自己手工建一个罢了。

    Ubuntu 安装后默认的 Runlevel 为 2,这个可以用 runlevel 命令查看。因为 runlevel=2,所以在启动过程中自动执行 /etc/rc2.d/ 目录下的以S开头的脚本。Ubuntu之所以能直接启动到图形界面,是由于运行gdm所致。所以,只要把gdm的启动脚本禁用就可以了,方法就是把文件名的第一个字母 S 改成 K:

cd /etc/rc2.d
sudo mv S30gdm K30gdm

    这是一种方法,而且非常简单。但更方便的方法是设定一个新的 Runlevel,让那个新的 Runlevel作为启动到字符界面。这样便于管理。Ubuntu没有/etc/inittab文件,只好新建一个了,内容只有一行:

id:3:initdefault:

    这样下次启动时就会自动运行/etc/rc3.d/目录下的脚本,而不再是/etc/rc2.d/中的。所以接下来要进入到/etc/rc3.d/中,看看gdm的启动脚本文件名:

ls -l *gdm

    如果是以 S 打头的,把文件名改成以 K 打头的就行了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 系统的运行级别(Run Level) 的相关文章

随机推荐

  • 机器学习:利用神经网络实现简单的数字识别

    本学期的机器学习课程 作业参考了吴恩达大佬的手写数字识别实验 以下是完成的代码 import numpy as np import scipy io as sio from scipy optimize import fmin cg imp
  • 剖析:顺序表的增删改查

    目录 前言 一 什么是顺序表 1 1顺序表的两种形式 1 2动态顺序表 二 顺序表增删改查的接口实现 2 1结构体空间表示顺序表 2 2顺序表的初始化 2 2malloc新增空间 2 3增加元素 2 4删除元素 2 5查找元素 2 6指定位
  • 代码质量如何管控与提升

    开发团队代码质量如何做到管控与提升 我相信很多公司都会面临这样的问题 开发团队大人员技术水平参差不齐 代码写的不够规范 代码扫描问题修改太过滞后 代码库管理每个团队都不一致 偶尔还会合并丢失一些代码 code review费人费时效率不高
  • 前端必用正则(js)不间断更新```

    手机号 1 3 d 4 5 6 9 5 0 3 5 9 6 5 7 7 0 8 8 1 3 5 8 9 1 8 9 d 8 大写字母 A Z 日期 如 2019 07 10 d 4 d 1 2 1 d 1 2 email地址 w w w w
  • 【剑指offer-第二版】部分题目与解答【C++版本】

    20180612 求职在即 剑指offer 作为大家都推荐的一本应试宝典 确实也有刷一刷的必要 很多题目都比较经典 也涵盖了大多数的算法和数据结构 把自己刷题的过程做一个总结 权当是一个笔记 当前还处在未完成状态 希望自己能坚持做完 我自己
  • 仓位管理 – 2.实战篇

    上一篇 说到了仓位管理的重要性 这一篇则说明我对仓位控制算法的设计 以及最终使用的算法 由于内容较多 本文中我尽量只说重点 概念 算法 就是将一定可变范围内的一组输入条件 轮换到确定的输出时 所使用到的逻辑换算关系 仓位控制算法 其输入就是
  • study

    学习的博客地址 1 对自己python有帮助过的博客 http blog csdn net anbo724 article category 831447 另外有hadoop 等其他分类
  • 机器学习--人脸自动补齐(11)

    随机树ExtraTreeRegressor 分列点随机选取 不考虑信息增益 减少过拟合 获取一个对象所属的类名称 model class name import numpy as np import pandas as pd import
  • 肖臻老师区块链公开课笔记

    前段时间 区块链大火 出现了很多种基于区块链技术的政务应用 之前通过零散的网页信息和讲座 自我感觉理解了block chain原理 当看到各种区块链技术广泛应用时 自己以技术理解 反而对之不屑 当然 也怀疑自己还没有理解了区块链 带着这种好
  • 二、Flink使用异步算子请求高德地图获取位置信息

    目录 Flink异步算子使用介绍 Flink使用异步算子请求高德地图获取位置信息代码实现 相关阅读 Flink使用异步算子 线程池查询MySQL 1 概述 1 Flink异步算子使用介绍 1 异步与同步概述 同步 向数据库发送一个请求然后一
  • 一步步学习SPD2010--第二章节--处理SP网站(6)---- 探索SP网站

    SP技术没有一个界面 你可以通过使用Web浏览器或者兼容程序如Office 应用程序 包括SPD 你可以选择适合你必须完成的任务的接口 然而 根据你选择的程序 你可能有SP网站的不同视图 如果你使用MS Word 你只看到了网站和内容的一小
  • 爆肝整理 JVM 十大模块知识点总结,不信你还不懂

    01 JVM 内存结构 Java 虚拟机的内存空间分为 5 个部分 程序计数器 Java 虚拟机栈 本地方法栈 堆 方法区 JDK 1 8 同 JDK 1 7 比 最大的差别就是 元数据区取代了永久代 元空间的本质和永久 代类似 都是对 J
  • 【ESP32开发】——RGB LED灯(灯珠)点亮

    一 引言 本章内容主要介绍如何使用ESP32开发板点亮板载的RGB灯 使用的是ESP32 S3和ESP32 C3开发板 调用第三方库实现 由于网络上没有关于点亮ESP32板载RGB灯的资料 特此记录 二 ESP32 C3与ESP32 S3
  • python怎么批量处理数据_python操作数据之批量添加数据

    import pymysql import random import time from datetime import datetime type dict 测试01 001 测试02 002 测试03 003 测试04 004 fid
  • bind详解

    bind与占位符 绑定普通函数 绑定成员函数 绑定函数对象 如果你还在使用bind1st bind2nd 那么恐怕已经out了 Boost提供了更强大的武器bind 用于函数对象的绑定 bind接受的第一个参数必须是可调用对象f 包括函数
  • CentOS7.2安装Weblogic12c出现的问题

    Weblogic12c安装到步骤 Prerequisite Checks 时 会进行操作系统版本的校验 即checking operating system certification 此处操作系统版本会校验不过去 如下图 解决方案 修改
  • 刷脸生物支付有唯一性和不可替代性

    刷脸支付的时代 特别是刷脸支付解决了扫码支付需要手机为载体的痛点 在移动支付中生物支付以其唯一性和不可替代性 正在逐步替代传统的金融支付工具 引领未来支付结算模式 移动支付衍生的刷脸支付其核心技术就是人工智能中人脸识别技术 刷脸支付自然也是
  • 0027算法笔记——【回溯法】回溯法与装载问题

    1 回溯法 1 描述 回溯法是一种选优搜索法 按选优条件向前搜索 以达到目标 但当探索到某一步时 发现原先选择并不优或达不到目标 就退回一步重新选择 这种走不通就退回再走的技术为回溯法 2 原理 回溯法在问题的解空间树中 按深度优先策略 从
  • 自定义时间Toast(只弹一次)

    CToast类 package com pinkman dota util import com pinkman dota R import android content Context import android graphics C
  • Linux 系统的运行级别(Run Level)

    Linux 操作系统自从开始启动至启动完毕需要经历几个不同的阶段 这几个阶段就叫做 Runlevel 同样 当Linux操作系统关闭时也要经历另外几个不同的 Runlevel 下面详细介绍一下 Runlevel 并展示一些小技巧来让Linu