SENQICE NET
bar
IP:216.73.216.104 Time:
加载中...
| 本站首页 | 在线新闻 | 技术文献 | 软件工具 | 国际版 |

-------- Welcome To Senqice Network !Thank You For Your Support !--------
·系统使用
·网站建设
·程序开发
·如何使远程连接允许空密码
·Windows 控制台命令教学指南
·Linux 常用命令教学指南
·Token:AI大模型时代的“最小语言积木”
·Windows10 隐藏我的电脑七个文件夹
·解决“Windows照片查看器无法显示此图片,因为计算机上的可用内存可能不足……”的问题
·使用DiskGenius 磁盘扩容,显示$MFT位图中有标记为已使用的未用文件记录。
·老笔记本无线无法打开的修复小技巧

Linux 常用命令教学指南

Linux 常用命令教学指南

本教程涵盖 Linux 系统中最常用的命令,每个命令都配有模拟控制台输出,让你像在真实终端中操作一样直观理解。适合初学者快速上手。

目录

  1. 文件与目录操作
  2. 文件查看与编辑
  3. 权限管理
  4. 进程管理
  5. 磁盘与存储
  6. 网络相关
  7. 系统信息
  8. 压缩与解压
  9. 用户管理
  10. 实用技巧

一、文件与目录操作

1. ls - 列出目录内容

ls 是 Linux 中使用频率最高的命令之一,用于列出目录中的文件和子目录。

基本用法:列出当前目录

ls
$ ls
Desktop    Documents    Downloads    Music    Pictures    Videos

详细列表:显示权限、所有者、大小、时间

ls -l
$ ls -l
total 32
drwxr-xr-x  2 user user 4096 May 12 09:30 Desktop
drwxr-xr-x  3 user user 4096 May 10 14:22 Documents
drwxr-xr-x  5 user user 4096 May 11 18:05 Downloads
drwxr-xr-x  2 user user 4096 Apr 28 10:00 Music
drwxr-xr-x  2 user user 4096 May  1 20:15 Pictures
drwxr-xr-x  2 user user 4096 Apr 15 08:30 Videos
输出解读drwxr-xr-x 是权限信息,第一个 d 表示这是一个目录;user user 分别是所有者和所属组;4096 是大小(字节);后面的时间是最后修改时间。

显示隐藏文件

ls -a
$ ls -a
.              .bashrc      .profile      Desktop      Downloads    Pictures
..             .cache       .ssh          Documents    Music        Videos
.bash_history  .config      .vimrc        .local
输出解读:以 . 开头的文件是隐藏文件。. 代表当前目录,.. 代表上一级目录。

人性化显示:文件大小以 KB/MB/GB 显示

ls -lh
$ ls -lh
total 32K
drwxr-xr-x  2 user user 4.0K May 12 09:30 Desktop
drwxr-xr-x  3 user user 4.0K May 10 14:22 Documents
drwxr-xr-x  5 user user 4.0K May 11 18:05 Downloads
drwxr-xr-x  2 user user 4.0K Apr 28 10:00 Music
drwxr-xr-x  2 user user 4.0K May  1 20:15 Pictures
drwxr-xr-x  2 user user 4.0K Apr 15 08:30 Videos
输出解读:加了 -h 参数后,文件大小从 4096 变成了 4.0K,更易读。

按时间排序:最新的在前

ls -lt
$ ls -lt
total 32
drwxr-xr-x  2 user user 4096 May 12 09:30 Desktop
drwxr-xr-x  5 user user 4096 May 11 18:05 Downloads
drwxr-xr-x  3 user user 4096 May 10 14:22 Documents
drwxr-xr-x  2 user user 4096 May  1 20:15 Pictures
drwxr-xr-x  2 user user 4096 Apr 28 10:00 Music
drwxr-xr-x  2 user user 4096 Apr 15 08:30 Videos
输出解读:加了 -t 参数后,文件按修改时间从新到旧排列。

组合使用:详细列表 + 隐藏文件 + 人性化大小

ls -lha
$ ls -lha
total 88K
drwxr-xr-x  8 user user 4.0K May 12 09:30 .
drwxr-xr-x  3 root root 4.0K May  1 12:00 ..
-rw-------  1 user user 1.2K May 12 09:30 .bash_history
-rw-r--r--  1 user user  220 May  1 12:00 .bashrc
drwxr-xr-x  2 user user 4.0K May 10 08:00 .cache
drwxr-xr-x  3 user user 4.0K May  5 16:30 .config
drwxr-xr-x  2 user user 4.0K May  8 11:00 .local
-rw-r--r--  1 user user  807 May  1 12:00 .profile
drwxr-xr-x  2 user user 4.0K Apr 20 09:00 .ssh
-rw-r--r--  1 user user  47 May  9 14:20 .vimrc
drwxr-xr-x  2 user user 4.0K May 12 09:30 Desktop
drwxr-xr-x  3 user user 4.0K May 10 14:22 Documents
drwxr-xr-x  5 user user 4.0K May 11 18:05 Downloads
drwxr-xr-x  2 user user 4096 Apr 28 10:00 Music
drwxr-xr-x  2 user user 4096 May  1 20:15 Pictures
drwxr-xr-x  2 user user 4096 Apr 15 08:30 Videos
输出解读-lha 组合了详细信息 + 隐藏文件 + 人性化大小,是最常用的查看方式。注意 .bash_history 的权限是 -rw-------,表示只有所有者可读写,其他人无权限。

2. cd - 切换目录

cd(Change Directory)用于在不同的目录之间切换。

进入指定目录

cd /home/user/documents
$ pwd
/home/user

