Linux-Learning

@TOC

Linux(from 菜鸟教程)

Linux 系统启动过程

  1. 内核的引导
    当计算机打开电源后,首先是BIOS[^1]开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。 操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。

  2. 运行init [^2]
    init 进程是系统所有进程的起点,没有这个进程,系统中任何进程都不会启动。 init 程序首先是需要读取配置文件 /etc/inittab
    // 运行级别 [^3]

  3. 系统初始化
    在init的配置文件中有这么一行: si::sysinit:/etc/rc.d/rc.sysinit 它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。 它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。

  4. 建立终端

  5. 用户登录系统
    一般来说,用户的登录方式有三种:
    (1)命令行登录
    (2)ssh登录
    (3)图形界面登录


Linux 文件基础属性

通过这两个命令修改文件或目录的所属用户与权限

  • chown (change owner) : 修改所属用户与组。
  • chmod (change mode) : 修改用户的权限。
  • 使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组

每个文件的属性由左边第一部分的 10 个字符来确定 更改文件属性:

  1. chgrp:更改文件属组
    语法:chgrp [-R] 属组名 文件
    -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上 -R 的参数,那么该目录下的所有文件的属组都会更改。
  2. chown:更改文件所有者(owner),也可以同时更改文件所属组
    语法:
    chown [–R] 所有者 文件名
    chown [-R] 所有者:属组名 文件名
  3. chmod: 更改文件9个属性
    Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限
    各权限的数字代表为:
    r:4 w:2 e:1
    每种身份的权限是数字相加,比如:当权限为: -rwxrwx--- 分数则是:
    owner = rwx = 4+2+1 = 7
    group = rwx = 4+2+1 = 7
    others= — = 0+0+0 = 0
    所以权限数字就是770
    语法:
    chmod [-R] xyz 文件或目录
    还可以用符号来修改权限,比如:
    chmod u=rwx,g=rx,o=r test1 // 修改 test1 权限

linux的目录与文件管理基本上是在命令行实现的,把这一部分放到shell-learning里。

Linux用户与用户组管理

一 Linux用户账号管理

  1. 添加新的用户账号使用useradd命令,其语法如下:
    useradd 选项 用户名
    选项:
  • -c comment 指定一段注释性描述。
  • -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
  • -g 用户组 指定用户所属的用户组。
  • -G 用户组,用户组 指定用户所属的附加组。
  • -s Shell文件 指定用户的登录Shell[^4]。
  • -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。

用户名: 指定新账号的登录名。 2. 删除账号 语法: userdel 选项 用户名 一般常用的选项是-r,它的作用是把用户的主目录一起删除 3. 修改账号 语法: usermod 选项 用户名 选项跟useradd选项属性一样 4. 用户口令的管理 指定和修改用户口令的Shell命令是passwd。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。 命令的格式为: passwd 选项 用户名 可使用的选项:

  • -l 锁定口令,即禁用账号。
  • -u 口令解锁。
  • -d 使账号无口令。
  • -f 强迫用户下次登录时修改口令。

二 Linux用户组管理 增加新的用户组,命令如下:

groupadd 选项 用户组

选项:

-g GID 指定新用户组的组标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

删除用户组:

groupdel 用户组

修改用户组:

groupmod 选项 用户组

选项:

-g GID 为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组 将用户组的名字改为新名字

如果一个用户属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限

newgrp root 
// 将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组

/etc/passwd文件是用户管理工作涉及的最重要的一个文件

Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。 用命令cat /etc/passwd得到类似于

root:x:0:0:root:/root:/bin/bash

