《Linux从小白到高手》理论篇:Linux的时间管理运行级别启动过程原理详解

news2024/11/23 3:49:01
  1. List item
    本篇将介绍Linux的时间管理&运行级别相关知识,并将深入介绍Linux的启动过程及原理。

Linux的时间管理

Linux 时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称 RTC)时钟。系统时钟是指当前 Linux Kernel 中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在BIOS 中进行设置。当 Linux 启动时,硬件时钟会去读取系统时钟的 设置,然后系统时钟就会独立于硬件运作。
Linux 中的所有命令(包括函数)都是采用的系统时钟设置。在 Linux 中,用于时钟查看和设置的命令主要有date、hwclock 和 clock。其中,clock 和 hwclock 用法相近,只用一个就行,只不过 clock 命令除了支持 x86 硬 件体系外,还支持 Alpha 硬件体系。

1、查看时间

查看系统时间:
使用 date 命令可以显示当前系统的日期和时间。例如:date,输出格式通常为“星期几 月份 日期 小时:分钟:秒 时区 年份”。

date +"%Y-%m-%d %H:%M:%S" 

可以以特定格式显示时间,如“2024-09-30 12:30:00”。
查看硬件时钟时间:

`sudo hwclock --show:`

显示硬件时钟时间。硬件时钟通常是计算机主板上的时钟芯片所保存的时间。

2、设置时间

设置系统时间:

sudo date -s "YYYY-MM-DD HH:MM:SS",

将系统时间设置为指定的时间格式,其中“YYYY-MM-DD HH:MM:SS”是具体的时间值。
例如:sudo date -s “2024-10-01 10:30:00”。
设置硬件时钟时间:

sudo hwclock --set --date="YYYY-MM-DD HH:MM:SS"

例如:sudo hwclock --set --date=“2024-10-01 10:30:00”。
同步系统时间和硬件时钟:
将系统时间写入硬件时钟:

sudo hwclock --systohc

将硬件时钟时间读取到系统时间:sudo hwclock --hctosys。

3、时区设置

查看当前时区:

`timedatectl | grep "Time zone"`

可以查看当前系统的时区设置。
cat /etc/timezone:在某些系统上也可以通过查看这个文件来确定时区。
设置时区:
使用 timedatectl 命令:

sudo timedatectl set-timezone timezone_name,

其中“timezone_name”是你想要设置的时区名称,如“Asia/Shanghai”。
直接修改配置文件:
对于基于 Debian 的系统,修改 /etc/timezone 文件,将其内容改为所需的时区名称,然后执行

sudo dpkg-reconfigure --frontend noninteractive tzdata 

使更改生效。
对于基于 Red Hat 的系统,修改 /etc/sysconfig/clock 文件,设置 ZONE 变量为所需的时区名称,如 ZONE=“Asia/Shanghai”,然后执行 sudo hwclock --systohc 同步硬件时钟。
4、时间同步服务
NTP(Network Time Protocol)服务:
安装:
在 Ubuntu 系统:sudo apt install ntp。
在 CentOS 系统:sudo yum install ntp。
配置:
主要配置文件通常是 /etc/ntp.conf。可以在这个文件中添加或修改时间服务器地址。例如:server ntp_server_address,其中 ntp_server_address 可以是公共的 NTP 服务器地址,如 pool.ntp.org、time.windows.com 等。
启动和管理:
启动服务:(不同系统服务名称可能略有不同)。

sudo systemctl start ntpd

停止服务:

sudo systemctl stop ntpd。

重启服务:

sudo systemctl restart ntpd。

设置服务在系统启动时自动启动:

sudo systemctl enable ntpd。

检查状态:

sudo systemctl status ntpd,

可以查看服务的运行状态、上次同步时间等信息。
chrony 时间同步服务:
安装:
在 Ubuntu 上可以使用 sudo apt install chrony,在 CentOS 上可以使用 sudo yum install chrony。
配置:
通常需要修改 /etc/chrony.conf 文件,添加或修改时间服务器地址。
启动和管理:
启动服务:

sudo systemctl start chronyd。

停止服务:

sudo systemctl stop chronyd。

重启服务:

sudo systemctl restart chronyd。

设置服务在系统启动时自动启动:

sudo systemctl enable chronyd。

检查状态:

sudo systemctl status chronyd。

Linux的运行级别

在 Linux 系统中,运行级别(runlevel)用于定义系统的不同运行状态。不同的运行级别会启动不同的服务集合,以满足特定的系统需求。

1. 运行级别的原理

在目录 /etc/rc.d/init.d 下有许多服务器脚本程序,一般称为服务(service), 在 /etc/rc.d 下有 7 个名为 rcN.d 的目录,其中 N=0-6,对应于系统的 7 个运行级别, rcN.d 目录下,都是一些符号链接文件,这些链接文件都指向 init.d 目录下的 service 脚本文件,这些链接文件的命名规则是 “K+nn+服务名” 或 “S+nn+服务名”,其中 nn 为 2 位数字:
例: rc3.d 目录下的链接文件 S80sendmail 就指向 service 脚本文件 …/init.d/sendmail系统会根据指定的 runlevel 进入对应的 rcN.d 目录,并按照文件名顺序检索目录下的链接文件:
• 对于以 K 为开头的链接文件,系统将终止对应的服务
• 对于以 S 为开头的链接文件,系统将启动对应的服务
通过这种方式来实现 “不同的运行级别运行不同的程序和服务”

2、运行级别的概念

传统的运行级别定义:
0:关机。
1:单用户模式,主要用于系统维护,如重置密码等。
2:多用户模式,没有网络服务。
3:多用户模式,有网络服务,通常是服务器的常用运行级别。
4:用户自定义运行级别,一般很少使用。
5:图形化多用户模式,类似于运行级别 3 但带有图形界面。
6:重启。
现代系统的变化:
许多现代 Linux 发行版,如 Systemd 主导的系统,运行级别的概念有所变化,但仍然保留了一些类似的功能划分。例如,Systemd 使用 “target” 来替代传统的运行级别,但其功能和目的在一定程度上与传统运行级别相似。

3、查看当前运行级别

使用 runlevel 命令可以查看系统当前的运行级别和上一次的运行级别。例如:输出可能是 “N 5”,其中 “N” 表示上一次运行级别未知,“5” 表示当前运行级别为图形化多用户模式。在 Systemd 系统中,可以使用以下命令查看当前的目标(类似于运行级别):systemctl get-default,它将显示当前系统的默认启动目标,例如 “graphical.target” 对应传统的运行级别 5。

4、切换运行级别

在传统的 init 系统中,可以使用 init 命令来切换运行级别。例如:sudo init 3 将系统切换到多用户模式(有网络服务)。在 Systemd 系统中,切换目标(类似运行级别)的方法如下:

sudo systemctl isolate multi-user.target 

相当于切换到传统的运行级别 3。

sudo systemctl isolate graphical.target 

相当于切换到传统的运行级别 5。

5、配置默认运行级别

对于传统的 init 系统:
编辑 /etc/inittab 文件可以配置系统的默认运行级别。例如,将 “id:5:initdefault:” 改为 “id:3:initdefault:” 可以将系统默认启动到多用户模式(有网络服务)。
在 Systemd 系统中:
使用 systemctl set-default 命令来设置默认启动目标。例如:

sudo systemctl set-default multi-user.target 

设置系统默认启动到类似于传统运行级别 3 的状态。

sudo systemctl set-default graphical.target 

设置系统默认启动到类似于传统运行级别 5 的状态。
了解和正确管理运行级别对于系统的稳定运行和满足特定需求非常重要。在进行运行级别切换或配置时,要谨慎操作,确保不会影响系统的正常运行和关键服务。

Linux的启动

1、Linux的启动流程