$ cd /home/user/documents
$ pwd
/home/user/documents

返回上一级目录

cd ..
$ pwd
/home/user/documents/projects

$ cd ..
$ pwd
/home/user/documents

返回上两级目录

cd ../..
$ pwd
/home/user/documents/projects/web/frontend

$ cd ../..
$ pwd
/home/user/documents/projects

返回用户主目录

cd ~
$ cd /tmp/some/deep/path
$ pwd
/tmp/some/deep/path

$ cd ~
$ pwd
/home/user

返回上一次所在目录

cd -
$ cd /var/log
$ pwd
/var/log

$ cd -
$ pwd
/home/user
输出解读cd - 会切换回上一次所在的目录,终端会打印出切换前的路径。

3. pwd - 显示当前目录路径

pwd(Print Working Directory)显示你当前所在的完整路径。

基本用法

pwd
$ cd /home/user/documents/projects
$ pwd
/home/user/documents/projects
输出解读:直接输出当前目录的绝对路径。在脚本中经常用来获取当前路径。

4. mkdir - 创建目录

mkdir(Make Directory)用于创建新目录。

创建单个目录

mkdir myfolder
$ ls
file.txt

$ mkdir myfolder
$ ls
file.txt  myfolder

创建多级目录

mkdir -p parent/child/grandchild
$ mkdir -p parent/child/grandchild
$ ls -R parent/
parent/:
child

parent/child:
grandchild

parent/child/grandchild:
输出解读:不加 -p 时,如果父目录不存在会报错。加了 -p 后会自动创建所有不存在的父目录。ls -R 可以递归查看目录结构。

同时创建多个目录

mkdir dir1 dir2 dir3
$ mkdir dir1 dir2 dir3
$ ls
dir1  dir2  dir3

创建目录并设置权限

mkdir -m 755 myfolder
$ mkdir -m 755 myfolder
$ ls -ld myfolder
drwxr-xr-x  2 user user 4096 May 12 10:00 myfolder
输出解读-m 755 在创建时就设定好了权限。

5. rmdir - 删除空目录

rmdir(Remove Directory)只能删除空目录

删除空目录

rmdir emptyfolder
$ ls
emptyfolder  myfolder

$ rmdir emptyfolder
$ ls
myfolder

删除非空目录会报错

rmdir myfolder
$ rmdir myfolder
rmdir: failed to remove 'myfolder': Directory not empty
输出解读:如果目录不为空,rmdir 会报错并拒绝删除。要删除非空目录需要用 rm -r

6. rm - 删除文件或目录

rm(Remove)用于删除文件或目录,是 Linux 中最需要谨慎使用的命令。

删除单个文件

rm file.txt
$ ls
file.txt  notes.md  readme.md

$ rm file.txt
$ ls
notes.md  readme.md

显示删除过程

rm -v notes.md readme.md
$ rm -v notes.md readme.md
removed 'notes.md'
removed 'readme.md'
输出解读:加了 -v 会显示删除了哪些文件。

交互式删除:删除前确认

rm -i important.txt
$ rm -i important.txt
rm: remove regular file 'important.txt'? y
输出解读:加了 -i 会在删除前询问确认,输入 y 确认删除,输入 n 取消。

递归删除目录

rm -r myfolder
$ ls
myfolder/
myfolder/file1.txt  myfolder/file2.txt  myfolder/subdir/

$ rm -r myfolder
$ ls

输出解读-r 递归删除目录及其所有内容。

