Linux系统基础与命令行实战

2 阅读21分钟

Linux系统基础与命令行实战

本文基于Ubuntu 24.04 LTS服务器进行全流程实操,所有命令均在真实服务器上执行并收集输出,适合Linux初学者和运维开发工程师系统学习。服务器环境:华为云ECS,AMD x86_64架构,8核CPU,14GB内存,40GB系统盘。

目录


一、计算机基础与服务器硬件

1.1 服务器硬件概述

服务器是提供计算服务的专用计算机,与普通PC相比,服务器具有更高的稳定性、安全性和扩展性。常见的服务器类型包括:

  • 机架式服务器:标准19英寸机柜安装,最常见的数据中心服务器形态
  • 塔式服务器:外形类似PC塔机,适合中小企业
  • 刀片服务器:高密度计算,模块化设计
  • 云服务器(ECS):虚拟化技术提供的弹性计算服务

服务器核心硬件组件包括:CPU(中央处理器)、内存(RAM)、硬盘(HDD/SSD)、网卡(NIC)、电源、主板、RAID卡等。

1.2 查看服务器硬件信息实操

查看系统内核信息:

root@ecs-cd72-d4be-0001:~# uname -a
Linux ecs-cd72-d4be-0001 6.8.0-136-generic #136-Ubuntu SMP PREEMPT_DYNAMIC Wed Jul  1 21:53:05 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux

root@ecs-cd72-d4be-0001:~# uname -r
6.8.0-136-generic

uname -a 显示全部系统信息,包括内核名称、主机名、内核版本、内核编译日期、硬件架构等。uname -r 仅显示内核版本号。

查看操作系统发行版信息:

root@ecs-cd72-d4be-0001:~# cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.4 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo

查看CPU信息:

root@ecs-cd72-d4be-0001:~# lscpu | head -20
Architecture:                            x86_64
CPU op-mode(s):                          32-bit, 64-bit
Address sizes:                           52 bits physical, 48 bits virtual
Byte Order:                              Little Endian
CPU(s):                                  8
On-line CPU(s) list:                     0-7
Vendor ID:                               AuthenticAMD
BIOS Vendor ID:                          Huawei Cloud
Model name:                              General Purpose Processor
BIOS Model name:                         pc-i440fx-7.1  CPU @ 2.0GHz
BIOS CPU family:                         1
CPU family:                              26
Model:                                   17
Thread(s) per core:                      2
Core(s) per socket:                      4
Socket(s):                               1
Stepping:                                0
BogoMIPS:                                4500.00
Flags:                                   fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext perfctr_core ssbd ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves avx_vnni avx512_bf16 clzero xsaveerptr wbnoinvd arat avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid movdiri movdir64b fsrm avx512_vp2intersect
Hypervisor vendor:                       KVM

从输出可以看到,这是一台基于KVM虚拟化的华为云服务器,AMD架构,4核8线程(超线程),x86_64架构。

查看内存信息:

root@ecs-cd72-d4be-0001:~# free -h
               total        used        free      shared  buff/cache   available
Mem:            14Gi       628Mi        13Gi       2.6Mi       589Mi        14Gi
Swap:             0B          0B          0B

free -h 以人类可读格式显示内存使用情况。该服务器总内存14GB,已用628MB,可用约13GB,未配置Swap分区。

查看磁盘信息:

root@ecs-cd72-d4be-0001:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           1.5G  1.1M  1.5G   1% /run
/dev/vda1        40G  3.4G   35G   9% /
tmpfs           7.4G     0  7.4G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           1.5G   12K  1.5G   1% /run/user/0


root@ecs-cd72-d4be-0001:~# lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
vda    253:0    0  40G  0 disk 
└─vda1 253:1    0  40G  0 part /

df -h 显示文件系统磁盘使用情况,lsblk 以树形结构显示块设备。系统盘为虚拟磁盘vda,40GB,使用率9%。

查看服务器厂商信息(DMI数据):

root@ecs-cd72-d4be-0001:~# dmidecode -t system 2>/dev/null | head -15
# dmidecode 3.5
Getting SMBIOS data from sysfs.
SMBIOS 2.8 present.

Handle 0x0100, DMI type 1, 27 bytes
System Information
	Manufacturer: Huawei Cloud
	Product Name: OpenStack Nova
	Version: 13.2.1-20260428161150_182ca86
	Serial Number: 4401197f-511c-4304-a727-cf1b2d9dee38
	UUID: 4401197f-511c-4304-a727-cf1b2d9dee38
	Wake-up Type: Power Switch
	SKU Number: Not Specified
	Family: Virtual Machine


dmidecode 命令读取SMBIOS/DMI数据,可以获取硬件厂商、产品名称、序列号等详细信息。

查看系统运行时间和负载:

root@ecs-cd72-d4be-0001:~# uptime
 12:21:47 up 13 min,  2 users,  load average: 0.00, 0.02, 0.03

uptime 显示当前时间、系统已运行时间、当前在线用户数和系统负载平均值(1分钟、5分钟、15分钟)。


二、Linux登录与远程连接

2.1 SSH远程登录原理

SSH(Secure Shell)是一种加密的网络传输协议,用于在不安全的网络中为网络服务提供安全的传输环境。SSH通过公钥加密技术实现身份认证和数据加密传输,替代了传统的Telnet、FTP等明文协议。