这样的多行结果,其格式和具体含义是:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

  • 用户名就是用户账号,不能有冒号( :),为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。
  • 口令就是用户口令的加密串,不是明文,但是现在许多Linux系统使用shadow技术,把加密后的口令放到/etc/shadow里,而一般在/etc/passwd里存放一个特殊字符比如x或者*
  • 用户标识号是一个整数,系统内部用它来标识用户一般情况下它与用户名是一一对应的。
    如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。
    通常用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
  • 组标识号代表用户所属的用户组,对应着/etc/group文件中的一条记录
  • 注释性描述(也称为 GECOS 字段 或 用户信息字段),对应于usradd -c,用于存储用户附加信息,或者兼容历史系统:字段名 “GECOS” 源自早期 Unix 系统与 GE 大型机操作系统(General Electric Comprehensive Operating System)的兼容需求。
  • 主目录就是用户的起始目录
  • 登录shell :用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell
  • 伪用户: 伪用户(系统用户) 是 Linux/Unix 系统中一类特殊的用户账户,不供人类登录使用,而是专为运行系统服务、守护进程或管理资源而创建

Linux磁盘管理

  1. df(英文全称:disk free):列出文件系统的整体磁盘使用量
    语法:
df  选项 目录或文件名

选项:

  • -h:以人类可读的方式显示输出结果(例如,使用 KB、MB、GB 等单位)。
  • -T:显示文件系统的类型。
  • -t <文件系统类型>:只显示指定类型的文件系统。
  • -i:显示 inode 使用情况。
  • -H:该参数是 -h 的变体,但是使用 1000 字节作为基本单位而不是 1024 字节。这意味着它会以 SI(国际单位制)单位(例如 MB、GB)而不是二进制单位(例如 MiB、GiB)来显示磁盘使用情况。
  • -k:这个选项会以 KB 作为单位显示磁盘空间使用情况。
  • -a:该参数将显示所有的文件系统,包括虚拟文件系统,例如 procsysfs 等。如果没有使用该选项,默认情况下,df 命令不会显示虚拟文件系统。
  1. du(英文全称:disk used):检查磁盘空间使用量
    语法:
du  选项 目录或文件名

选项:

  • -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
  • -h :以人们较易读的容量格式 (G/M) 显示;
  • -s :仅显示指定目录或文件的总大小,而不显示其子目录的大小。
  • -S :包括子目录下的总计,与 -s 有点差别。
  • -k :以 KBytes 列出容量显示;
  • -m :以 MBytes 列出容量显示;
    df 不一样的是,du 这个命令其实会直接到文件系统内去搜寻所有的文件数据

Linux yum

yum 是 Yellowdog Updater Modified 的缩写,是 Linux 系统中基于 RPM 包管理 的软件包管理器,主要用于 Red Hat 系发行版(如 CentOS、Fedora 等)。它的核心功能是帮助用户自动处理软件包的 依赖关系,并完成安装、更新、卸载等操作。 基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。 常用命令:

  1. 列出所有可更新的软件清单命令:yum check-update
  2. 更新所有软件命令:yum update
  3. 仅安装指定的软件命令:yum install <package_name>
  4. 仅更新指定的软件命令:yum update <package_name>
  5. 列出所有可安裝的软件清单命令:yum list
  6. 删除软件包命令:yum remove <package_name>
  7. 查找软件包命令:yum search <keyword>
  8. 清除缓存命令:
  • yum clean packages: 清除缓存目录下的软件包
  • yum clean headers: 清除缓存目录下的 headers
  • yum clean oldheaders: 清除缓存目录下旧的 headers
  • yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers

配置yum源: 首先备份/etc/yum.repos.d/CentOS-Base.repo

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载对应版本 repo 文件, 放入 /etc/yum.repos.d/ (操作前请做好相应备份)

CentOS5 :http://mirrors.163.com/.help/CentOS5-Base-163.repo
CentOS6 :http://mirrors.163.com/.help/CentOS6-Base-163.repo
CentOS7 :http://mirrors.163.com/.help/CentOS7-Base-163.repo
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
mv CentOS6-Base-163.repo CentOS-Base.repo

运行以下命令生成缓存

yum clean all
yum makecache

Linux apt