在这里插入图片描述
在这里插入图片描述
1.加载BIOS
计算机电源加电质检,首先加载基本输入输出系统(Basic Input Output System,BIOS),BIOS中包含硬件CPU、内存、硬盘等相关信息,包含设备启动顺序信息、硬盘信息、内存信息、时钟信息、即插即用(Plug-and-Play,PNP)特性等。加载完BIOS信息,计算机将根据顺序进行启动。
2.读取MBR
读取完BIOS信息,计算机将会查找BIOS所指定的硬盘MBR引导扇区,将其内容复制到0x7c00地址所在的物理内存中。被复制到物理内存的内容是Boot Loader,然后进行引导。
3.GRUB引导
GRUB启动引导器是计算机启动过程中运行的第一个软件程序,当计算机读取内存中的GRUB配置信息后,会根据其配置信息来启动硬盘中不同的操作系统。
4.加载Kernel
计算机读取内存映像,并进行解压缩操作,屏幕一般会输出“Uncompressing Linux”的提示,当解压缩内核完成后,屏幕输出“OK, booting the kernel”。系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。
5.设定Inittab运行等级
内核加载完毕,会启动Linux操作系统第一个守护进程init,然后通过该进程读取/etc/inittab文件,/etc/inittab文件的作用是设定Linux的运行等级。
6.加载rc.sysinit
读取完运行级别,Linux系统执行的第一个用户层文件/etc/rc.d/rc.sysinit,该文件功能包括:设定PATH运行变量、设定网络配置、启动swap分区、设定/proc、系统函数、配置Selinux等。
7.加载内核模块
读取/etc/modules.conf文件及/etc/modules.d目录下的文件来加载系统内核模块。该模块文件,可以后期添加或者修改及删除。
8.启动运行级别程序
根据之前读取的运行级别,操作系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。
9.读取rc.local文件
操作系统启动完相应服务之后,会读取执行/etc/rc.d/rc.local文件,可以将需要开机启动的任务加入到该文件末尾,系统会逐行去执行并启动相应命令。
10.执行/bin/login程序
执行/bin/login程序,启动到系统登录界面,操作系统等待用户输入用户名和密码,即可登录到Shell终端,如图3-7所示,输入用户名、密码即可登录Linux操作系统,至此Linux操作系统完整流程启动完毕。,

2,Linux中常用的启动引导工具:

1、GRUB(Grand Unified Bootloader)
功能特点:
–是最常见的 Linux 启动引导程序之一。
–支持多操作系统启动,可以在一台计算机上引导多个不同的操作系统,如 Linux、Windows 等。
–提供菜单界面,用户可以在启动时选择要启动的操作系统或内核版本。
–可以通过编辑配置文件来定制启动选项,如设置默认启动项、调整内核参数等。
使用方法:
配置文件通常是 /boot/grub/grub.cfg,但不建议直接编辑这个文件,而是通过修改 /etc/default/grub 和运行 sudo update-grub 命令来更新 GRUB 配置。在 GRUB 菜单界面,可以使用键盘方向键选择启动项,按回车键启动。还可以按 e 键编辑启动项的内核参数等。
2、LILO(Linux Loader)
功能特点:
–早期的 Linux 启动引导程序。
–相对简单,占用空间小。
–可以直接安装在主引导记录(MBR)中。
使用方法:
–配置文件是 /etc/lilo.conf,修改配置后需要运行 sudo lilo 命令使配置生效。
–在启动时,LILO 会显示一个简单的启动菜单,用户选择启动项即可。
3、Systemd-boot
功能特点:
–是一种相对较新的启动引导程序,通常与 Systemd 初始化系统配合使用。
–简洁高效,快速启动。
–支持 UEFI 系统,并且可以自动检测和加载内核及初始 RAM 磁盘。
使用方法:
–配置文件通常位于 /boot/loader/entries/ 目录下,以 .conf 为后缀的文件。
–系统会根据配置文件自动生成启动菜单,用户在启动时选择相应的启动项。
这些启动引导工具在不同的 Linux 发行版和场景中可能会有不同的使用和配置方法。在选择启动引导工具时,需要考虑系统的需求、硬件环境和个人偏好等因素。

