76、Linux系统操作知识与技巧解析

Linux系统操作知识与技巧解析

一、字符集与本地化设置

1.1 字符集选择

在Linux系统中,UTF - 8字符集复制了ASCII字符集,并且是大多数美国Linux安装的默认字符集。而Unicode、UTF - 16和UTF - 32字符集使用超过1个字节来表示字符,所以它们不常用于英语字符。locale命令用于显示本地化环境变量及其值,它并非字符集代码。具体信息如下表:
| 字符集/命令 | 特点 | 是否适用于英语字符 |
| — | — | — |
| UTF - 8 | 复制ASCII字符集,多数美国Linux安装默认 | 是 |
| Unicode | 使用超1字节表示字符 | 否 |
| UTF - 16 | 使用超1字节表示字符 | 否 |
| UTF - 32 | 使用超1字节表示字符 | 否 |
| locale | 显示本地化环境变量及值,非字符集代码 | - |

1.2 本地化显示

要显示Linux系统上安装的所有本地化信息,可使用localectl命令的list - locales选项。而timedatectl命令用于显示本地时间和日期,locale命令显示本地化环境变量设置,LANG和LC_ALL环境变量用于设置当前本地化,它们都不能显示系统上安装的本地化信息。

二、用户和组管理

2.1 用户账户文件字段

2.1.1 /etc/passwd文件

该文件记录中的合法字段包括用户名、密码(通常只包含“x”)和UID。而密码更改日期和特殊标志是/etc/shadow文件中的字段。

2.1.2 /etc/shadow文件

该文件记录中的合法字段有密码过期日期、账户过期日期和密码。注释和默认shell是/etc/passwd文件中的字段。

2.1.3 两文件相同数据字段

在/etc/passwd和/etc/shadow记录中,只有用户名这一字段包含相同数据。虽然两文件都有密码字段,但数据不同,密码最好存在于/etc/shadow文件中。账户过期日期只存在于/etc/shadow文件,UID和GID字段只存在于/etc/passwd文件。

2.2 用户账户查看与操作

2.2.1 查看用户记录

若要查看NUhura账户在/etc/passwd文件中的记录,可使用以下命令:
- cat /etc/passwd(效率不高)
- grep NUhura /etc/passwd
- getent passwd NUhura

而getent命令若将用户名和文件名弄反则错误,passwd NUhura命令用于更改账户密码而非显示文件记录。

2.2.2 查看账户创建配置

使用useradd -D命令可查看/etc/default/useradd文件中的账户创建配置指令。/etc/passwd、/etc/shadow和/etc/group文件不包含账户创建配置指令,/etc/login.defs文件虽包含,但不能用useradd -D命令显示。

2.2.3 账户创建问题分析

若创建用户账户时未创建主目录,很可能是因为CREATE_HOME指令未设置或设置为“no”。HOME指令确定创建新账户主目录时使用的基本目录名,若未使用超级用户权限则无法创建账户,INACTIVE指令与账户何时被视为非活动状态有关,EXPIRE指令与账户过期有关,与主目录创建无关。

2.2.4 账户删除

要立即删除KSingh账户及其所有主目录文件,需使用超级用户权限并执行userdel -r KSingh命令。usermod命令没有 -r选项,rm -r /home/KSingh命令仅删除账户主目录文件,userdel命令无选项时仅删除账户,usermod命令的 -d选项用于更改账户主目录。

2.2.5 账户记录操作

passwd、usermod、userdel和chage命令都能以某种方式操作(或删除)账户的/etc/shadow文件记录数据。而getent命令只能显示/etc/shadow文件中的选定记录,不能操作文件中的数据记录。

2.3 组管理

2.3.1 临时组切换

要临时从账户的默认组切换到另一个有成员资格的组,可使用newgrp命令。usermod命令虽能实现切换,但不适合临时情况,groups命令用于显示组信息,groupadd和groupmod命令用于组管理,均不能临时切换账户的默认组。

2.3.2 组添加成员