在 Linux(特别是 Debian/Ubuntu 系统)中,apt(Advanced Package Tool)是用于管理软件包的核心工具,常用于安装、更新、卸载软件及系统升级。 apt 命令执行需要root权限。 常用命令:

  • 列出所有可更新的软件清单命令:sudo apt update

  • 升级软件包:sudo apt upgrade

  • 列出可更新的软件包及版本信息:apt list --upgradable

  • 升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade

  • 安装指定的软件命令:sudo apt install <package_name>

  • 安装多个软件包:sudo apt install <package_1> <package_2> <package_3>

  • 更新指定的软件命令:sudo apt update <package_name>

  • 显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show <package_name>

  • 删除软件包命令:sudo apt remove <package_name>

  • 清理不再使用的依赖和库文件: sudo apt autoremove

  • 移除软件包及配置文件: sudo apt purge <package_name>

  • 查找软件包命令: sudo apt search <keyword>

  • 列出所有已安装的包:apt list --installed

  • 列出所有已安装的包的版本信息:apt list --all-versions



[^1]: BIOS(Basic Input/Output System,基本输入输出系统)是计算机启动时运行的第一个固件程序,直接存储在主板的一块芯片中。它负责计算机最基础的硬件初始化、自检和操作系统引导,是硬件与软件之间的桥梁。 BIOS 与 UEFI 的关系 • 传统 BIOS:使用 16 位汇编语言,界面简单(纯文本),仅支持小容量硬盘(MBR 分区),启动速度较慢。 • UEFI(统一可扩展固件接口):现代替代方案,支持图形化界面、鼠标操作、快速启动,兼容大容量硬盘(GPT 分区),安全性更高(如 Secure Boot 防病毒篡改)。 • 现状:目前大多数新设备(包括联想电脑)已采用 UEFI,但仍习惯称为“BIOS设置”。

[^2]:init 是类 Unix 系统(如 Linux)中第一个由内核启动的用户级进程(PID=1),负责初始化系统环境、启动其他服务和守护进程(如网络、登录界面等)。 • 常见实现包括传统的 SysV init、改进版的 Upstart,以及现代广泛使用的 systemd。 • 作用:管理启动流程、守护进程、系统运行级别(如重启、关机模式)等。

[^3]:运行级别(Runlevel)是类Unix系统(如Linux)中用于定义系统不同工作模式的概念。每个运行级别对应一组特定的系统服务或功能,决定了系统启动时加载哪些程序或服务。通过切换运行级别,用户可以控制系统的状态(如单用户维护模式、多用户模式、图形界面模式等)。

1.运行级别 0:关机(系统默认不会设置为此级别,需手动触发)。

2.运行级别 1:单用户模式(仅root用户可登录,用于系统维护,无网络服务)。

3.运行级别 2:多用户模式(无网络)(部分系统可能不启用网络服务)。

4.运行级别 3:多用户模式(命令行界面 + 完整网络服务)(服务器常用)。

5.运行级别 4:保留未定义(用户可自定义用途)。

6.运行级别 5:图形界面模式(桌面环境,如GNOME或KDE)。

7.运行级别 6:重启(需手动触发

[^4]:用户的登录Shell是用户成功登录操作系统时自动启动的命令行解释器(如 Bash、Zsh 等),负责执行用户的命令、配置环境变量,并初始化用户的工作环境。

关键点:

1.作用 读取并执行初始化脚本(如~/.bash_profile、~/.bashrc 等),配置环境变量、别名等。 提供用户与操作系统的交互界面,执行命令或脚本。

2.与非登录Shell的区别 登录Shell:用户登录时启动(如通过SSH、终端或图形界面登录),会加载 /etc/profile 和用户目录下的配置文件(如 ~/.profile)。 非登录Shell:在已登录后手动启动的Shell(如终端中直接运行 bash),仅加载 ~/.bashrc 等部分配置。

3.查看用户的登录Shell 查看 /etc/passwd 文件中的最后字段: cat /etc/passwd | grep 用户名 例如: user :x:1000:1000:User Name:/home/user:/bin/bash → 登录Shell为 /bin/bash。

4.修改登录Shell 使用 chsh 命令: chsh -s /path/to/shell # 例如 chsh -s /bin/zsh

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