本篇完结。
码字不易,宝贵经验分享不易,请各位支持原创,转载注明出处,多多关注作者。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2188614.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

THREE.JS Blinn–Phong反射模型 高光shader

文章目录 参考效果核心全部代码更新: 多点光(使用结构体)TODO: 新增灯光更新着色器 (threejs也是这么做的 所以动态灯光开销颇大(动态visible不需要重新构建着色器)) 参考 Blinn–Phong reflection model 效果 平滑着色平直着色…

无IDEA不Java:快速掌握Java集成开发环境

IntelliJ IDEA是一种强大的Java集成开发环境,是Java开发人员的首选工具之一。本文将介绍IDEA的基本使用方法和常用功能,以帮助初学者快速上手。 安装和配置 首先,需要下载并安装IntelliJ IDEA。在安装完成后,需要配置JDK&#xff…

OpenAI 再现变革风暴!-- 高管离职潮与营利化转型背后的深层次变动

OpenAI 正处于历史的转折点。作为全球最知名的 AI 公司之一,OpenAI 一直以来以其领先的人工智能技术和开放的研发精神吸引了大量的关注与支持。然而,近期的一系列高管离职以及转型为营利性公司的计划,引发了外界的广泛讨论。本文将深入探讨这…

使用Java调用GeoTools实现全球国家矢量数据入库实战

目录 前言 一、相关数据介绍 1、无空间参考的数据 2、有空间参考的数据 3、空间信息表物理模型 二、全球国家空间数据入库 1、后台实体类图 2、后台实体对象关键代码 三、时空数据入库实践 1、读取无空间参考数据 2、入库成果及注意事项 四、总结 前言 在当今世界&…

【LuBase低代码框架】动态数据源服务介绍

功能介绍: 可以通过配置一个QueryOption对象或者一条select 查询语句,返回当前应用下的数据,避免后端写代码开发。 使用方法: 1. 动态服务需要通过/invoke/datasource和/invoke/datasourceNoRight 地址发起调用 2. 可使用参数…

Gaussian-splatting 项目环境配置笔记(Win11)

如果你是配置别的项目的过程中用到了3D GS相关的内容,然后这部分内容环境一直配不好,也可以跟随这个博客配一下环境,配完后起码3D GS部分就搞定了。 文章目录 概述项目链接:VS2019直接下载链接CUDA不同版本下载链接安装Condasetup…

Java开发每日一课:21世纪最流行的语言,Java为什么这么火?

自从进入21世纪以来,Java在TIOBE语言排行榜一直稳居前2名,占有率一直在12%以上。从国内各大招聘网站的岗位需求和培训班的畅销课程上看,Java一直稳居榜首,可以说Java是21世纪最流行的语言。 作为一个1995年才推出的语言&#xff0…

JVM(HotSpot):字符串常量池(StringTable)

文章目录 一、内存结构图二、案例讲解三、总结 一、内存结构图 JDK1.6 JDK1.8 我们发现,StringTable移入了Heap里面。所以,应该想到,StringTable将受到GC管理。 其实,1.6中,在方法区中的时候,也是受GC管…

01 排列选票

题目&#xff1a; 桶排序&#xff1a; #include<bits/stdc.h> using namespace std; #define M 100005 int a[M];int main() {int n,m;cin>>n>>m;for(int i1;i<m;i){int temp;cin>>temp;a[temp];}for(int i1;i<n;i){for(int j1;j<a[i];j){co…

OpenVINO基本操作流程

环境配置&#xff1a; conda env list:可以查看有哪些环境 conda activate intel:启动某个环境 pip list&#xff1a;可以查看此环境下都下载了哪些软件包 from openvino.inference_engine import IEcore#从OpenVINO推理引擎中导入IECore类 import numpy as np import cv2 1&…