若要将JKirk添加到NCC - 1701组且不删除其之前的组成员资格,可使用usermod -aG NCC - 1701 JKirk命令。usermod -g NCC - 1701 JKirk命令会更改JKirk账户的主组,选项B的命令会添加JKirk到NCC - 1701组但删除其之前的组成员资格,groupadd NCC - 1701命令仅添加NCC - 1701组,groupmod命令用于修改组,使用该命令会有不良结果。

2.3.3 查看组成员

要查看NCC - 1701组的各个成员,可使用getent group NCC - 1701和grep NCC - 1701 /etc/group命令。groups命令用于查看账户的各种组成员资格,注意不要将/etc/group文件名误写为“groups”。

2.4 用户环境文件

2.4.1 骨架目录

骨架目录/etc/skel通常包含在创建账户主目录时复制到该目录的用户环境文件。而包含“home”的目录是用户环境文件的存放位置,并非来源。/etc/目录存放全局环境文件。

2.4.2 用户环境文件执行顺序

若在用户账户的主目录中找到.bash_profile用户环境文件,则该文件会首先运行。若.bash_login和.profile用户环境文件与.bash_profile文件同时存在于用户主目录中,它们将被忽略。.bashrc文件通常在交互式登录会话中由其他用户环境文件调用执行,.bash.bashrc文件不存在。

2.5 当前账户信息显示

whoami、who am i和id命令都能显示发出命令的当前账户的信息。而cat命令可能显示账户主目录中的用户环境文件,但不显示账户相关信息。

2.6 CPU负载和用户信息显示

w命令可显示过去1、5和15分钟的CPU负载信息以及当前访问系统的用户数据。who命令显示当前登录到系统的用户信息,id命令显示用户账户信息,whoami命令仅显示当前发出命令的用户的用户名,last命令显示用户账户的过去和现在的系统访问信息,但这些命令都不显示CPU负载数据。

2.7 last命令数据来源

last命令默认从/var/log/wtmp文件中提取数据。w命令使用/var/run/utmp文件中的数据,last命令也可从旧的保存的wtmp文件(如/var/log/wtmp.1)中提取信息,但默认不这样做。/etc/shadow和/etc/passwd文件不包含可用于last命令的数据。

三、存储处理

3.1 存储设备类型

固态驱动器(SSD)存储设备使用集成电路来存储数据。而SATA、SCSI和PATA是驱动器连接类型,不是存储设备类型。硬盘驱动器(HDD)存储设备使用磁盘盘片和读写头来存储数据,并非集成电路。

3.2 SCSI设备文件

在Linux的/dev文件夹中,为SCSI设备创建名为sdx的文件。对于第二个SCSI设备,会创建/dev/sdb文件。/dev/hdb文件代表连接到系统的第二个HDD驱动器,/dev/sda代表连接到系统的第一个SCSI设备。选项C和D代表分区,而非整个驱动器。

3.3 存储设备挂载

udev程序在Linux系统后台运行,可检测并挂载连接到系统的存储设备。mkfs程序用于在分区上创建文件系统,fsck程序用于修复文件系统,umount程序用于卸载文件系统,mount程序用于手动挂载文件系统,但它们都不能像udev那样在后台自动检测设备。

3.4 设备链接文件

udev程序在/dev/disk/by - id文件夹中创建与存储设备的原始设备文件链接的文件,这些文件通过制造商信息(包括分配给设备的序列号)来标识。/dev/disk/by - path文件夹根据驱动器与系统的连接来链接文件,/dev/sdb文件代表分配给设备的原始设备文件,/dev/disk/by - uuid文件夹包含基于设备UUID值的永久链接文件,/dev/mapper文件夹包含LVM和多路径系统的虚拟驱动器文件。

3.5 分区管理工具

GNU gparted程序提供图形窗口来管理设备分区。而gdisk、fdisk和parted程序都是命令行分区工具,fsck程序用于修复文件系统,不能创建或修改分区。

3.6 文件系统插入

Linux使用挂载点将存储设备上的文件系统插入到虚拟目录中。与Windows不同,Linux不为存储设备分配驱动器字母。/dev文件用作存储设备的原始设备,/proc和/sys文件夹用于内核显示和更改存储设备信息,它们都不能将文件系统添加到虚拟目录中。