SSH连接过程:

  1. TCP连接建立:客户端向服务器的22端口发起TCP连接
  2. 版本协商:客户端和服务器交换SSH版本信息
  3. 算法协商:协商加密算法、MAC算法、压缩算法等
  4. 密钥交换:使用Diffie-Hellman等算法交换会话密钥
  5. 用户认证:密码认证或公钥认证
  6. 会话建立:加密通道建立,开始交互

2.2 SSH实操

查看SSH版本:

root@ecs-cd72-d4be-0001:~# ssh -V
OpenSSH_9.6p1 Ubuntu-3ubuntu13.18, OpenSSL 3.0.13 30 Jan 2024

查看SSH服务端配置:

root@ecs-cd72-d4be-0001:~# grep -v '^#' /etc/ssh/sshd_config | grep -v '^$' | head -20
Include /etc/ssh/sshd_config.d/*.conf
KbdInteractiveAuthentication no
UsePAM yes
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*
Subsystem	sftp	/usr/lib/openssh/sftp-server
PermitRootLogin yes
PasswordAuthentication yes
UseDNS no

关键配置项说明:

  • PermitRootLogin yes:允许root用户通过SSH登录
  • PasswordAuthentication yes:允许密码认证
  • UsePAM yes:使用PAM(Pluggable Authentication Modules)进行认证
  • UseDNS no:禁用DNS反查,加快登录速度

查看当前登录用户信息:

root@ecs-cd72-d4be-0001:~# whoami
root


root@ecs-cd72-d4be-0001:~# w
 12:21:47 up 13 min,  2 users,  load average: 0.00, 0.02, 0.03
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU  WHAT
root              119.3.239.52     12:21   13:08   0.00s   ?    sshd: root@notty
root              1.92.88.90       12:21   13:08   0.00s  0.02s sshd: root@notty

whoami 显示当前用户名,w 显示所有登录用户的详细信息,包括登录来源IP、登录时间、空闲时间等。

查看登录历史记录:

root@ecs-cd72-d4be-0001:~# last -5
reboot   system boot  6.8.0-136-generi Thu Oct 15 12:08   still running

wtmp begins Tue Jul 21 17:34:26 2026

last 命令读取 /var/log/wtmp 文件,显示用户登录和系统启动历史。

2.3 SSH客户端常用命令

# 密码方式登录
ssh root@120.46.140.181

# 指定端口登录
ssh -p 2222 root@120.46.140.181

# 密钥方式登录
ssh -i ~/.ssh/id_rsa root@120.46.140.181

# 执行远程命令后返回
ssh root@120.46.140.181 "uname -a"

# 文件传输
scp localfile root@120.46.140.181:/tmp/
scp root@120.46.140.181:/tmp/remotefile ./

三、命令类型与执行过程

3.1 Linux命令的分类

命令类型说明示例
内建命令(builtin)Shell自带的命令,执行效率高cd, echo, pwd, type
外部命令(external)独立的可执行程序,位于文件系统ls, cp, mv, rm
别名(alias)为命令定义的别名ll = ls -l
Shell函数用function定义的函数自定义函数
哈希命令缓存的外部命令路径hash表中的命令

3.2 命令类型查看实操

使用 type 命令可以查看命令的类型:

root@ecs-cd72-d4be-0001:~# type ls
ls is /usr/bin/ls


root@ecs-cd72-d4be-0001:~# type cd
cd is a shell builtin


root@ecs-cd72-d4be-0001:~# type useradd
useradd is /usr/sbin/useradd

从输出可以看到:

  • ls 是外部命令,位于 /usr/bin/ls
  • cd 是Shell内建命令(builtin),这也是为什么cd可以改变当前Shell工作目录的原因
  • useradd 是外部命令,位于 /usr/sbin/useradd(管理员命令)

查看命令路径:

root@ecs-cd72-d4be-0001:~# which ls
/usr/bin/ls


root@ecs-cd72-d4be-0001:~# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

  • which:在PATH环境变量指定的路径中搜索命令,返回第一个匹配的路径
  • whereis:不仅查找二进制文件路径,还查找源码文件和man手册路径

3.3 命令执行过程

当在Shell中输入一个命令时,执行过程如下:

  1. 命令解析:Shell读取输入,进行变量替换、命令替换、别名展开
  2. 命令查找:判断是内建命令还是外部命令
    • 内建命令:直接在Shell进程中执行
    • 外部命令:在PATH路径中查找可执行文件
  3. fork子进程:对于外部命令,Shell通过fork()创建子进程
  4. exec替换:子进程通过exec()系列函数加载目标程序
  5. wait等待:父进程(Shell)等待子进程完成
  6. 返回状态:子进程退出,Shell获取退出状态码($?)
root@ecs-cd72-d4be-0001:~# hash
hash: hash table empty

hash 命令显示Shell维护的命令路径缓存表,首次执行外部命令后,Shell会缓存其路径以加快后续查找速度。


四、命令帮助用法

Linux提供了多种获取命令帮助的方式,掌握这些方法对于学习和使用Linux至关重要。

4.1 man手册

man(manual)是Linux最经典的帮助系统,手册分为多个章节:

章节号内容
1用户命令(可执行程序)
2系统调用
3库函数
4设备文件
5配置文件格式
6游戏
7约定和协议
8管理员命令
root@ecs-cd72-d4be-0001:~# man ls | head -30
LS(1)                            User Commands                           LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List  information  about  the FILEs (the current directory by default).
       Sort entries alphabetically if none of -cftuvSUX nor --sort  is  speci‐
       fied.

       Mandatory  arguments  to  long  options are mandatory for short options
       too.

       -a, --all
              do not ignore entries starting with .

       -A, --almost-all
              do not list implied . and ..

       --author
              with -l, print the author of each file

       -b, --escape
              print C-style escapes for nongraphic characters

       --block-size=SIZE
              with  -l,  scale  sizes  by  SIZE  when  printing  them;   e.g.,

man手册的结构通常包括:NAME(名称)、SYNOPSIS(语法)、DESCRIPTION(描述)、OPTIONS(选项)、EXAMPLES(示例)、SEE ALSO(参见)等部分。

4.2 info手册

info 是GNU项目提供的超文本帮助系统,比man更详细:

root@ecs-cd72-d4be-0001:~# info ls | head -15
File: coreutils.info,  Node: ls invocation,  Next: dir invocation,  Up: Directory listing

10.1 ‘ls’: List directory contents
==================================

The ‘ls’ program lists information about files (of any type, including
directories).  Options and file arguments can be intermixed arbitrarily,
as usual.  Later options override earlier options that are incompatible.

   For non-option command-line arguments that are directories, by
default ‘ls’ lists the contents of directories, not recursively, and
omitting files with names beginning with ‘.’.  For other non-option
arguments, by default ‘ls’ lists just the file name.  If no non-option
argument is specified, ‘ls’ operates on the current directory, acting as
if it had been invoked with a single argument of ‘.’.

4.3 --help选项

大多数命令支持 --help 或 -h 选项,显示简要帮助信息:

root@ecs-cd72-d4be-0001:~# ls --help | head -20
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Mandatory arguments to long options are mandatory for short options too.
  -a, --all                  do not ignore entries starting with .
  -A, --almost-all           do not list implied . and ..
      --author               with -l, print the author of each file
  -b, --escape               print C-style escapes for nongraphic characters
      --block-size=SIZE      with -l, scale sizes by SIZE when printing them;
                             e.g., '--block-size=M'; see SIZE format below

  -B, --ignore-backups       do not list implied entries ending with ~
  -c                         with -lt: sort by, and show, ctime (time of last
                             change of file status information);
                             with -l: show ctime and sort by name;
                             otherwise: sort by ctime, newest first

  -C                         list entries by columns
      --color[=WHEN]         color the output WHEN; more info below

4.4 help命令(内建命令专用)

对于Shell内建命令,使用 help 获取帮助:

root@ecs-cd72-d4be-0001:~# help cd
cd: cd [-L|[-P [-e]] [-@]] [dir]
    Change the shell working directory.
    
    Change the current directory to DIR.  The default DIR is the value of the
    HOME shell variable. If DIR is "-", it is converted to $OLDPWD.
    
    The variable CDPATH defines the search path for the directory containing
    DIR.  Alternative directory names in CDPATH are separated by a colon (:).
    A null directory name is the same as the current directory.  If DIR begins
    with a slash (/), then CDPATH is not used.
    
    If the directory is not found, and the shell option `cdable_vars' is set,
    the word is assumed to be  a variable name.  If that variable has a value,
    its value is used for DIR.
    

4.5 whatis命令

whatis 显示命令的简要描述:

root@ecs-cd72-d4be-0001:~# whatis ls
ls (1)               - list directory contents


五、Linux基本命令与常用命令

5.1 日期时间命令

root@ecs-cd72-d4be-0001:~# date
Thu Oct 15 12:21:48 PM CST 2026


root@ecs-cd72-d4be-0001:~# date '+%Y-%m-%d %H:%M:%S'
2026-10-15 12:21:48

date 命令显示或设置系统日期时间。常用格式化参数:

  • %Y:四位年份,%m:月份,%d:日期
  • %H:小时(24小时制),%M:分钟,%S:秒
  • %F:等价于 %Y-%m-%d,%T:等价于 %H:%M:%S

5.2 echo和printf

root@ecs-cd72-d4be-0001:~# echo 'Hello Linux'
Hello Linux


root@ecs-cd72-d4be-0001:~# printf '%s\n' 'printf test'
printf test

echo 用于输出文本,printf 提供更灵活的格式化输出(类似C语言的printf函数)。

5.3 环境变量查看

root@ecs-cd72-d4be-0001:~# echo $SHELL
/bin/bash


root@ecs-cd72-d4be-0001:~# echo $HOME
/root


root@ecs-cd72-d4be-0001:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin


root@ecs-cd72-d4be-0001:~# echo $LANG
en_US.UTF-8


root@ecs-cd72-d4be-0001:~# env | head -15
SHELL=/bin/bash
PWD=/root
LOGNAME=root
XDG_SESSION_TYPE=tty
HOME=/root
LANG=en_US.UTF-8
SSH_CONNECTION=119.3.239.52 27946 192.168.0.5 22
XDG_SESSION_CLASS=user
USER=root
SHLVL=1
XDG_SESSION_ID=47
XDG_RUNTIME_DIR=/run/user/0
SSH_CLIENT=119.3.239.52 27946 22
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus

关键环境变量说明:

  • SHELL:当前使用的Shell类型
  • HOME:当前用户家目录
  • PATH:命令搜索路径,多个路径用冒号分隔
  • LANG:系统语言和编码设置

六、字符集和快捷键

6.1 字符集与locale

root@ecs-cd72-d4be-0001:~# locale | head -10
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"

locale 命令显示当前系统的区域设置和字符集信息。en_US.UTF-8 表示使用英语(美国)区域设置和UTF-8字符编码。在服务器环境中,通常建议使用UTF-8编码以支持多语言字符。

6.2 常用Shell快捷键

快捷键功能
Ctrl + A光标移到行首
Ctrl + E光标移到行尾
Ctrl + U删除光标到行首的内容
Ctrl + K删除光标到行尾的内容
Ctrl + W删除光标前一个单词
Ctrl + L清屏(等价于clear)
Ctrl + R搜索历史命令
Ctrl + D退出当前Shell(EOF)
Ctrl + C终止当前命令
Ctrl + Z挂起当前命令到后台
Tab命令/路径自动补全
!!执行上一条命令
!$引用上一条命令的最后一个参数

七、Linux文件系统目录结构(FHS)

7.1 FHS标准介绍

FHS(Filesystem Hierarchy Standard,文件系统层次结构标准)定义了Linux系统中目录和文件的组织结构。遵循FHS标准使得不同Linux发行版具有相似的目录布局,便于用户使用和软件移植。

7.2 根目录结构实操

root@ecs-cd72-d4be-0001:~# ls -la /
total 100
drwxr-xr-x  24 root root  4096 Oct 15 12:08 .
drwxr-xr-x  24 root root  4096 Oct 15 12:08 ..
lrwxrwxrwx   1 root root     7 Apr 22  2024 bin -> usr/bin
drwxr-xr-x   2 root root  4096 Feb 26  2024 bin.usr-is-merged
drwxr-xr-x   3 root root  4096 Jul 21 17:33 boot
dr-xr-xr-x   2 root root  4096 Apr 23  2024 cdrom
drwxr-xr-x   7 root root  4096 Jul 21 17:34 CloudrResetPwdAgent
drwxr-xr-x  19 root root  3940 Oct 15 12:08 dev
drwxr-xr-x 118 root root 12288 Oct 15 12:21 etc
drwxr-xr-x   2 root root  4096 Oct 15 12:21 home
lrwxrwxrwx   1 root root     7 Apr 22  2024 lib -> usr/lib
lrwxrwxrwx   1 root root     9 Apr 22  2024 lib64 -> usr/lib64
drwxr-xr-x   2 root root  4096 Feb 26  2024 lib.usr-is-merged
drwx------   2 root root 16384 Jul 21 16:51 lost+found
drwxr-xr-x   2 root root  4096 Apr 23  2024 media
drwxr-xr-x   2 root root  4096 Apr 23  2024 mnt
drwxr-xr-x   2 root root  4096 Apr 23  2024 opt
dr-xr-xr-x 239 root root     0 Oct 15 12:08 proc
drwx------   5 root root  4096 Oct 15 12:21 root
drwxr-xr-x  32 root root   920 Oct 15 12:21 run
lrwxrwxrwx   1 root root     8 Apr 22  2024 sbin -> usr/sbin
drwxr-xr-x   2 root root  4096 Apr  3  2024 sbin.usr-is-merged
drwxr-xr-x   2 root root  4096 Jul 21 17:25 snap
drwxr-xr-x   2 root root  4096 Apr 23  2024 srv
dr-xr-xr-x  13 root root     0 Oct 15 12:17 sys
drwxrwxrwt  15 root root  4096 Oct 15 12:21 tmp
drwxr-xr-x  12 root root  4096 Apr 23  2024 usr
drwxr-xr-x  13 root root  4096 Jul 21 17:25 var

7.3 主要目录说明

目录说明
/bin基本命令(用户命令),如ls、cp、cat等
/sbin系统管理命令,如useradd、fdisk等
/etc系统配置文件
/home普通用户家目录
/rootroot用户家目录
/var可变数据(日志、缓存、邮件等)
/usr用户程序和数据
/tmp临时文件
/boot内核和引导文件
/dev设备文件
/proc进程信息(虚拟文件系统)
/sys系统设备信息(虚拟文件系统)
/opt可选应用程序
/mnt临时挂载点
/media可移动设备挂载点

查看各主要目录内容:

root@ecs-cd72-d4be-0001:~# ls /bin/ | head -10
[
aa-enabled
aa-exec
aa-features-abi
acpidbg
add-apt-repository
addpart
addr2line
apport-bug
apport-cli


root@ecs-cd72-d4be-0001:~# ls /sbin/ | head -10
aa-load
aa-remove-unknown
aa-status
aa-teardown
accessdb
addgnupghome
addgroup
add-shell
adduser
agetty


root@ecs-cd72-d4be-0001:~# ls -la /home/
total 8
drwxr-xr-x  2 root root 4096 Oct 15 12:21 .
drwxr-xr-x 24 root root 4096 Oct 15 12:08 ..


root@ecs-cd72-d4be-0001:~# ls /var/
backups
cache
crash
lib
local
lock
log
mail
opt
run
snap
spool
tmp


root@ecs-cd72-d4be-0001:~# ls /usr/
bin
games
include
lib
lib64
libexec
local
sbin
share
src


八、文件常见操作命令

8.1 pwd和ls命令

root@ecs-cd72-d4be-0001:~# pwd
/root


root@ecs-cd72-d4be-0001:~# ls -la /root/ | head -15
total 28
drwx------  5 root root 4096 Oct 15 12:21 .
drwxr-xr-x 24 root root 4096 Oct 15 12:08 ..
-rw-r--r--  1 root root    0 Jul 21 17:34 .bash_history
-rw-r--r--  1 root root 3106 Apr 22  2024 .bashrc
drwx------  2 root root 4096 Jul 21 17:25 .cache
drwx------  3 root root 4096 Oct 15 12:21 .config
-rw-------  1 root root    0 Jul 21 17:34 .history
-rw-r--r--  1 root root  161 Apr 22  2024 .profile
drwx------  2 root root 4096 Oct 15 12:08 .ssh


root@ecs-cd72-d4be-0001:~# ls -lh /var/log/ | head -10
total 608K
-rw-r--r--  1 root      root               0 Jul 21 17:34 alternatives.log
-rw-r-----  1 root      adm                0 Jul 21 17:34 apport.log
drwxr-xr-x  2 root      root            4.0K Oct 15 12:21 apt
-rw-r-----  1 syslog    adm              31K Oct 15 12:21 auth.log
-rw-r--r--  1 root      root               0 Jul 21 17:34 bootstrap.log
-rw-rw----  1 root      utmp               0 Jul 21 17:34 btmp
drwxr-x---  2 _chrony   _chrony         4.0K Jul 21 17:25 chrony
-rw-r--r--  1 syslog    adm              88K Oct 15 12:08 cloud-init.log
-rw-r-----  1 root      adm             4.7K Oct 15 12:08 cloud-init-output.log


root@ecs-cd72-d4be-0001:~# ls -lrt /var/log/ | tail -5
-rw-rw-r--  1 root      utmp              3456 Oct 15 12:08 wtmp
drwxr-xr-x  2 root      root              4096 Oct 15 12:21 apt
-rw-r--r--  1 root      root              1678 Oct 15 12:21 dpkg.log
-rw-r-----  1 syslog    adm              30956 Oct 15 12:21 auth.log
-rw-r-----  1 syslog    adm             253494 Oct 15 12:21 syslog

ls 命令常用选项:

  • -l:长格式显示(权限、链接数、属主、属组、大小、时间、文件名)
  • -a:显示所有文件(包括隐藏文件,以.开头的文件)
  • -h:人类可读的大小格式(K、M、G)
  • -r:逆序显示
  • -t:按修改时间排序
  • -R:递归显示子目录

8.2 目录操作命令

root@ecs-cd72-d4be-0001:~# mkdir -p /tmp/testdir/subdir && ls -la /tmp/testdir/
total 56
drwxr-xr-x  3 root root 4096 Oct 15 12:21 .
drwxrwxrwt 15 root root 4096 Oct 15 12:21 ..
-rw-r--r--  1 root root  178 Oct 15 12:21 all.txt
-rw-r--r--  1 root root   10 Oct 15 12:21 compress_test.txt
-rw-r--r--  1 root root   60 Oct 15 12:21 error.txt
-rw-r--r--  1 root root   12 Oct 15 12:21 file1_backup.txt
-rw-r--r--  1 root root   12 Oct 15 12:21 file1_hardlink
lrwxrwxrwx  1 root root   22 Oct 15 12:21 file1_softlink -> /tmp/testdir/file1.txt
-rw-r--r--  1 root root    6 Oct 15 12:21 file2_renamed.txt
-rw-r--r--  1 root root   21 Oct 15 12:21 heredoc.txt
-rwxr-xr-x  1 root root    0 Oct 15 12:21 perm_test.sh
-rw-r--r--  1 root root   29 Oct 15 12:21 redirect.txt
-rw-r--r--  1 root root    9 Oct 15 12:21 sed_test.txt
drwxr-xr-x  2 root root 4096 Oct 15 12:21 subdir
-rw-r--r--  1 root root    9 Oct 15 12:21 tee.txt
-rw-r--r--  1 root root    0 Oct 15 12:21 umask_test
-rw-r--r--  1 root root   54 Oct 15 12:21 vim_demo.txt

mkdir -p 递归创建目录,如果父目录不存在则一并创建,不会报错。

8.3 文件复制、移动和删除

# 创建测试文件并复制
root@ecs-cd72-d4be-0001:~# echo 'test content' > /tmp/testfile.txt && cp /tmp/testfile.txt /tmp/testfile_bak.txt && ls -la /tmp/testfile*
-rw-r--r-- 1 root root 13 Oct 15 12:21 /tmp/testfile_bak.txt
-rw-r--r-- 1 root root 13 Oct 15 12:21 /tmp/testfile.txt


# 移动/重命名文件
root@ecs-cd72-d4be-0001:~# mv /tmp/testfile_bak.txt /tmp/testfile_renamed.txt && ls -la /tmp/testfile*
-rw-r--r-- 1 root root 13 Oct 15 12:21 /tmp/testfile_renamed.txt
-rw-r--r-- 1 root root 13 Oct 15 12:21 /tmp/testfile.txt


# 删除文件
root@ecs-cd72-d4be-0001:~# rm /tmp/testfile_renamed.txt && ls -la /tmp/testfile* 2>&1
-rw-r--r-- 1 root root 13 Oct 15 12:21 /tmp/testfile.txt

  • cp:复制文件或目录,-r 递归复制目录,-p 保留属性
  • mv:移动或重命名文件,-f 强制覆盖
  • rm:删除文件,-r 递归删除目录,-f 强制删除不提示

8.4 文件查看命令

root@ecs-cd72-d4be-0001:~# touch /tmp/newfile.txt && ls -la /tmp/newfile.txt
-rw-r--r-- 1 root root 0 Oct 15 12:21 /tmp/newfile.txt


root@ecs-cd72-d4be-0001:~# stat /tmp/newfile.txt
  File: /tmp/newfile.txt
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: 253,1	Inode: 3854        Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2026-10-15 12:21:49.950399883 +0800
Modify: 2026-10-15 12:21:49.950399883 +0800
Change: 2026-10-15 12:21:49.950399883 +0800
 Birth: 2026-10-15 12:21:49.950399883 +0800


root@ecs-cd72-d4be-0001:~# file /tmp/newfile.txt
/tmp/newfile.txt: empty


root@ecs-cd72-d4be-0001:~# cat /tmp/testfile.txt
test content


root@ecs-cd72-d4be-0001:~# echo -e 'line1\nline2\nline3' > /tmp/multiline.txt && tac /tmp/multiline.txt
line3
line2
line1


root@ecs-cd72-d4be-0001:~# head -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin


root@ecs-cd72-d4be-0001:~# tail -3 /etc/passwd
sshd:x:109:65534::/run/sshd:/usr/sbin/nologin
dnsmasq:x:999:65534:dnsmasq:/var/lib/misc:/usr/sbin/nologin
_chrony:x:110:111:Chrony daemon,,,:/var/lib/chrony:/usr/sbin/nologin


root@ecs-cd72-d4be-0001:~# wc /etc/passwd
  35   52 1863 /etc/passwd

常用文件查看命令说明:

  • touch:创建空文件或更新文件时间戳
  • stat:显示文件的详细状态信息(inode、权限、时间等)
  • file:查看文件类型
  • cat:正向显示文件内容,tac 反向显示
  • head -N:显示文件前N行,tail -N:显示文件后N行
  • wc:统计文件的行数、单词数、字节数

九、用户和组基本概念

9.1 用户和组的概念

Linux是多用户多任务的操作系统,通过用户和组机制实现权限隔离和资源管理:

  • 用户(User):每个使用系统的人都有一个用户账号,用UID(User ID)标识

    • root用户:UID=0,超级管理员,拥有最高权限
    • 系统用户:UID=1~999,用于运行系统服务
    • 普通用户:UID=1000+,日常使用
  • 组(Group):用户的集合,用GID(Group ID)标识

    • 主组:每个用户必须属于一个主组
    • 附加组:用户可以属于多个附加组

9.2 用户和组配置文件

/etc/passwd - 用户信息文件:

root@ecs-cd72-d4be-0001:~# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
_apt:x:42:65534::/nonexistent:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:998:998:systemd Network Management:/:/usr/sbin/nologin
systemd-timesync:x:997:997:systemd Time Synchronization:/:/usr/sbin/nologin
dhcpcd:x:100:65534:DHCP Client Daemon,,,:/usr/lib/dhcpcd:/bin/false
messagebus:x:101:102::/nonexistent:/usr/sbin/nologin
systemd-resolve:x:992:992:systemd Resolver:/:/usr/sbin/nologin
pollinate:x:102:1::/var/cache/pollinate:/bin/false
polkitd:x:991:991:User for polkitd:/:/usr/sbin/nologin
syslog:x:103:104::/nonexistent:/usr/sbin/nologin
uuidd:x:104:105::/run/uuidd:/usr/sbin/nologin
tcpdump:x:105:107::/nonexistent:/usr/sbin/nologin
tss:x:106:108:TPM software stack,,,:/var/lib/tpm:/bin/false
landscape:x:107:109::/var/lib/landscape:/usr/sbin/nologin
fwupd-refresh:x:989:989:Firmware update daemon:/var/lib/fwupd:/usr/sbin/nologin
usbmux:x:108:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
sshd:x:109:65534::/run/sshd:/usr/sbin/nologin
dnsmasq:x:999:65534:dnsmasq:/var/lib/misc:/usr/sbin/nologin
_chrony:x:110:111:Chrony daemon,,,:/var/lib/chrony:/usr/sbin/nologin

每行格式:用户名:密码占位符:UID:GID:描述信息:家目录:登录Shell

  • 密码字段为x,实际密码存储在/etc/shadow中
  • /usr/sbin/nologin 表示该用户不能登录系统

/etc/group - 组信息文件:

root@ecs-cd72-d4be-0001:~# cat /etc/group | head -20
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:
floppy:x:25:
tape:x:26:

每行格式:组名:密码占位符:GID:组成员列表

/etc/shadow - 密码影子文件:

root@ecs-cd72-d4be-0001:~# cat /etc/shadow | head -5
root:$6$DfMgXZyW$731T7hRQ4hAHDUe5WWl8XlOJImBnUV9QkaOm6eBpEu/HPlb0fColT0OUPayVXkbWwdxlV0g.FrcClmpJOdxss/:20741:0:99999:7:::
daemon:*:19836:0:99999:7:::
bin:*:19836:0:99999:7:::
sys:*:19836:0:99999:7:::
sync:*:19836:0:99999:7:::

每行格式:用户名:加密密码:最后修改日期:最小间隔:最大间隔:警告期:不活动期:过期日期:保留字段

  • 密码使用SHA-512加密(以66开头)
  • *表示该用户无法通过密码登录

查看当前用户信息:

root@ecs-cd72-d4be-0001:~# id root
uid=0(root) gid=0(root) groups=0(root)


root@ecs-cd72-d4be-0001:~# id
uid=0(root) gid=0(root) groups=0(root)


root@ecs-cd72-d4be-0001:~# groups
root


十、用户和组管理命令

10.1 用户管理实操

创建用户:

root@ecs-cd72-d4be-0001:~# useradd testuser && id testuser
uid=1000(testuser) gid=1000(testuser) groups=1000(testuser)

useradd 命令创建用户,常用选项:

  • -u:指定UID
  • -g:指定主组
  • -G:指定附加组
  • -d:指定家目录
  • -s:指定登录Shell
  • -c:添加描述信息
  • -m:创建家目录

设置密码:

root@ecs-cd72-d4be-0001:~# echo 'testuser:Test@123' | chpasswd
Password set successfully

修改用户属性:

root@ecs-cd72-d4be-0001:~# usermod -c 'Test User Modified' testuser && grep testuser /etc/passwd
testuser:x:1000:1000:Test User Modified:/home/testuser:/bin/sh

usermod 修改用户属性,常用选项与useradd类似,还有:

  • -L:锁定用户
  • -U:解锁用户
  • -aG:追加附加组(不覆盖原有附加组)

10.2 组管理实操

创建组:

root@ecs-cd72-d4be-0001:~# groupadd testgroup && grep testgroup /etc/group
testgroup:x:1001:

将用户加入组:

root@ecs-cd72-d4be-0001:~# gpasswd -a testuser testgroup
Adding user testuser to group testgroup
testgroup:x:1001:testuser

删除用户和组:

root@ecs-cd72-d4be-0001:~# userdel -r testuser
userdel: testuser mail spool (/var/mail/testuser) not found
userdel: testuser home directory (/home/testuser) not found
testuser deleted


root@ecs-cd72-d4be-0001:~# groupdel testgroup
testgroup deleted

userdel -r 删除用户同时删除其家目录和邮件目录。groupdel 删除组(组内不能有用户)。


十一、文件权限管理

11.1 权限模型

Linux文件权限分为三个级别,每级三种权限:

权限数值说明
r(read)4读权限
w(write)2写权限
x(execute)1执行权限

权限分为三组:属主(u)、属组(g)、其他用户(o)

11.2 权限查看与修改实操

查看文件权限:

root@ecs-cd72-d4be-0001:~# ls -l /tmp/testfile.txt
-rw-r--r-- 1 root root 13 Oct 15 12:21 /tmp/testfile.txt

使用数字方式修改权限:

root@ecs-cd72-d4be-0001:~# chmod 755 /tmp/testfile.txt && ls -l /tmp/testfile.txt
-rwxr-xr-x 1 root root 13 Oct 15 12:21 /tmp/testfile.txt

755 = rwxr-xr-x:属主可读写执行,属组和其他用户可读和执行

使用符号方式修改权限:

root@ecs-cd72-d4be-0001:~# chmod u+x,g-w,o=r /tmp/testfile.txt && ls -l /tmp/testfile.txt
-rwxr-xr-- 1 root root 13 Oct 15 12:21 /tmp/testfile.txt

修改文件属主和属组:

root@ecs-cd72-d4be-0001:~# chown root:root /tmp/testfile.txt && ls -l /tmp/testfile.txt
-rwxr-xr-- 1 root root 13 Oct 15 12:21 /tmp/testfile.txt

11.3 umask默认权限

root@ecs-cd72-d4be-0001:~# umask
0022


root@ecs-cd72-d4be-0001:~# umask 022 && touch /tmp/umask_test.txt && ls -l /tmp/umask_test.txt
-rw-r--r-- 1 root root 0 Oct 15 12:21 /tmp/umask_test.txt


root@ecs-cd72-d4be-0001:~# mkdir /tmp/perm_test && ls -ld /tmp/perm_test
drwxr-xr-x 2 root root 4096 Oct 15 12:21 /tmp/perm_test

umask 控制新建文件的默认权限:

  • 文件默认权限 = 666 - umask = 666 - 022 = 644(rw-r--r--)
  • 目录默认权限 = 777 - umask = 777 - 022 = 755(rwxr-xr-x)

十二、文件特殊权限与特殊属性

12.1 SUID(Set UID)

SUID权限使普通用户在执行该文件时,临时获得文件属主的权限。最典型的例子是 passwd 命令:

root@ecs-cd72-d4be-0001:~# ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 64152 May 30  2024 /usr/bin/passwd

权限中的 s 位就是SUID。普通用户执行passwd时,临时获得root权限,从而可以修改/etc/shadow文件。

查找系统中所有SUID文件:

root@ecs-cd72-d4be-0001:~# find /usr/bin -perm -4000 2>/dev/null | head -10
/usr/bin/passwd
/usr/bin/fusermount3
/usr/bin/newgrp
/usr/bin/chfn
/usr/bin/mount
/usr/bin/su
/usr/bin/sudo
/usr/bin/umount
/usr/bin/chsh
/usr/bin/gpasswd

设置SUID权限:

root@ecs-cd72-d4be-0001:~# cp /bin/cat /tmp/mycat && chmod 4755 /tmp/mycat && ls -l /tmp/mycat
-rwsr-xr-x 1 root root 39384 Oct 15 12:21 /tmp/mycat

12.2 SGID(Set GID)

SGID权限作用于文件时,执行者临时获得文件属组的权限;作用于目录时,目录内新建文件的属组继承目录的属组。

root@ecs-cd72-d4be-0001:~# find /usr/bin -perm -2000 2>/dev/null | head -10
/usr/bin/chage
/usr/bin/expiry
/usr/bin/crontab
/usr/bin/ssh-agent


root@ecs-cd72-d4be-0001:~# mkdir /tmp/sgid_test && chmod 2755 /tmp/sgid_test && ls -ld /tmp/sgid_test
drwxr-sr-x 2 root root 4096 Oct 15 12:21 /tmp/sgid_test

12.3 Sticky Bit(粘滞位)

粘滞位主要用于共享目录(如/tmp),设置后只有文件属主和root才能删除该目录下的文件,即使用户对目录有写权限。

root@ecs-cd72-d4be-0001:~# ls -ld /tmp
drwxrwxrwt 16 root root 4096 Oct 15 12:21 /tmp


root@ecs-cd72-d4be-0001:~# mkdir /tmp/sticky_test && chmod 1755 /tmp/sticky_test && ls -ld /tmp/sticky_test
drwxr-xr-t 2 root root 4096 Oct 15 12:21 /tmp/sticky_test

权限末尾的 t 就是粘滞位标志。

12.4 特殊属性(chattr/lsattr)

root@ecs-cd72-d4be-0001:~# touch /tmp/attr_test.txt && chattr +i /tmp/attr_test.txt && lsattr /tmp/attr_test.txt
----i---------e------- /tmp/attr_test.txt


root@ecs-cd72-d4be-0001:~# chattr -i /tmp/attr_test.txt && lsattr /tmp/attr_test.txt
--------------e------- /tmp/attr_test.txt

  • chattr +i:设置不可变属性,文件不能被修改、删除、重命名
  • chattr -i:移除不可变属性
  • lsattr:查看文件特殊属性

十三、vim文本编辑器

13.1 vim简介

vim(Vi IMproved)是Linux下最强大的文本编辑器之一,是vi的增强版本。

root@ecs-cd72-d4be-0001:~# vim --version | head -5
VIM - Vi IMproved 9.1 (2024 Jan 02, compiled Jul 13 2026 17:17:48)
Included patches: 1-16, 647, 678, 697
Modified by team+vim@tracker.debian.org
Compiled by team+vim@tracker.debian.org
Huge version without GUI.  Features included (+) or not (-):

13.2 vim的三种工作模式

vim有三种基本工作模式:

  1. 普通模式(Normal Mode):默认模式,用于浏览、复制、粘贴、删除等操作
  2. 插入模式(Insert Mode):用于文本输入,按i/a/o等键进入,按Esc返回普通模式
  3. 命令行模式(Command Mode):用于保存、退出、搜索替换等,普通模式下按:进入

模式切换关系:

普通模式 ←→ 插入模式(i/a/o → Esc)
普通模式 ←→ 命令行模式(: → Enter/Esc)

13.3 vim常用操作

插入模式进入方式:

按键功能
i在光标前插入
a在光标后插入
o在下一行插入新行
I在行首插入
A在行尾插入
O在上一行插入新行

普通模式常用操作:

按键功能
h/j/k/l左/下/上/右移动光标
gg跳到文件首行
G跳到文件末行
dd删除当前行
ndd删除n行
yy复制当前行
nyy复制n行
p粘贴
u撤销
Ctrl+r恢复撤销
x删除光标处字符

命令行模式常用操作:

命令功能
:w保存
:q退出
:wq保存并退出
:q!强制退出不保存
:set nu显示行号
:set nonu取消行号
:%s/old/new/g全局替换
:/pattern向下搜索

13.4 vim配置

root@ecs-cd72-d4be-0001:~# cat /etc/vim/vimrc | grep -v '^"' | grep -v '^$' | head -10
runtime! debian.vim
if has("syntax")
  syntax on
endif
if filereadable("/etc/vim/vimrc.local")
  source /etc/vim/vimrc.local
endif

常用个人vim配置(~/.vimrc):

set nu          " 显示行号
set tabstop=4   " Tab键宽度
set expandtab   " Tab转空格
set autoindent  " 自动缩进
set syntax on   " 语法高亮
set cursorline  " 高亮当前行

总结

本文从计算机基础与服务器硬件出发,系统讲解了Linux系统的基础知识和命令行操作,涵盖以下核心内容:

  1. 服务器硬件:通过uname、lscpu、free、df等命令查看系统硬件信息
  2. SSH远程连接:理解SSH加密协议原理,掌握SSH客户端和服务端配置
  3. 命令类型:区分内建命令和外部命令,理解命令执行过程(fork→exec→wait)
  4. 命令帮助:熟练使用man、info、--help、help等多种帮助方式
  5. 基本命令:掌握date、echo、env等常用命令和环境变量
  6. 文件系统:理解FHS标准,熟悉各目录的用途
  7. 文件操作:熟练使用ls、cd、cp、mv、rm、cat、head、tail等命令
  8. 用户和组:理解用户/组概念和配置文件,掌握useradd、usermod、groupadd等管理命令
  9. 权限管理:掌握chmod、chown、umask的使用,理解权限计算方法
  10. 特殊权限:理解SUID、SGID、Sticky Bit的原理和应用场景
  11. vim编辑器:掌握vim三种模式切换和常用操作

所有命令均在Ubuntu 24.04 LTS服务器上实操验证,输出真实可靠。掌握这些基础知识是成为Linux运维工程师的第一步,后续将深入学习文本处理、Shell编程等高级主题。