基于GitLab 的持续集成环境

一.技术基础 Gitlab: 是一个用于仓库管理系统的开源项目&#xff0c;使用Git作为代码管理工具&#xff0c;并在此基础上搭建起来的Web服务 GitRunner:用于运行您的作业并将结果发送回GitLab。它与GitLab CI一起使用&#xff0c;GitLab CI是GitLab随附的开源持续集成服务&…

SpringCloud微服务搭建实战

文章目录 前言Nacos配置和项目结构图示数据库和脚本准备seata数据库transaction_database数据库 一、Spring Boot、Spring Cloud、Sping Cloud Alibaba二、seata安装seata配置修改Nacos新建配置文件seata-server.properties 三、创建Microservice-Project项目四、创建api-modul…

【HTML5】html5开篇基础(5)

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…

使用MTVerseXR SDK实现VR串流

1、概述​ MTVerseXR SDK 是摩尔线程GPU加速的虚拟现实&#xff08;VR&#xff09;流媒体平台&#xff0c;专门用于从远程服务器流式传输基于标准OpenXR的应用程序。MTVerseXR可以通过Wi-Fi和USB流式将VR内容从Windows服务器流式传输到XR客户端设备, 使相对性能低的VR客户端可…

芯片公司产品简介

台湾新唐科技:ARM内核-nuvoTon stc&#xff08;宏晶&#xff09;&#xff1a;STC 8051 系列、STC32 8051系列、STC32 ARM系列 兆易&#xff1a;Arm Cortex-M内核和RISC-V内核 意法&#xff1a; 乐鑫科技&#xff1a; MCU厂家 GPU厂家 MCU与MPU 引用链接&#xff1a; http://…

AutoCAD学习

AutoCAD学习 最基本操作 命令用途说明空格键确认键也可以是重复刚才的命令回车键也是确认键鼠标右键也可以选择确认LINE、L直线命令绘制直线DLI线性尺寸标注DIMLINEAR鼠标滚轮滚动放大缩小视图界面鼠标中键按住移动视图DAL对齐线性标注DIMALIGNED F8 正交模式ORTHOMODE Tab 切换…

漆包线称重系统/自动称重/项目合作

万界星空科技漆包线行业称重系统实现自动称重的方式主要依赖于现代数字电子称重技术、计算机网络技术以及相关的软件系统的集成。以下是对该系统如何实现自动称重的详细解释&#xff1a; 一、硬件基础 称重设备&#xff1a; 系统采用高精度的电子秤作为称重设备&#xff0c;这…

TOGAF框架中的最佳实践与实施技巧:推动企业数字化转型的实战指南

企业的数字化转型已经成为全球商业界的一大趋势&#xff0c;而实现这一转型不仅需要技术的创新&#xff0c;还需要清晰的架构规划和实施策略。TOGAF&#xff08;The Open Group Architecture Framework&#xff09;作为全球广泛应用的企业架构标准&#xff0c;为企业提供了行之…

Pikachu-File Inclusion- 本地文件包含

前端每次挑选篮球明星&#xff0c;都会通过get请求&#xff0c;传了文件名&#xff0c;把页面展示出来&#xff0c;由于文件名时前端传给后台;并且查看源码&#xff0c;没有对参数做限制&#xff1b; 尝试直接从前端修改filename 参数&#xff1b; filename../../../../../../…

24-10-3-读书笔记(二十三)-《一个孤独漫步者的遐想》上([法] 让·雅克·卢梭 [译]陈阳)

文章目录 《一个孤独漫步者的遐想》上&#xff08;[法] 让雅克卢梭 [译]陈阳&#xff09;卢梭生平大事年表总结 《一个孤独漫步者的遐想》上&#xff08;[法] 让雅克卢梭 [译]陈阳&#xff09; 十月第三篇&#xff0c;看书看个爽&#xff0c;今天是法国哲学家卢梭晚年的著作《一…