3.7 文件系统类型

ext文件系统是Linux中最初使用的文件系统,ext4是其最新版本。reiserFS和btrfs文件系统是与ext文件系统分开创建的专用文件系统,nfs文件系统用于跨网络共享文件和文件夹,不是最初的Linux文件系统。

3.8 文件系统创建与操作

3.8.1 创建文件系统

mkfs程序可在分区上创建新的文件系统。fdisk、gdisk和parted程序用于创建或修改分区,但不处理安装在其上的文件系统,fsck程序用于修复文件系统,不能创建文件系统。

3.8.2 插入文件系统

mount程序可将分区上的文件系统插入到虚拟目录中。fsck程序用于修复文件系统,umount程序用于从虚拟目录中移除文件系统,fdisk程序用于对设备进行分区,mkfs程序用于创建文件系统,它们都不能将文件系统插入到虚拟目录中。

3.8.3 修复文件系统

fsck程序可修复损坏的文件系统,而mount、umount、fdisk和mkfs程序都不具备此功能。

四、文件保护

4.1 备份策略

为满足每周进行一次完整存档并每日进行增量备份的要求,可采用每周安排一次完整存档并每日实施差异备份(备份自上次完整存档以来新的或修改的数据)的策略。只每天进行增量备份而不定期进行完整存档会导致数据恢复时间过长,只每天进行差异备份而不每周进行完整存档也不符合要求,只进行增量备份在数据恢复时效率不如差异备份。

4.2 数据压缩

gzip实用程序可压缩数据文件并为其添加.gz文件扩展名。而xz、bzip2和zip压缩实用程序压缩数据文件后会添加不同的文件扩展名,dd实用程序不是压缩程序。

4.3 文件归档

要快速创建虚拟目录结构中不同文件的存档,最佳实用程序是cpio程序。可使用find命令定位文件,然后将结果通过管道传递给cpio实用程序。虽然tar实用程序使用SNAR文件,但在这种情况下不是最有效的程序,dd实用程序用于整个磁盘或分区,rsync和zip程序在这种情况下也不是最有效的实用程序。

4.4 tar命令选项

tar选项 -cJvf可使用最高压缩实用程序xz创建tarball,并通过详细选项让管理员在将文件复制到压缩存档时查看文件。选项A和B中的开关执行提取操作,而非创建操作;选项C使用 -z开关采用gzip压缩;选项D缺少详细开关。

4.5 dd命令使用

正确使用dd命令可完成相应任务,若输入和输出文件弄反,会破坏/dev/sdc驱动器上的数据。dd命令若使用零填充/dev/sdc驱动器,也不符合要求。

综上所述,掌握这些Linux系统的操作知识和技巧,能帮助我们更高效地管理系统、处理存储和保护文件。在实际操作中,要根据具体需求选择合适的命令和方法。

五、存储与文件操作的流程梳理

5.1 存储设备挂载流程

当有新的存储设备连接到Linux系统时,整个挂载过程可以用以下mermaid流程图表示:

graph LR
    A[设备连接] --> B[udev检测]
    B --> C{是否已配置挂载规则}
    C -->|是| D[自动挂载]
    C -->|否| E[手动挂载准备]
    E --> F[确定挂载点]
    F --> G[使用mount命令挂载]
    D --> H[设备可用]
    G --> H

具体步骤如下:
1. 设备连接 :将存储设备(如USB驱动器、外部硬盘等)连接到Linux系统。
2. udev检测 :udev程序在后台运行,自动检测到新连接的设备。
3. 检查挂载规则 :判断系统是否已经为该设备配置了挂载规则。
4. 自动挂载 :如果有配置规则,udev会根据规则自动将设备挂载到指定位置。
5. 手动挂载准备 :若没有配置规则,则需要手动进行挂载操作。
6. 确定挂载点 :选择一个合适的目录作为挂载点,例如 /mnt/usb
7. 使用mount命令挂载 :执行 mount /dev/sdx /mnt/usb (其中 /dev/sdx 是设备对应的文件, /mnt/usb 是挂载点)。
8. 设备可用 :挂载完成后,就可以通过挂载点访问设备中的文件。