⚠️ 警告rm -rf /rm -rf /* 会删除整个系统,切勿执行!


7. cp - 复制文件或目录

cp(Copy)用于复制文件或目录。

复制文件

cp source.txt destination.txt
$ ls
source.txt

$ cp source.txt destination.txt
$ ls
destination.txt  source.txt

复制文件到目录

cp -v source.txt /home/user/documents/
$ cp -v source.txt /home/user/documents/
'source.txt' -> '/home/user/documents/source.txt'
输出解读:加了 -v 会显示复制过程。

复制目录

cp -r sourcedir/ destdir/
$ ls sourcedir/
file1.txt  file2.txt  subdir/

$ cp -r sourcedir/ destdir/
$ ls destdir/
file1.txt  file2.txt  subdir/
输出解读:复制目录必须加 -r 参数。

保持文件属性

cp -p source.txt destination.txt
$ cp -p source.txt destination.txt
$ ls -l source.txt destination.txt
-rw-r--r-- 1 user user 256 May 10 09:00 source.txt
-rw-r--r-- 1 user user 256 May 10 09:00 destination.txt
输出解读:加了 -p 后,复制出来的文件保留了原始的时间戳和权限信息。

8. mv - 移动或重命名文件

mv(Move)用于移动文件到其他目录,或者给文件重命名。

重命名文件

mv oldname.txt newname.txt
$ ls
oldname.txt

$ mv oldname.txt newname.txt
$ ls
newname.txt

移动文件到目录

mv file.txt documents/
$ ls
file.txt  documents/

$ mv file.txt documents/
$ ls
documents/

$ ls documents/
file.txt

显示移动过程

mv -v report.pdf /home/user/documents/
$ mv -v report.pdf /home/user/documents/
'report.pdf' -> '/home/user/documents/report.pdf'
输出解读:加了 -v 会显示移动过程。

9. touch - 创建空文件或更新时间戳

touch 最常用于快速创建空文件。

创建空文件

touch newfile.txt
$ ls
$ touch newfile.txt
$ ls
newfile.txt

$ cat newfile.txt
输出解读:创建的空文件没有任何内容,cat 查看时输出为空。

同时创建多个文件

touch file1.txt file2.txt file3.txt
$ touch file1.txt file2.txt file3.txt
$ ls
file1.txt  file2.txt  file3.txt

更新文件时间戳

touch report.txt
$ ls -l report.txt
-rw-r--r-- 1 user user 1024 Apr 15 08:30 report.txt

$ touch report.txt
$ ls -l report.txt
-rw-r--r-- 1 user user 1024 May 12 10:15 report.txt
输出解读:对已存在的文件使用 touch,不会修改文件内容,但会将修改时间更新为当前时间。

10. find - 查找文件

find 是 Linux 中功能最强大的文件查找工具。

按名称查找

find /home/user -name "*.txt"
$ find /home/user -name "*.txt"
/home/user/documents/report.txt
/home/user/notes.txt
/home/user/Desktop/todo.txt
/home/user/downloads/readme.txt

按类型查找

find /home/user -type d -name "documents"
$ find /home/user -type d -name "documents"
/home/user/documents
输出解读-type d 限定只查找目录,-type f 限定只查找文件。

按大小查找

find /home/user -size +100M
$ find /home/user -size +100M
/home/user/downloads/ubuntu-22.04.iso
/home/user/videos/tutorial.mp4

按时间查找

find /home/user -name "*.log" -mtime -7
$ find /home/user -name "*.log" -mtime -7
/home/user/app/logs/error.log
/home/user/app/logs/access.log
/home/user/nginx/logs/error.log
输出解读-mtime -7 表示 7 天内修改过的文件。

查找并删除

find /home/user -name "*.tmp" -delete
$ find /home/user -name "*.tmp" -delete
$ echo $?
0
输出解读-delete 直接删除找到的文件。echo $? 返回 0 表示成功。

二、文件查看与编辑

1. cat - 查看文件内容

cat(Concatenate)用于查看文件全部内容,也用于合并文件。

基本用法

cat greeting.txt
$ cat greeting.txt
Hello, Linux!
Welcome to the command line world.
This is a sample text file.

显示行号

cat -n greeting.txt
$ cat -n greeting.txt
     1    Hello, Linux!
     2    Welcome to the command line world.
     3    This is a sample text file.
输出解读:加了 -n 后,每行前面会显示行号。

合并多个文件

cat file1.txt file2.txt > merged.txt
$ cat file1.txt
AAA
BBB

$ cat file2.txt
CCC
DDD

$ cat file1.txt file2.txt > merged.txt
$ cat merged.txt
AAA
BBB
CCC
DDD
输出解读cat 可以把多个文件的内容拼接在一起,通过 > 重定向到新文件。

2. less - 分页查看文件

less 用于分页查看大文件,不会一次性加载全部内容。

基本用法

less /var/log/syslog

进入 less 后的界面模拟:

/var/log/syslog (lines 1-24 of 1523)
May 12 09:00:01 server systemd[1]: Started Session 42 of user root.
May 12 09:00:05 server sshd[1234]: Accepted publickey for user from 192.168.1.10
May 12 09:01:12 server kernel: [12345.678] eth0: Link is Up 1000Mbps
May 12 09:02:30 server nginx[5678]: GET /index.html 200
May 12 09:03:15 server cron[9012]: (root) CMD (/usr/bin/backup.sh)
May 12 09:04:00 server systemd[1]: daily.timer: Starting timer...
:

less 常用快捷键

快捷键功能
空格向下翻页
b向上翻页
/关键词向下搜索
?关键词向上搜索
n下一个搜索结果
N上一个搜索结果
G跳到文件末尾
g跳到文件开头
q退出

3. headtail - 查看文件开头/结尾

head:查看文件前 10 行(默认)

head server.log
$ head server.log
[2026-05-12 08:00:01] INFO  Server started on port 8080
[2026-05-12 08:00:05] INFO  Database connection established
[2026-05-12 08:00:12] INFO  User admin logged in
[2026-05-12 08:01:30] WARN  Request timeout for /api/data
[2026-05-12 08:02:00] INFO  Cache cleared successfully
[2026-05-12 08:03:15] ERROR Failed to send email: connection refused
[2026-05-12 08:04:00] INFO  Scheduled task completed
[2026-05-12 08:05:22] INFO  New user registered: john@example.com
[2026-05-12 08:06:10] INFO  Backup started
[2026-05-12 08:07:00] INFO  Backup completed (2.3 MB)

head:指定行数

head -n 3 server.log
$ head -n 3 server.log
[2026-05-12 08:00:01] INFO  Server started on port 8080
[2026-05-12 08:00:05] INFO  Database connection established
[2026-05-12 08:00:12] INFO  User admin logged in

tail:查看文件后 5 行

tail -n 5 server.log
$ tail -n 5 server.log
[2026-05-12 09:55:00] INFO  Health check passed
[2026-05-12 09:56:30] WARN  Memory usage at 85%
[2026-05-12 09:57:15] INFO  GC completed, freed 120MB
[2026-05-12 09:58:00] ERROR Disk space low: /dev/sda1 at 92%
[2026-05-12 09:59:45] INFO  Server still running

tail:实时追踪文件更新

tail -f server.log
$ tail -f server.log
[2026-05-12 09:59:45] INFO  Server still running
[2026-05-12 10:00:01] INFO  New connection from 192.168.1.50
[2026-05-12 10:00:15] INFO  Request processed in 45ms
[2026-05-12 10:00:30] WARN  Slow query: SELECT * FROM orders (1.2s)
...
输出解读tail -f 会实时追踪文件的新增内容,常用于监控日志。按 Ctrl+C 退出。

4. grep - 文本搜索

grep 是 Linux 中最常用的文本搜索工具。

基本搜索

grep "ERROR" server.log
$ grep "ERROR" server.log
[2026-05-12 08:03:15] ERROR Failed to send email: connection refused
[2026-05-12 09:58:00] ERROR Disk space low: /dev/sda1 at 92%

显示行号

grep -n "ERROR" server.log
$ grep -n "ERROR" server.log
6:[2026-05-12 08:03:15] ERROR Failed to send email: connection refused
50:[2026-05-12 09:58:00] ERROR Disk space low: /dev/sda1 at 92%
输出解读:加了 -n 后,每行前面显示了行号(第 6 行和第 50 行)。

忽略大小写

grep -i "error" server.log
$ grep -i "error" server.log
[2026-05-12 08:03:15] ERROR Failed to send email: connection refused
[2026-05-12 08:15:00] error retrying connection to database
[2026-05-12 09:58:00] ERROR Disk space low: /dev/sda1 at 92%
输出解读:加了 -i 忽略大小写,所以小写的 error 也被匹配到了。

统计匹配行数

grep -c "ERROR" server.log
$ grep -c "ERROR" server.log
2
输出解读-c 只输出匹配到的行数。

显示匹配行的上下文

grep -C 2 "ERROR" server.log
$ grep -C 2 "ERROR" server.log
[2026-05-12 08:02:00] INFO  Cache cleared successfully
[2026-05-12 08:03:15] ERROR Failed to send email: connection refused
[2026-05-12 08:04:00] INFO  Scheduled task completed
--
[2026-05-12 09:57:15] INFO  GC completed, freed 120MB
[2026-05-12 09:58:00] ERROR Disk space low: /dev/sda1 at 92%
[2026-05-12 09:59:45] INFO  Server still running
输出解读-C 2 显示匹配行的前后各 2 行,-- 分隔了两组不连续的匹配结果。

反向匹配

grep -v "INFO" server.log
$ grep -v "INFO" server.log
[2026-05-12 08:01:30] WARN  Request timeout for /api/data
[2026-05-12 08:03:15] ERROR Failed to send email: connection refused
[2026-05-12 09:56:30] WARN  Memory usage at 85%
[2026-05-12 09:58:00] ERROR Disk space low: /dev/sda1 at 92%
输出解读-v 反向匹配,只显示不包含 "INFO" 的行。

5. nano - 简单文本编辑器

打开文件

nano myfile.txt

进入 nano 后的界面模拟:

  GNU nano 6.2                    myfile.txt

Hello, this is my first file.
I am learning Linux commands.
This editor is very easy to use.

                                  [ New File ]
^G Get Help   ^O Write Out  ^W Where Is   ^K Cut Text   ^T Execute
^X Exit       ^R Read File  ^Y Prev Page  ^U Paste Text ^J Justify

nano 常用快捷键

快捷键功能
Ctrl+O保存文件
Ctrl+X退出编辑器
Ctrl+W搜索文本
Ctrl+K剪切整行
Ctrl+U粘贴
Ctrl+\查找替换

6. vim - 高级文本编辑器

打开文件

vim config.yml

进入 vim 后的界面模拟:

  config.yml                         [New File]

server:
  host: 127.0.0.1
  port: 8080
  debug: true

database:
  host: localhost
  port: 5432
  name: myapp

~
~
~
-- INSERT --                          9,1           All

vim 基本操作流程

1. 打开文件:vim file.txt
2. 按 i 进入插入模式(左下角显示 --INSERT--)
3. 编辑内容...
4. 按 Esc 退出插入模式
5. 输入 :w 保存
6. 输入 :q 退出
7. 或者 :wq 保存并退出

vim 常用命令

命令功能
i进入插入模式
Esc退出插入模式
:w保存
:q退出
:wq保存并退出
:q!强制退出不保存
dd删除整行
yy复制整行
p粘贴
/关键词搜索
:%s/old/new/g全局替换

三、权限管理

1. chmod - 修改文件权限

chmod(Change Mode)用于修改文件或目录的访问权限。

查看当前权限

ls -l script.sh
$ ls -l script.sh
-rw-r--r-- 1 user user 256 May 12 10:00 script.sh
输出解读-rw-r--r-- 表示所有者可读写,组用户和其他人只读。这个脚本没有执行权限。

数字方式设置权限

chmod 755 script.sh
$ chmod 755 script.sh
$ ls -l script.sh
-rwxr-xr-x 1 user user 256 May 12 10:00 script.sh
输出解读755 = rwx(7)r-x(5)r-x(5),现在所有人都可以执行这个脚本了。

符号方式:给所有者添加执行权限

chmod u+x script.sh
$ chmod u+x script.sh
$ ls -l script.sh
-rwxr--r-- 1 user user 256 May 12 10:00 script.sh
输出解读u+x 表示给所有者(user)添加执行(execute)权限。

递归修改目录权限

chmod -R 755 /var/www/html/
输出解读-R 递归修改,目录下所有文件和子目录都会被设置。

权限数字对照表

数字二进制权限说明
7111rwx读取 + 写入 + 执行
6110rw-读取 + 写入
5101r-x读取 + 执行
4100r--只读
0000---无权限

2. chown - 修改文件所有者

chown(Change Owner)用于修改文件的所有者和所属组。

基本用法

sudo chown user:developers app.log
$ ls -l app.log
-rw-r--r-- 1 root root 2048 May 12 10:00 app.log

$ sudo chown user:developers app.log
$ ls -l app.log
-rw-r--r-- 1 root developers 2048 May 12 10:00 app.log
输出解读:文件所有者从 root 变为 user,所属组从 root 变为 developers

递归修改

sudo chown -R user:developers /var/www/html/

3. chgrp - 修改文件所属组

基本用法

sudo chgrp developers project/
$ ls -l project/
drwxr-xr-x 2 user user 4096 May 12 10:00 project/

$ sudo chgrp developers project/
$ ls -l project/
drwxr-xr-x 2 user developers 4096 May 12 10:00 project/

四、进程管理

1. ps - 查看进程

ps(Process Status)用于查看当前系统中运行的进程。

查看当前终端进程

ps
$ ps
  PID TTY          TIME CMD
 1234 pts/0    00:00:00 bash
 5678 pts/0    00:00:00 ps
输出解读PID 是进程ID,TTY 是终端,TIME 是累计CPU时间,CMD 是命令名。

查看所有进程

ps aux
$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1 169936 13280 ?        Ss   May10   0:15 /sbin/init
root       234  0.0  0.2  35872 16896 ?        Ss   May10   0:08 /usr/sbin/sshd
root       456  0.0  0.1  18360  6120 ?        Ss   May10   0:00 /usr/sbin/cron
mysql      789  0.3  2.5 1256780 204800 ?      Sl   May10   5:30 /usr/sbin/mysqld
www-data  1011  0.1  0.5  58432 40960 ?        S    May10   2:15 nginx: worker process
user      1234  0.0  0.1  21468  5120 pts/0    Ss   10:00   0:00 -bash
user      5678  0.0  0.0  37368  3420 pts/0    R+   10:05   0:00 ps aux

输出解读

  • USER:运行该进程的用户
  • PID:进程ID(杀死进程时需要用到)
  • %CPU/%MEM:CPU/内存使用率
  • STAT:进程状态(S=休眠,R=运行,Z=僵尸)

查找特定进程

ps aux | grep nginx
$ ps aux | grep nginx
root       1010  0.0  0.1  20560  8960 ?        Ss   May10   0:05 nginx: master process
www-data  1011  0.1  0.5  58432 40960 ?        S    May10   2:15 nginx: worker process
user      5679  0.0  0.0  37368  3420 pts/0    S+   10:05   0:00 grep --color=auto nginx

2. top - 实时进程监控

基本用法

top

界面模拟:

top - 10:05:32 up 15 days,  3:22,  2 users,  load average: 0.52, 0.58, 0.59
Tasks: 156 total,   1 running, 155 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.2 us,  1.1 sy,  0.0 ni, 95.5 id,  0.2 wa,  0.0 hi,  0.0 si
MiB Mem :   7892.5 total,   2341.2 free,   3456.8 used,   2094.5 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   4102.3 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    789 mysql     20   0 1256780 204800  12340 S   3.2   2.5   5:30.15 mysqld
   1011 www-data  20   0   58432  40960   8760 S   1.1   0.5   2:15.30 nginx
   2048 user      20   0  456789  98304  23450 S   0.5   1.2   1:05.42 python3
   3001 user      20   0  123456  34560  12340 S   0.3   0.4   0:45.10 node
      1 root      20   0  169936  13280   8560 S   0.0   0.2   0:15.23 systemd
    234 root      20   0   35872  16896   9870 S   0.0   0.2   0:08.45 sshd

top 输出解读

区域说明
第一行系统时间、运行天数、用户数、负载均衡
第二行总进程数、运行/休眠/停止/僵尸进程数
第三行CPU 使用率(us=用户,sy=内核,id=空闲)
第四行内存使用情况(总量/空闲/已用/缓存)
进程列表按 CPU 使用率排序

top 常用快捷键

快捷键功能
P按 CPU 使用率排序
M按内存使用率排序
T按运行时间排序
k杀死进程(输入 PID)
q退出

3. kill - 终止进程

基本终止

kill 1234
$ kill 1234
$ echo $?
0
输出解读:发送默认的 SIGTERM 信号(15),请求进程正常退出。$? 为 0 表示成功。

强制终止

kill -9 1234
$ kill -9 1234
$ echo $?
0
输出解读-9 发送 SIGKILL 信号,强制立即终止进程。

查看所有可用信号

kill -l
$ kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
 5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE
 9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2
13) SIGPIPE     14) SIGALRM     15) SIGTERM     17) SIGCHLD
...
输出解读:常用的是 9(SIGKILL)和 15(SIGTERM)。

根据进程名终止

killall nginx
输出解读:根据进程名终止所有匹配的进程,不需要 PID。

4. bgfgjobs - 后台任务管理

基本用法

python train.py
# 按 Ctrl+Z 暂停
bg
jobs
fg %1
$ python train.py
^Z
[1]+  Stopped                 python train.py

$ jobs
[1]+  Stopped                 python train.py

$ bg
[1]+ python train.py &

$ jobs
[1]+  Running                 python train.py &

$ fg %1
python train.py

输出解读

  1. Ctrl+Z 暂停前台任务
  2. jobs 查看后台任务状态
  3. bg 让暂停的任务在后台继续运行
  4. fg %1 把后台任务调到前台

五、磁盘与存储

1. df - 查看磁盘空间

df(Disk Free)用于查看文件系统的磁盘空间使用情况。

基本用法

df
$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      524288000 209715200 314572800  41% /
/dev/sda2      104857600  52428800  52428800  50% /home
tmpfs           4096000        0   4096000   0% /dev/shm
/dev/sdb1      999999999 800000000 199999999  81% /data

人性化显示

df -h
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       500G  200G  300G  41% /
/dev/sda2       100G   50G   50G  50% /home
tmpfs           4.0G     0  4.0G   0% /dev/shm
/dev/sdb1       954G  763G  191G  81% /data
输出解读:加了 -h 后,大小从 KB 变成了 G。注意 /data 分区已使用 81%。

查看特定路径

df -h /home
$ df -h /home
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       100G   50G   50G  50% /home

2. du - 查看目录大小

du(Disk Usage)用于查看目录或文件的磁盘占用空间。

查看目录总大小

du -sh /home/user
$ du -sh /home/user
12G     /home/user
输出解读-s 显示总计,-h 人性化显示。用户主目录共占用 12GB。

查看子目录大小

du -h --max-depth=1 /home/user
$ du -h --max-depth=1 /home/user
4.0K    /home/user/Desktop
256M    /home/user/Documents
5.2G    /home/user/Downloads
128M    /home/user/Music
2.1G    /home/user/Pictures
4.3G    /home/user/Videos
12G     /home/user
输出解读--max-depth=1 只显示一级子目录的大小。

按大小排序

du -h --max-depth=1 /home/user | sort -h
$ du -h --max-depth=1 /home/user | sort -h
4.0K    /home/user/Desktop
256M    /home/user/Documents
128M    /home/user/Music
2.1G    /home/user/Pictures
4.3G    /home/user/Videos
5.2G    /home/user/Downloads
12G     /home/user

3. mountumount - 挂载/卸载

查看已挂载的文件系统

mount
$ mount
/dev/sda1 on / type ext4 (rw,relatime)
/dev/sda2 on /home type ext4 (rw,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
/dev/sdb1 on /data type ext4 (rw,relatime)

挂载设备

sudo mount /dev/sdc1 /mnt/usb
$ sudo mount /dev/sdc1 /mnt/usb
$ df -h /mnt/usb
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc1        32G   12G   20G  38% /mnt/usb

卸载

sudo umount /mnt/usb
$ sudo umount /mnt/usb
$ df -h /mnt/usb
df: /mnt/usb: not found

六、网络相关

1. ping - 测试网络连通性

基本用法

ping -c 4 google.com
$ ping -c 4 google.com
PING google.com (142.250.80.14) 56(84) bytes of data.
64 bytes from 142.250.80.14: icmp_seq=1 ttl=117 time=12.3 ms
64 bytes from 142.250.80.14: icmp_seq=2 ttl=117 time=11.8 ms
64 bytes from 142.250.80.14: icmp_seq=3 ttl=117 time=13.1 ms
64 bytes from 142.250.80.14: icmp_seq=4 ttl=117 time=12.0 ms

--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 11.8/12.3/13.1/0.5 ms

输出解读

  • time=12.3 ms:往返延迟
  • 0% packet loss:丢包率,0% 表示网络良好
  • rtt min/avg/max:最小/平均/最大延迟

2. curlwget - 下载文件

wget 下载文件

wget https://example.com/file.zip
$ wget https://example.com/file.zip
--2026-05-12 10:10:00--  https://example.com/file.zip
Resolving example.com... 93.184.216.34
Connecting to example.com... connected.
HTTP request sent, awaiting response... 200 OK
Length: 15728640 (15M) [application/zip]
Saving to: 'file.zip'

file.zip           100%[===================>]  15.00M  5.2MB/s    in 2.9s

2026-05-12 10:10:03 (5.2 MB/s) - 'file.zip' saved [15728640/15728640]

curl 查看 HTTP 头

curl -I https://example.com
$ curl -I https://example.com
HTTP/2 200
content-type: text/html; charset=UTF-8
server: nginx/1.24.0
date: Mon, 12 May 2026 02:10:00 GMT
content-length: 1256
cache-control: max-age=3600
输出解读-I 只获取 HTTP 响应头,不下载内容。

curl 发送 POST 请求

curl -X POST -d "name=test&age=25" https://example.com/api/user
$ curl -X POST -d "name=test&age=25" https://example.com/api/user
{"status":"ok","message":"User created","id":12345}

3. ss - 查看网络连接

查看监听端口

ss -tlnp
$ ss -tlnp
State   Recv-Q  Send-Q   Local Address:Port    Peer Address:Port  Process
LISTEN  0       128      0.0.0.0:22             0.0.0.0:*          users:(("sshd",pid=234,fd=3))
LISTEN  0       511      0.0.0.0:80             0.0.0.0:*          users:(("nginx",pid=1010,fd=6))
LISTEN  0       511      0.0.0.0:443            0.0.0.0:*          users:(("nginx",pid=1010,fd=7))
LISTEN  0       80       127.0.0.1:3306          0.0.0.0:*          users:(("mysqld",pid=789,fd=22))
LISTEN  0       128      0.0.0.0:5432           0.0.0.0:*          users:(("postgres",pid=567,fd=3))

输出解读

  • LISTEN:正在监听的端口
  • 22 = SSH,80 = HTTP,443 = HTTPS,3306 = MySQL
  • Process:占用该端口的进程名和 PID

4. ssh - 远程连接

基本连接

ssh user@192.168.1.100
$ ssh user@192.168.1.100
The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ED25519 key fingerprint is SHA256:abc123def456ghi789jkl012mno345pqr678stu901.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.1.100' (ED25519) to the list of known hosts.
user@192.168.1.100's password:
Welcome to Ubuntu 24.04 LTS (GNU/Linux 6.8.0-generic x86_64)

Last login: Mon May 12 09:00:00 2026 from 192.168.1.1
user@server:~$
输出解读:首次连接时会要求确认主机指纹。登录后提示符变为 user@server:~$

指定端口

ssh -p 2222 user@192.168.1.100

5. scp - 远程复制文件

上传到远程

scp report.pdf user@192.168.1.100:/home/user/
$ scp report.pdf user@192.168.1.100:/home/user/
user@192.168.1.100's password:
report.pdf                                     100%  512KB   2.1MB/s   00:00

从远程下载

scp user@192.168.1.100:/home/user/backup.zip ./
$ scp user@192.168.1.100:/home/user/backup.zip ./
user@192.168.1.100's password:
backup.zip                                     100%   50MB   8.5MB/s   00:05

七、系统信息

1. uname - 查看系统信息

查看所有信息

uname -a
$ uname -a
Linux server 6.8.0-40-generic #40-Ubuntu SMP x86_64 GNU/Linux
输出解读:依次是:内核名称、主机名、内核版本、硬件架构。

查看内核版本

uname -r
$ uname -r
6.8.0-40-generic

查看硬件架构

uname -m
$ uname -m
x86_64

2. free - 查看内存使用

基本用法

free -h
$ free -h
               total        used        free      shared  buff/cache   available
Mem:           7.8Gi       3.4Gi       2.3Gi       256Mi       2.1Gi       4.0Gi
Swap:          2.0Gi       0.0Gi       2.0Gi

输出解读

  • total:总内存 7.8GB
  • used:已使用 3.4GB
  • free:完全空闲 2.3GB
  • available:实际可用 4.0GB(包含可释放的缓存)

3. uptime - 查看系统运行时间

基本用法

uptime
$ uptime
 10:30:45 up 15 days,  3:22,  2 users,  load average: 0.52, 0.58, 0.59

输出解读

  • up 15 days, 3:22:已连续运行 15 天 3 小时 22 分钟
  • 2 users:当前有 2 个用户登录
  • load average:1/5/15 分钟的平均负载,数值越低越空闲

4. hostname - 查看主机名

基本用法

hostname
$ hostname
server

$ hostname -I
192.168.1.100 10.0.0.1
输出解读hostname -I 显示所有网络接口的 IP 地址。

八、压缩与解压

1. tar - 打包与解包

tar 是 Linux 中最常用的打包压缩工具。

打包并压缩

tar -czvf backup.tar.gz documents/
$ tar -czvf backup.tar.gz documents/
documents/
documents/report.pdf
documents/notes.txt
documents/images/
documents/images/photo1.jpg
documents/images/photo2.jpg
输出解读:逐行列出打包的每个文件。

查看压缩包内容

tar -tvf backup.tar.gz
$ tar -tvf backup.tar.gz
drwxr-xr-x user/user     0 2026-05-12 10:00 documents/
-rw-r--r-- user/user  5120 2026-05-10 09:30 documents/report.pdf
-rw-r--r-- user/user  1024 2026-05-11 14:20 documents/notes.txt
drwxr-xr-x user/user     0 2026-05-09 08:00 documents/images/
-rw-r--r-- user/user 204800 2026-05-09 08:15 documents/images/photo1.jpg
-rw-r--r-- user/user 153600 2026-05-09 08:20 documents/images/photo2.jpg

解压到当前目录

tar -xzvf backup.tar.gz
$ tar -xzvf backup.tar.gz
documents/
documents/report.pdf
documents/notes.txt
documents/images/
documents/images/photo1.jpg
documents/images/photo2.jpg

解压到指定目录

tar -xzvf backup.tar.gz -C /tmp/restore/
输出解读-C /tmp/restore/ 指定解压目标目录。

tar 参数说明

参数功能
-c创建新归档
-x解包
-t查看内容
-v显示过程
-f指定文件名
-zgzip 压缩/解压
-jbzip2 压缩/解压
-C指定解压目录

2. zipunzip

压缩目录

zip -r project.zip project/
$ zip -r project.zip project/
  adding: project/ (stored 0%)
  adding: project/index.html (deflated 72%)
  adding: project/style.css (deflated 65%)
  adding: project/app.js (deflated 78%)
  adding: project/images/ (stored 0%)
  adding: project/images/logo.png (deflated 15%)
输出解读deflated 72% 表示该文件压缩后缩小了 72%。

查看压缩包内容

unzip -l project.zip
$ unzip -l project.zip
Archive:  project.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  05-12-2026 10:00   project/
     4096  05-12-2026 10:00   project/index.html
     2048  05-12-2026 10:00   project/style.css
     8192  05-12-2026 10:00   project/app.js
        0  05-12-2026 10:00   project/images/
    51200  05-12-2026 10:00   project/images/logo.png
---------                     -------
    65536                     6 files

解压到指定目录

unzip project.zip -d /tmp/myproject/
$ unzip project.zip -d /tmp/myproject/
Archive:  project.zip
  inflating: /tmp/myproject/project/index.html
  inflating: /tmp/myproject/project/style.css
  inflating: /tmp/myproject/project/app.js
  inflating: /tmp/myproject/project/images/logo.png
 extracting: /tmp/myproject/project/

3. gzipgunzip

压缩文件

gzip access.log
$ ls -lh access.log
-rw-r--r-- 1 user user 15M May 12 10:00 access.log

$ gzip access.log
$ ls -lh access.log.gz
-rw-r--r-- 1 user user 1.2M May 12 10:00 access.log.gz
输出解读:大小从 15MB 缩小到 1.2MB,压缩率非常高。

解压文件

gunzip access.log.gz
$ gunzip access.log.gz
$ ls -lh access.log
-rw-r--r-- 1 user user 15M May 12 10:00 access.log

九、用户管理

1. useradduserdel - 添加/删除用户

添加用户

sudo useradd -m devuser
$ sudo useradd -m devuser
$ ls -ld /home/devuser
drwxr-xr-x 2 devuser devuser 4096 May 12 10:00 /home/devuser
输出解读-m 自动创建主目录。

设置密码

sudo passwd devuser
$ sudo passwd devuser
New password:
Retype new password:
passwd: password updated successfully

删除用户

sudo userdel -r devuser
$ sudo userdel -r devuser
$ ls /home/
user
输出解读-r 同时删除用户主目录和邮件目录。

2. usermod - 修改用户属性

添加用户到组

sudo usermod -aG sudo,developers devuser
$ id devuser
uid=1001(devuser) gid=1001(devuser) groups=1001(devuser)

$ sudo usermod -aG sudo,developers devuser
$ id devuser
uid=1001(devuser) gid=1001(devuser) groups=1001(devuser),27(sudo),1002(developers)
输出解读-aG 将用户追加到指定组。

3. susudo - 切换用户/提权

使用 sudo 执行命令

sudo whoami
$ whoami
user

$ sudo whoami
[sudo] password for user:
root
输出解读sudo 以 root 权限执行命令,需要输入当前用户的密码。

切换到 root 用户

su - root
$ su - root
Password:
root@server:~#
输出解读:提示符从 $ 变成 #,表示当前是 root 用户。

十、实用技巧

1. 管道与重定向

输出重定向(覆盖)

echo "Hello, World!" > hello.txt
$ echo "Hello, World!" > hello.txt
$ cat hello.txt
Hello, World!

输出重定向(追加)

echo "Second line" >> hello.txt
$ echo "Second line" >> hello.txt
$ cat hello.txt
Hello, World!
Second line

错误输出重定向

ls /nonexistent 2> error.log
$ ls /nonexistent 2> error.log
$ cat error.log
ls: cannot access '/nonexistent': No such file or directory

管道

ps aux | grep "nginx" | wc -l
$ ps aux | grep "nginx" | wc -l
3
输出解读:管道 | 将三个命令串联。

2. 命令历史

查看历史

history
$ history
    1  cd /home/user
    2  ls -la
    3  cat config.yml
    4  vim script.sh
    5  python app.py
    6  git commit -m "fix bug"
    7  history

执行第 N 条命令

!5
$ !5
python app.py
Server started on http://localhost:8080

执行最近以某词开头的命令

!git
$ !git
git commit -m "fix bug"
[main abc1234] fix bug

3. 别名设置

设置别名

alias ll='ls -la'
$ alias ll='ls -la'
$ ll
total 32
drwxr-xr-x  8 user user 4096 May 12 10:00 .
drwxr-xr-x  3 root root 4096 May  1 12:00 ..
...

查看所有别名

alias
$ alias
alias ll='ls -la'
alias la='ls -A'
alias l='ls -CF'

4. 常用快捷键

快捷键功能
Ctrl + C终止当前命令
Ctrl + Z暂停当前命令
Ctrl + D退出当前 Shell
Ctrl + L清屏
Ctrl + A光标移到行首
Ctrl + E光标移到行尾
Ctrl + U删除光标前所有内容
Ctrl + K删除光标后所有内容
Ctrl + R搜索历史命令
Tab自动补全

5. 实用组合命令

统计代码行数

find . -name "*.py" | xargs wc -l
$ find . -name "*.py" | xargs wc -l
    120 main.py
     85 utils.py
    256 models.py
     42 config.py
    503 total

批量重命名

for f in *.txt; do mv "$f" "${f%.txt}.bak"; done
$ for f in *.txt; do mv "$f" "${f%.txt}.bak"; done
$ ls
file1.bak  file2.bak  file3.bak  readme.bak

后台运行

nohup python app.py > output.log 2>&1 &
$ nohup python app.py > output.log 2>&1 &
[1] 12345

$ jobs
[1]+  Running                 nohup python app.py > output.log 2>&1 &
输出解读nohup 让程序在后台持续运行。

查看端口占用

lsof -i :80
$ lsof -i :80
COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx    1010     root    6u  IPv4  12345      0t0  TCP *:http (LISTEN)
nginx    1011 www-data    7u  IPv4  12346      0t0  TCP *:http (LISTEN)

附录:常用命令速查表

命令功能常用示例
ls列出目录ls -la
cd切换目录cd /home
pwd当前目录pwd
mkdir创建目录mkdir -p a/b/c
rm删除rm -rf folder
cp复制cp -r src dst
mv移动/重命名mv old new
cat查看文件cat file.txt
less分页查看less file.txt
head查看开头head -n 20 file
tail查看结尾tail -f file.log
grep搜索文本grep -rn "text" .
find查找文件find . -name "*.txt"
chmod修改权限chmod 755 file
chown修改所有者chown user:group file
ps查看进程ps aux
top进程监控top
kill终止进程kill -9 PID
df磁盘空间df -h
du目录大小du -sh *
tar打包压缩tar -czvf a.tar.gz dir/
ssh远程连接ssh user@host
scp远程复制scp file user@host:/path
wget下载文件wget URL
curl请求网络curl -O URL
free内存使用free -h
uname系统信息uname -a
uptime运行时间uptime

📚 学习建议

  1. 每天练习几个命令,逐步积累
  2. 使用 man 命令 查看详细帮助文档(如 man ls
  3. 使用 命令 --help 查看快速帮助
  4. 在虚拟机或 Docker 中练习,避免误操作影响生产环境
  5. 善用 Tab 自动补全,提高效率

本文档持续更新,欢迎收藏备用!

查看人数:25
上一篇: Windows 控制台命令教学指南  下一篇: Token:AI大模型时代的“最小语言积木”
评论
评论已关闭