【linux核心命令】
- 一级目录
-
-
- [1. 使用 `gzip` 压缩为 `.gz` 格式](#1. 使用
gzip
压缩为.gz
格式) - [2. 使用 `bzip2` 压缩为 `.bz2` 格式](#2. 使用
bzip2
压缩为.bz2
格式) - [3. 使用 `xz` 压缩为 `.xz` 格式](#3. 使用
xz
压缩为.xz
格式) - [4. 使用 `zip` 压缩为 `.zip` 格式](#4. 使用
zip
压缩为.zip
格式) - [5. 使用 `tar` 结合压缩工具创建归档压缩包](#5. 使用
tar
结合压缩工具创建归档压缩包) - [1. `.tar`(仅归档)](#1.
.tar
(仅归档)) - [2. `.tar.gz`](#2.
.tar.gz
) - [3. `.tar.bz2`](#3.
.tar.bz2
) - [4. `.zip`](#4.
.zip
) - [5. `.tar.xz`](#5.
.tar.xz
) - 代码示例
- [1. `useradd`(创建用户)](#1.
useradd
(创建用户)) - [2. `passwd`(设置或修改用户密码)](#2.
passwd
(设置或修改用户密码)) - [3. `userdel`(删除用户)](#3.
userdel
(删除用户)) - [4. `usermod`(修改用户属性)](#4.
usermod
(修改用户属性)) - [5. `groupadd`(创建用户组)](#5.
groupadd
(创建用户组)) - [6. `groupdel`(删除用户组)](#6.
groupdel
(删除用户组)) - [7. `groups`(查看用户所属组)](#7.
groups
(查看用户所属组)) - [8. `id`(查看用户的身份信息)](#8.
id
(查看用户的身份信息)) - [1. `ps` - 查看进程信息](#1.
ps
- 查看进程信息) - [2. `top` - 动态监控进程](#2.
top
- 动态监控进程) - [3. `pstree` - 以树状结构显示进程](#3.
pstree
- 以树状结构显示进程) - [4. `kill` - 终止进程](#4.
kill
- 终止进程) - [5. `killall` - 根据进程名终止进程](#5.
killall
- 根据进程名终止进程) - [6. `nice` 和 `renice` - 调整进程优先级](#6.
nice
和renice
- 调整进程优先级) - [7. `jobs`、`bg` 和 `fg` - 作业控制](#7.
jobs
、bg
和fg
- 作业控制)
- [1. 使用 `gzip` 压缩为 `.gz` 格式](#1. 使用
-
一级目录
1. 使用 gzip
压缩为 .gz
格式
知识点
gzip
是一种广泛使用的压缩工具,它能对单个文件进行压缩,压缩后的文件会添加 .gz
扩展名,原文件会被覆盖。gzip
压缩速度较快,适合日常对文件进行简单压缩。
代码示例
假设你有一个名为 example.c
的 C 文件,要将其压缩为 .gz
格式,可以执行以下命令:
bash
gzip example.c
执行该命令后,example.c
文件会被压缩成 example.c.gz
,原 example.c
文件将不存在。

解压操作
若要解压该文件,可以使用 gunzip
命令:
bash
gunzip example.c.gz
执行后,example.c.gz
文件会被解压为 example.c
。
2. 使用 bzip2
压缩为 .bz2
格式
知识点
bzip2
提供比 gzip
更高的压缩比,但压缩和解压速度相对较慢。它同样是对单个文件进行压缩,压缩后的文件会添加 .bz2
扩展名,原文件会被覆盖。
代码示例
对 example.c
文件进行 bzip2
压缩:
bash
bzip2 example.c
执行此命令后,会生成 example.c.bz2
文件,原 example.c
文件消失。
解压操作
使用 bunzip2
命令进行解压:
bash
bunzip2 example.c.bz2
解压后,会恢复出 example.c
文件。
3. 使用 xz
压缩为 .xz
格式
知识点
xz
是一种高效的压缩工具,能实现非常高的压缩比,但压缩和解压过程通常需要更多的时间和系统资源。压缩后的文件会添加 .xz
扩展名,原文件会被覆盖。
代码示例
对 example.c
文件使用 xz
进行压缩:
bash
xz example.c
执行后,会得到 example.c.xz
文件,原 example.c
文件被移除。
解压操作
使用以下命令进行解压:
bash
xz -d example.c.xz
解压完成后,example.c
文件会被恢复。
4. 使用 zip
压缩为 .zip
格式
知识点
zip
是一种跨平台的压缩工具,可以对单个或多个文件、目录进行压缩,压缩后的文件以 .zip
为扩展名,原文件不会被覆盖。它常用于在不同操作系统之间交换文件。
代码示例
如果只压缩单个 example.c
文件:
bash
zip example.zip example.c
若要压缩多个 C 文件,比如 example1.c
和 example2.c
:
bash
zip examples.zip example1.c example2.c
解压操作
使用 unzip
命令解压 .zip
文件:
bash
unzip example.zip
或者对于包含多个文件的 examples.zip
:
bash
unzip examples.zip
5. 使用 tar
结合压缩工具创建归档压缩包
知识点
tar
本身是一个归档工具,可将多个文件或目录合并成一个文件,再结合 gzip
、bzip2
或 xz
等压缩工具可以创建不同格式的归档压缩包,如 .tar.gz
、.tar.bz2
、.tar.xz
等。这种方式适合对多个相关文件或目录进行打包压缩。
代码示例
- 创建
.tar.gz
压缩包:
bash
tar -czf example.tar.gz example.c
这里 -c
表示创建归档文件,-z
表示使用 gzip
进行压缩,-f
用于指定归档文件的名称。
- 创建
.tar.bz2
压缩包:
bash
tar -cjf example.tar.bz2 example.c
其中 -j
表示使用 bzip2
进行压缩。
- 创建
.tar.xz
压缩包:
bash
tar -cJf example.tar.xz example.c
-J
表示使用 xz
进行压缩。
解压操作
- 解压
.tar.gz
文件:
bash
tar -xzf example.tar.gz
-x
表示从归档文件中提取文件。
- 解压
.tar.bz2
文件:
bash
tar -xjf example.tar.bz2
- 解压
.tar.xz
文件:
bash
tar -xJf example.tar.xz
1. .tar
(仅归档)
相关知识点
tar
是 Linux 中常用的归档工具,它可以将多个文件或目录合并成一个文件,但不进行压缩。
代码示例及运行结果
- 归档:
bash
# 将目录 dir 中的所有文件归档成 a.tar
shaseng@ubuntu:~$ tar cf a.tar dir/*
运行结果:当前目录下生成 a.tar
文件,该文件包含 dir
目录中的所有文件和子目录的信息。
- 查看归档内容:
bash
# 查看归档文件 a.tar
shaseng@ubuntu:~$ tar tf a.tar
运行结果:终端会列出 a.tar
中包含的所有文件和目录的名称。
- 释放归档:
bash
# 释放归档文件 a.tar
shaseng@ubuntu:~$ tar xf a.tar
运行结果:a.tar
中的文件和目录会被释放到当前目录。
- 指定路径释放:
bash
# 将文件释放到 /tmp
shaseng@ubuntu:~$ tar -xf a.tar -C /tmp
运行结果:a.tar
中的文件和目录会被释放到 /tmp
目录下。
2. .tar.gz
相关知识点
先使用 tar
进行归档,再使用 gzip
进行压缩,具有较好的压缩比和较快的处理速度,是一种常用的压缩格式。
代码示例及运行结果
- 归档并压缩:
bash
# 将目录 dir 中的所有文件归档并压缩为 gz 格式
shaseng@ubuntu:~$ tar czf a.tar.gz dir/*
运行结果:当前目录下生成 a.tar.gz
文件,它是 dir
目录内容经过归档和压缩后的文件。
- 查看压缩内容:
bash
# 查看压缩文件 a.tar.gz
shaseng@ubuntu:~$ tar tf a.tar.gz
运行结果:终端会列出 a.tar.gz
中包含的所有文件和目录的名称。
- 解压:
bash
# 解压压缩文件 a.tar.gz
shaseng@ubuntu:~$ tar xzf a.tar.gz
运行结果:a.tar.gz
中的文件和目录会被解压到当前目录。
- 指定路径解压:
bash
# 将文件解压到 /tmp
shaseng@ubuntu:~$ tar -xzf a.tar.gz -C /tmp
运行结果:a.tar.gz
中的文件和目录会被解压到 /tmp
目录下。
3. .tar.bz2
相关知识点
先使用 tar
归档,再使用 bzip2
压缩,压缩比通常比 .tar.gz
更高,但压缩和解压速度相对较慢。
代码示例及运行结果
- 归档并压缩:
bash
# 将目录 dir 中的所有文件归档并压缩为 bz2 格式
shaseng@ubuntu:~$ tar cjf a.tar.bz2 dir/*
运行结果:当前目录下生成 a.tar.bz2
文件,它是 dir
目录内容经过归档和 bzip2
压缩后的文件。
- 查看压缩内容:
bash
# 查看压缩文件 a.tar.bz2
shaseng@ubuntu:~$ tar tf a.tar.bz2
运行结果:终端会列出 a.tar.bz2
中包含的所有文件和目录的名称。
- 解压:
bash
# 解压压缩文件 a.tar.bz2
shaseng@ubuntu:~$ tar xjf a.tar.bz2
运行结果:a.tar.bz2
中的文件和目录会被解压到当前目录。
- 指定路径解压:
bash
# 将文件解压到 /tmp
shaseng@ubuntu:~$ tar -xjf a.tar.bz2 -C /tmp
运行结果:a.tar.bz2
中的文件和目录会被解压到 /tmp
目录下。
4. .zip
相关知识点
一种跨平台的压缩格式,在 Windows、Linux 和 macOS 等系统中都广泛支持,可使用 zip
命令进行压缩,unzip
命令进行解压。
代码示例及运行结果
- 压缩:
bash
# 将目录 dir 中的所有文件压缩为 zip 格式
shaseng@ubuntu:~$ zip -r a.zip dir/*
运行结果:当前目录下生成 a.zip
文件,它包含 dir
目录中的所有文件和子目录。
- 查看压缩内容:
bash
# 查看压缩文件 a.zip
shaseng@ubuntu:~$ unzip -l a.zip
运行结果:终端会列出 a.zip
中包含的所有文件和目录的名称、大小等信息。
- 解压:
bash
# 解压压缩文件 a.zip
shaseng@ubuntu:~$ unzip a.zip
运行结果:a.zip
中的文件和目录会被解压到当前目录。
- 指定路径解压:
bash
# 将文件解压到 /tmp
shaseng@ubuntu:~$ unzip a.zip -d /tmp
运行结果:a.zip
中的文件和目录会被解压到 /tmp
目录下。
5. .tar.xz
相关知识点
先使用 tar
归档,再使用 xz
算法压缩,能实现很高的压缩比,但压缩和解压过程相对较慢,消耗资源较多。
代码示例及运行结果
- 归档并压缩:
bash
# 将目录 dir 中的所有文件归档并压缩为 xz 格式
shaseng@ubuntu:~$ tar cJf a.tar.xz dir/*
运行结果:当前目录下生成 a.tar.xz
文件,它是 dir
目录内容经过归档和 xz
压缩后的文件。
- 查看压缩内容:
bash
# 查看压缩文件 a.tar.xz
shaseng@ubuntu:~$ tar tf a.tar.xz
运行结果:终端会列出 a.tar.xz
中包含的所有文件和目录的名称。
- 解压:
bash
# 解压压缩文件 a.tar.xz
shaseng@ubuntu:~$ tar xJf a.tar.xz
运行结果:a.tar.xz
中的文件和目录会被解压到当前目录。
- 指定路径解压:
bash
# 将文件解压到 /tmp
shaseng@ubuntu:~$ tar -xJf a.tar.xz -C /tmp
运行结果:a.tar.xz
中的文件和目录会被解压到 /tmp
目录下。
1. 文件和目录的三种基本权限
- 读取(r):对于文件,允许查看文件内容;对于目录,允许列出目录中的文件和子目录。
- 写入(w):对于文件,允许修改文件内容;对于目录,允许在目录中创建、删除或重命名文件和子目录。
- 执行(x):对于文件,允许将其作为程序执行;对于目录,允许进入该目录。
2. 三种权限对象
- 所有者(u):文件或目录的创建者。
- 所属组(g):与文件或目录相关联的用户组。
- 其他用户(o):既不是所有者也不属于所属组的其他用户。
3. 权限表示方法
- 数字表示法 :
r
对应数字 4w
对应数字 2x
对应数字 1- 无权限对应数字 0
- 例如,权限
rwx
用数字表示为 7(4 + 2 + 1),rw-
表示为 6(4 + 2 + 0)。
- 符号表示法 :
+
表示添加权限-
表示移除权限=
表示设置权限
4. 常用权限管理命令
chmod
:用于修改文件或目录的权限。chown
:用于修改文件或目录的所有者和所属组。chgrp
:用于修改文件或目录的所属组。
代码示例
1. chmod
命令
数字表示法
bash
# 创建一个测试文件
touch test_file.txt
# 查看文件初始权限
ls -l test_file.txt
# 将文件所有者权限设置为 rwx,所属组权限设置为 rw-,其他用户权限设置为 r--
chmod 764 test_file.txt
# 再次查看文件权限
ls -l test_file.txt
解释 :初始时,test_file.txt
有其默认权限。执行 chmod 764 test_file.txt
后,所有者拥有读、写、执行权限(7 = 4 + 2 + 1),所属组拥有读、写权限(6 = 4 + 2 + 0),其他用户拥有读权限(4 = 4 + 0 + 0)。
符号表示法
bash
# 为所属组添加执行权限
chmod g+x test_file.txt
# 查看文件权限
ls -l test_file.txt
# 移除其他用户的写入权限
chmod o-w test_file.txt
# 查看文件权限
ls -l test_file.txt
解释 :chmod g+x test_file.txt
为所属组添加了执行权限;chmod o-w test_file.txt
移除了其他用户的写入权限。
2. chown
命令
bash
# 创建一个新文件
touch new_file.txt
# 查看文件的所有者和所属组
ls -l new_file.txt
# 将文件的所有者改为 user2,所属组改为 group2(假设 user2 和 group2 存在)
sudo chown user2:group2 new_file.txt
# 再次查看文件的所有者和所属组
ls -l new_file.txt
解释 :chown
命令可以同时修改文件的所有者和所属组。使用 sudo
是因为修改文件所有者和所属组通常需要管理员权限。
3. chgrp
命令
bash
# 创建一个测试目录
mkdir test_dir
# 查看目录的所属组
ls -ld test_dir
# 将目录的所属组改为 group3(假设 group3 存在)
sudo chgrp group3 test_dir
# 再次查看目录的所属组
ls -ld test_dir
解释 :chgrp
命令专门用于修改文件或目录的所属组。同样,使用 sudo
是为了获取足够的权限。
1. useradd
(创建用户)
知识点
- 功能 :用于在系统中创建新用户账户。新用户创建后会在
/etc/passwd
、/etc/shadow
、/etc/group
和/etc/gshadow
等文件中添加相应的记录。 - 常用选项 :
-d
:指定用户的主目录。-m
:如果主目录不存在,则自动创建。-s
:指定用户的登录 shell。-g
:指定用户的初始用户组。-G
:指定用户要加入的附加用户组。
代码示例
bash
# 创建一个名为 newuser 的用户,指定主目录为 /home/newuser,并自动创建该目录
sudo useradd -m -d /home/newuser newuser
运行该命令后,系统会创建 newuser
用户,并在 /home
目录下创建 newuser
主目录,同时在相关用户信息文件中添加记录。
2. passwd
(设置或修改用户密码)
知识点
- 功能:用于设置或修改用户的密码。普通用户可以使用该命令修改自己的密码,而 root 用户可以修改任意用户的密码。
- 注意事项:root 用户修改密码时无需输入原密码,普通用户修改密码时需要输入原密码进行验证。
代码示例
bash
# root 用户为 newuser 设置密码
sudo passwd newuser
执行该命令后,系统会提示输入新密码和确认新密码,输入完成后新密码即生效。
3. userdel
(删除用户)
知识点
- 功能:用于从系统中删除用户账户。删除用户时,可以选择是否同时删除用户的主目录和邮件池。
- 常用选项 :
-r
:删除用户的同时,删除其主目录和邮件池。
代码示例
bash
# 删除 newuser 用户,并同时删除其主目录和邮件池
sudo userdel -r newuser
运行此命令后,newuser
用户的账户信息会从相关文件中删除,其主目录和邮件池也会被一并删除。
4. usermod
(修改用户属性)
知识点
- 功能:用于修改已存在用户的属性,如用户的主目录、登录 shell、用户组等。
- 常用选项 :
-d
:修改用户的主目录。-m
:如果指定了新的主目录,将原主目录内容移动到新的主目录。-s
:修改用户的登录 shell。-g
:修改用户的初始用户组。-G
:修改用户要加入的附加用户组。
代码示例
bash
# 将用户 newuser 的登录 shell 修改为 /bin/bash
sudo usermod -s /bin/bash newuser
执行该命令后,newuser
用户下次登录时将使用 /bin/bash
作为登录 shell。
5. groupadd
(创建用户组)
知识点
- 功能 :用于在系统中创建新的用户组。新用户组会在
/etc/group
和/etc/gshadow
文件中添加相应的记录。
代码示例
bash
# 创建一个名为 newgroup 的用户组
sudo groupadd newgroup
运行该命令后,系统会创建 newgroup
用户组,并在相关用户组信息文件中添加记录。
6. groupdel
(删除用户组)
知识点
- 功能:用于从系统中删除用户组。注意,不能删除仍有用户属于该组的用户组。
代码示例
bash
# 删除 newgroup 用户组
sudo groupdel newgroup
如果 newgroup
用户组中没有用户,执行该命令后该用户组会被删除。
7. groups
(查看用户所属组)
知识点
- 功能:用于显示指定用户所属的所有用户组。如果不指定用户,则显示当前用户所属的用户组。
代码示例
bash
# 查看 newuser 用户所属的用户组
groups newuser
执行该命令后,会在终端输出 newuser
用户所属的所有用户组名称。
8. id
(查看用户的身份信息)
知识点
- 功能:用于显示用户的身份信息,包括用户 ID(UID)、用户所属的主用户组 ID(GID)以及用户所属的所有附加用户组 ID。
代码示例
bash
# 查看 newuser 用户的身份信息
id newuser
运行该命令后,会输出 newuser
用户的 UID、GID 以及附加用户组等信息,示例输出可能如下:
plaintext
uid=1001(newuser) gid=1001(newuser) groups=1001(newuser)
1. ps
- 查看进程信息
知识点
ps
命令用于报告当前系统的进程状态,它可以显示当前运行的进程的相关信息,如进程 ID(PID)、用户、CPU 使用率、内存使用率等。- 常用选项:
-e
:显示所有进程。-f
:显示完整格式的进程信息。-aux
:显示所有用户的进程信息,a
表示显示与终端相关的所有进程,u
表示以用户为中心显示详细信息,x
表示显示无控制终端的进程。
代码示例
bash
# 显示当前用户的所有进程信息
ps -f
# 显示系统中所有进程的完整信息
ps -ef
# 以用户为中心显示所有进程信息
ps -aux

2. top
- 动态监控进程
知识点
top
命令提供了实时的系统进程监控,它会动态更新显示系统中各个进程的资源使用情况,包括 CPU 使用率、内存使用率等。- 交互命令:
q
:退出top
界面。M
:按内存使用率排序。P
:按 CPU 使用率排序。
代码示例
bash
# 启动 top 命令监控进程
top
3. pstree
- 以树状结构显示进程
知识点
pstree
命令可以将系统中的进程以树状结构展示,清晰地显示进程之间的父子关系。- 常用选项:
-p
:显示每个进程的 PID。-u
:显示每个进程的所属用户。
代码示例
bash
# 以树状结构显示进程
pstree
# 显示进程的 PID
pstree -p
# 显示进程的所属用户和 PID
pstree -pu

4. kill
- 终止进程
知识点
kill
命令用于向指定的进程发送信号,默认发送的是终止信号(SIGTERM
,信号编号为 15),让进程正常终止。如果进程无法正常终止,可以发送强制终止信号(SIGKILL
,信号编号为 9)。- 信号编号:可以使用
kill -l
命令查看所有可用的信号编号和名称。
代码示例
bash
# 查看进程信息,获取要终止的进程的 PID
ps -ef | grep "example_process"
# 向指定 PID 的进程发送终止信号
kill <PID>
# 如果进程无法正常终止,发送强制终止信号
kill -9 <PID>
5. killall
- 根据进程名终止进程
知识点
killall
命令可以根据进程名终止所有匹配的进程,而不需要手动查找每个进程的 PID。- 常用选项:
-9
:发送强制终止信号。
代码示例
bash
# 终止名为 "example_process" 的所有进程
killall example_process
# 强制终止名为 "example_process" 的所有进程
killall -9 example_process
6. nice
和 renice
- 调整进程优先级
知识点
nice
命令用于在启动进程时指定进程的优先级,优先级范围是 -20(最高优先级)到 19(最低优先级),默认优先级为 0。renice
命令用于调整已经运行的进程的优先级。
代码示例
bash
# 以较低优先级启动进程
nice -n 10 ./example_program
# 查看进程信息,获取要调整优先级的进程的 PID
ps -ef | grep "example_process"
# 将指定 PID 的进程优先级调整为 -5
renice -5 <PID>
7. jobs
、bg
和 fg
- 作业控制
知识点
jobs
命令用于显示当前终端会话中后台运行的作业列表。bg
命令用于将暂停的作业放到后台继续运行。fg
命令用于将后台运行的作业放到前台运行。
代码示例
bash
# 在后台启动一个进程
./example_program &
# 显示当前终端会话中的作业列表
jobs
# 将暂停的作业放到后台继续运行
bg %1
# 将后台运行的作业放到前台运行
fg %1