5.2 文件备份与恢复流程

为了更好地保护数据,需要制定合理的备份与恢复策略,其流程如下:

graph LR
    A[制定备份策略] --> B[选择备份工具]
    B --> C[执行备份操作]
    C --> D[存储备份文件]
    D --> E{是否需要恢复数据}
    E -->|是| F[选择恢复工具]
    E -->|否| G[定期检查备份文件]
    F --> H[执行恢复操作]
    H --> I[验证恢复结果]
    G --> C

详细步骤说明:
1. 制定备份策略 :根据数据的重要性和变化频率,确定备份的时间间隔和方式,如每周进行一次完整备份,每天进行差异备份。
2. 选择备份工具 :根据备份需求选择合适的工具,如 tar cpio 等。
3. 执行备份操作 :按照备份策略和选择的工具进行备份,例如使用 tar -cJvf backup.tar.xz /path/to/files 进行文件备份。
4. 存储备份文件 :将备份文件存储在安全的位置,如外部存储设备或远程服务器。
5. 检查是否需要恢复数据 :在需要恢复数据时,进入恢复流程;否则,定期检查备份文件的完整性。
6. 选择恢复工具 :根据备份时使用的工具选择相应的恢复工具。
7. 执行恢复操作 :使用恢复工具将备份文件恢复到指定位置,如 tar -xJvf backup.tar.xz -C /path/to/restore
8. 验证恢复结果 :检查恢复的数据是否完整、可用。

六、常见问题及解决方法

6.1 用户账户创建问题

在创建用户账户时,可能会遇到一些问题,以下是常见问题及解决方法的表格:
| 问题描述 | 可能原因 | 解决方法 |
| — | — | — |
| 创建账户时未创建主目录 | CREATE_HOME指令未设置或设置为“no” | 编辑 /etc/default/useradd 文件,将 CREATE_HOME 设置为“yes” |
| 无法创建账户 | 未使用超级用户权限 | 使用 sudo 命令或切换到root用户执行创建操作 |

6.2 存储设备挂载问题

存储设备挂载过程中也可能出现问题,具体如下:
| 问题描述 | 可能原因 | 解决方法 |
| — | — | — |
| 设备无法自动挂载 | 未配置挂载规则或udev服务异常 | 手动挂载设备,检查udev服务状态并重启 |
| 挂载点被占用 | 挂载点目录已被其他设备挂载或有文件占用 | 卸载已挂载的设备或删除占用文件 |

6.3 文件备份与恢复问题

在文件备份和恢复过程中,可能会遇到以下问题:
| 问题描述 | 可能原因 | 解决方法 |
| — | — | — |
| 备份文件损坏 | 备份过程中出现错误或存储介质有问题 | 重新进行备份操作,检查存储介质 |
| 恢复数据不完整 | 备份文件损坏或恢复命令使用错误 | 检查备份文件,正确使用恢复命令 |

七、总结与建议

7.1 总结

通过对Linux系统中字符集与本地化设置、用户和组管理、存储处理、文件保护等方面的知识学习,我们了解到Linux系统提供了丰富的命令和工具来满足各种操作需求。例如,在字符集选择上,UTF - 8是常用的选择;在用户账户管理中,不同的文件(如 /etc/passwd /etc/shadow )记录着不同的账户信息;在存储处理方面,掌握设备挂载、文件系统创建和操作等知识是关键;在文件保护方面,合理的备份策略和正确使用压缩、归档工具能有效保护数据。

7.2 建议

  • 深入学习命令参数 :Linux命令通常有很多参数,深入学习这些参数可以让我们更灵活地使用命令,提高工作效率。例如, tar 命令的不同参数可以实现不同的压缩和归档效果。
  • 定期备份数据 :无论数据的重要性如何,都应该定期进行备份,以防止数据丢失。可以根据数据的变化频率制定合理的备份策略。
  • 实践操作 :通过实际操作来巩固所学知识,在实践中遇到问题并解决问题,能更好地掌握Linux系统的操作技巧。

在未来的Linux系统使用中,我们可以不断探索和学习,进一步提升自己的系统管理能力。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值