LInux基础 1:Linux 系统重要命令拾遗
声明
笔记内容参考了B站UP主 泷羽sec 的学习视频,如有侵权,将立即删除。
本笔记旨在促进网络安全学习,任何不当使用均与作者无关,请勿逾越法律红线,否则后果自负。
希望这些内容能对各位师傅有所帮助,欢迎您的点赞和评论!
在日常的Linux使用中,有一些命令是我们经常用到的基础命令,掌握它们对于系统管理与日常操作至关重要。本文将选取一些常用且容易出错的命令,详细讲解它们的使用方法、常用参数以及应用场景,帮助你更好地理解和使用这些命令。
文件操作
mv — 移动或重命名文件和目录
mv 命令用于移动文件或目录,或者重命名文件和目录。其基本语法为:
mv [选项] 源文件/目录 目标文件/目录
使用说明
mv命令可以移动单个文件、多个文件或目录。- 如果目标是已存在的目录,源文件或目录会被移动到该目录中。
- 如果目标是已存在的文件,源文件会被重命名为目标文件的名称。
mv命令具有递归特性,可以用于移动目录及其内容。
示例
mv file1.txt /home/user/documents/ # 将 file1.txt 文件移动到目标目录
mv file1.txt newname.txt # 重命名 file1.txt 为 newname.txt
mv folder1 /home/user/documents/ # 将 folder1 目录移动到目标目录
mv folder1 newfolder # 将 folder1 目录重命名为 newfolder
rm — 删除文件或目录
rm 命令用于删除文件或目录。删除操作是不可逆的,需谨慎使用。
常用选项
-r:递归删除,适用于删除目录及其内部所有文件。-f:强制删除,不会提示确认。-i:交互模式,每次删除前都会提示确认。
示例
rm file1.txt # 删除单个文件
rm -r dir1/ # 删除目录及其内容
rm -f file2.txt # 强制删除文件
rm -rf /home/user/* # 强制删除目录下所有内容
cp — 拷贝文件
cp 命令用于拷贝文件或目录。
常用选项
-r:递归拷贝目录及其内容。-i:拷贝时询问确认,防止覆盖已有文件。-u:仅在源文件较新时才拷贝。
示例
cp file.txt /home/user/documents/ # 拷贝file.txt文件到指定目录
cp -r dir1/ /home/user/backup/ # 递归拷贝目录及其内容
cp -u file.txt /home/user/backup/ # 仅在源文件较新时才拷贝
sort — 排序文件内容
sort 命令用于排序文件内容或标准输入的内容。默认按字典顺序排序。
常用选项
-n:按数字大小排序。-r:反向排序。-k:按指定的列进行排序。-u:去重,只输出唯一的行。
示例
sort file.txt # 按字典顺序排序文件内容
sort -n file.txt # 按数字顺序排序文件内容
sort -r file.txt # 反向排序文件内容
sort -u file.txt # 排序并去重
uniq — 去重
uniq 命令用于去除文件中的重复行,常与 sort 一起使用。
常用选项
-c:统计每行出现的次数。-u:仅显示唯一的行。-d:仅显示重复的行。
示例
sort file.txt | uniq # 去除重复行
sort file.txt | uniq -c # 显示每行出现的次数
uniq -u file.txt # 显示唯一行
wc — 统计文件内容
wc 命令用于统计文件的字数、行数和字符数。
常用选项
-l:统计行数。-w:统计单词数。-c:统计字符数。-m:统计字符数(不区分字节和字符,适用于多字节字符集)。
示例
wc -l file.txt # 统计文件行数
wc -w file.txt # 统计文件单词数
wc -c file.txt # 统计文件字符数
wc -m file.txt # 统计文件字符数(包括多字节字符集)
软连接和硬链接
软链接(Symbolic Link)
软链接,也称为符号链接或快捷方式,类似于 Windows 系统中的快捷方式。它是一个独立的文件,其中包含指向目标文件或目录路径的引用。软链接本质上是一个文本文件,指向实际的文件或目录。
创建软链接
使用 ln -s 命令来创建软链接:
ln -s /path/to/target /path/to/link
-s表示创建符号链接。/path/to/target是目标文件或目录的路径。/path/to/link是软链接创建的路径。
软链接的特点
- 跨文件系统:软链接可以在不同的文件系统之间创建链接。
- 链接文件和目录:软链接不仅可以指向文件,还可以指向目录。
- 链接失效:当目标文件被删除或移动时,软链接会变为“死链接”,无法再访问目标内容。
软链接使用场景
- 灵活的文件组织:可以用于为常用的文件或程序创建易于记忆的别名或快捷方式。
- 软件环境管理:例如在不同版本的软件之间切换,可以使用软链接指向当前版本。
硬链接(Hard Link)
硬链接是指向文件的多个入口。硬链接通过指向同一个文件的 inode,使得文件有多个路径名。所有硬链接指向相同的数据块,文件内容不会被删除,直到所有硬链接都被删除。
创建硬链接
硬链接使用 ln 命令创建(不带 -s 选项):
ln /path/to/target /path/to/link
/path/to/target是目标文件的路径。/path/to/link是硬链接创建的路径。
硬链接的特点
- 不能跨文件系统:硬链接只能在同一文件系统中创建,不能跨文件系统。
- 指向相同 inode:硬链接指向文件的 inode,每个硬链接都会分配一个新的文件名,但它们指向相同的物理数据块。
- 文件内容共享:修改任一硬链接的文件内容,所有硬链接都会受到影响。
- 文件删除:删除一个硬链接并不会删除文件,只有当所有硬链接都被删除时,文件才会被实际删除。
硬链接使用场景
- 确保文件不丢失:硬链接适用于需要确保文件始终存在的场景,如文件备份和保护重要数据。
- 多路径访问同一文件:如果多个程序需要访问同一文件,硬链接可以提供多个入口。
软链接与硬链接的主要区别
| 特性 | 软链接(Symbolic Link) | 硬链接(Hard Link) |
|---|---|---|
| 创建命令 | ln -s /path/to/target /path/to/link | ln /path/to/target /path/to/link |
| 跨文件系统 | 可以跨文件系统 | 不能跨文件系统 |
| 链接对象 | 可以链接文件和目录 | 只能链接文件,通常不能链接目录 |
| 文件的物理存储 | 软链接有独立的 inode,指向目标文件路径 | 硬链接指向相同的 inode,多个路径指向相同的文件内容 |
| 目标文件删除后 | 软链接会变成无效链接(死链接) | 硬链接不会受目标文件删除的影响 |
| 文件内容修改 | 修改软链接指向的文件会影响所有软链接 | 修改任何一个硬链接都会影响其他硬链接 |
| 删除链接后的效果 | 删除软链接不会影响目标文件,目标文件被删除后,软链接失效 | 删除一个硬链接不影响文件,文件只有删除所有硬链接后才会被删除 |
使用案例
- 移动文件和创建软链接
假设我们需要将 newfile 移动到 newdir2 目录,并在原位置创建一个指向新位置的软链接:
mv newfile newdir2
ln -s newdir2/newfile newfile
- 拷贝文件和创建硬链接
假设我们需要将 file.txt 拷贝到 newdir.txt,并在原文件位置创建一个硬链接:
cp file.txt newdir.txt
ln file.txt hardlink.txt
- 创建软链接和硬链接
假设我们有一个文件 original.txt,可以分别创建软链接和硬链接:
-
创建软链接:
ln -s original.txt symlink.txt -
创建硬链接:
ln ~/offseec123.txt hardlink.txt
find — 查找文件
find 命令是 Linux 系统中功能强大的文件查找工具,可以根据文件名、文件类型、修改时间、文件大小、文件权限等多种条件查找文件。
基本语法
find [路径] [选项] [查找条件]
常用选项
-name:根据文件名查找,支持通配符,-iname会忽略大小写进行匹配。-type:根据文件类型查找(例如:f查找文件,d查找目录)。-size:根据文件大小查找,单位可以是b(字节),k(千字节),M(兆字节)等。-mtime:根据文件的最后修改时间查找,单位是天(+n查找大于n天前修改的文件,-n查找小于n天前修改的文件,n查找恰好在n天前修改的文件)。-mmin:根据文件的最后修改时间(分钟)查找。-atime:根据文件的最后访问时间查找。-amin:根据文件的最后访问时间(分钟)查找。-ctime:根据文件的状态变化时间(如权限变化)查找。-cmin:根据文件的状态变化时间(分钟)查找。-user:根据文件的所有者查找。-perm:根据文件权限查找,支持使用+、-和=来指定权限匹配方式。-exec:对找到的每个文件执行指定的命令。
查找文件权限设置
查找 SUID 文件
SUID(Set User ID)是文件权限中的一种特殊标志,表示该文件在执行时将使用文件所有者的权限,而不是执行者的权限。SUID 文件常用于需要提升权限的程序,比如 passwd 命令。
-
查找所有设置了 SUID 标志的文件:
find / -type f -perm /4000/4000:表示查找设置了 SUID 权限的文件。/4000是一个八进制权限表示,表示文件的所有者具有 SUID 标志。
查找 SGID 文件
SGID(Set Group ID)是另一种特殊权限标志,表示执行该文件时将使用文件所属组的权限。
-
查找所有设置了 SGID 标志的文件:
find / -type f -perm /2000/2000:表示查找设置了 SGID 权限的文件。
查找 Sticky 位文件
Sticky 位是另一种特殊权限,主要用于目录,表示只有文件的所有者才能删除该目录中的文件,而其他用户只能修改自己的文件。
-
查找所有设置了 Sticky 位的文件:
find / -type d -perm /1000/1000:表示查找设置了 Sticky 位的目录。
查找特定权限
find 命令允许使用 +、- 和 = 来更灵活地匹配文件的权限。
+u+s:查找所有具有 SUID 设置的文件。这里的+表示 “至少包含”。-u+s:查找所有不具有 SUID 设置的文件。-表示 “不包含”。=u+s:查找所有正好具有 SUID 设置的文件。=表示 “完全匹配”。
常见查找示例
-
按文件名查找
查找所有以.txt结尾的文件(大小写敏感):find / -name "*.txt" -
按文件类型查找
查找所有普通文件:find /home/user -type f查找所有目录:
find /home/user -type d -
按文件大小查找
查找大于 1000KB 的文件:find / -size +1000k -
按修改时间查找
查找当前目录下 7 天内修改过的文件:find . -type f -mtime -7 -
按文件权限查找
查找权限为 777 的文件(所有者、组用户和其他用户均具有读、写和执行权限):find . -perm 777 -
按文件所有者查找
查找所有属于root用户的文件:find / -user root -
按文件权限和类型查找
查找所有.sh文件,且这些文件具有其他用户可写权限,且不显示报错信息:find / -user root -type f -perm -o=w -name "*.sh" 2>/dev/null-user root:查找文件所有者为root的文件。-type f:仅查找普通文件。-perm -o=w:查找具有其他用户可写权限的文件(-o=w表示“其他用户具有写权限”)。2>/dev/null:将错误输出重定向到/dev/null,屏蔽权限不足等错误信息。
-
按访问时间查找
查找当前目录下 1 天内访问过的文件:find . -atime -1 -type f -
执行删除命令
查找所有.svn目录并删除:find . -name "*.svn" -exec rm -rf {} \;-name "*.svn":查找所有.svn目录。-exec rm -rf {} \;:对每个匹配的文件或目录执行删除命令rm -rf。{}是一个占位符,代表找到的文件或目录,\;用于结束命令。
-
按修改时间排序输出
查找并按修改时间排序输出文件:find ~ -mtime 2 -ls | sort -k9 -k10 | more-mtime 2:查找 2 天前修改的文件。-ls:显示文件详细信息(类似ls -l命令)。sort -k9 -k10:按第 9 列(文件名)和第 10 列(修改时间)进行排序。more:分页显示结果,方便查看。
磁盘与内存管理
df — 查看磁盘空间
常用命令
df 命令用于显示文件系统的磁盘空间使用情况。
df -h # 以人类可读的格式显示磁盘空间
df -T # 显示文件系统类型
-h:以易于理解的格式显示磁盘空间,例如使用 KB、MB、GB 等单位。-T:显示文件系统的类型,如 ext4、xfs 等。
du — 查看目录空间使用
du 命令用于显示目录及其子目录的磁盘空间占用情况。
常用命令
du -h /path/to/dir # 查看目录的磁盘使用情况
du -sh /path/to/dir # 查看目录的总磁盘使用情况
-h:以人类可读的格式显示空间使用情况。-s:显示指定目录的总磁盘使用情况,而不是递归显示每个子目录。
free — 查看内存使用情况
free 命令用于显示系统的内存和交换空间使用情况。
常用命令
free -h # 以人类可读的格式显示内存使用情况
-h:以易于理解的格式显示内存使用情况,例如使用 MB、GB 等单位。
fdisk — 磁盘分区工具
fdisk 命令用于查看和管理磁盘的分区情况。
常用命令
fdisk -l # 列出所有磁盘及其分区信息
-l:列出系统中所有磁盘及其分区信息。
您的内容已经相当清晰并且结构良好,下面是基于您给出的格式和要求的优化建议。
进程与网络命令
ps — 查看进程
ps 命令用于查看系统中当前的进程信息。它可以显示进程的详细信息,帮助管理员监控系统的状态。
常用命令
ps aux # 显示所有进程的详细信息
ps -ef # 显示所有进程及其详细信息
aux:显示所有用户的进程,包括其他用户的进程。-ef:显示所有进程,并以标准格式列出进程的详细信息。
top — 实时查看进程
top 命令可以实时显示系统资源的占用情况,包括 CPU、内存、进程信息等。适用于监控系统的健康状况和资源消耗。
命令说明
top默认每 3 秒刷新一次,显示所有进程和系统资源的使用情况。- 可以按下
q键退出实时监控。
常用操作
- 按下
P:按 CPU 占用率排序进程。 - 按下
M:按内存占用排序进程。 - 按下
k:通过 PID 结束进程。
netstat — 查看网络状态
netstat 命令用于查看当前的网络连接、路由表、接口统计等信息,帮助管理员分析网络状态。
常用命令
netstat -lntu # 查看所有监听的端口
netstat -an # 查看所有网络连接
-l:仅显示监听状态的端口。-n:以数字形式显示地址和端口号(不解析为域名)。-t:仅显示 TCP 连接。-u:仅显示 UDP 连接。
ss — 查看套接字信息
ss 命令是 netstat 的替代品,它提供了比 netstat 更快、更详细的网络连接信息。ss 命令通常比 netstat 更高效,尤其是在高负载系统中。
常用命令
ss -tuln # 查看所有监听的端口
ss -tulnp # 查看所有监听端口并显示进程信息
ss -an # 查看所有网络连接
参数说明
-t:显示 TCP 连接。-u:显示 UDP 连接。-l:显示监听的端口。-n:以数字形式显示地址和端口号,不解析域名。-p:显示每个连接所属的进程 ID 和进程名称。-a:显示所有连接(包括监听和非监听的连接)。-o:显示每个连接的计时器状态,适合查看延迟。-r:显示路由信息。-s:汇总统计所有协议的连接信息。
文件传输命令
scp — 安全复制文件
scp 命令用于通过 SSH 协议在不同主机之间安全地复制文件。
基本语法:
scp [选项] 源文件 目标位置
-r:递归复制目录。-P:指定端口。
示例:
scp file.txt user@remote:/path/to/destination # 从本地复制到远程主机
scp -r dir/ user@remote:/path/to/destination # 复制目录到远程主机
scp user@remote:/path/to/file . # 从远程主机复制文件到本地
openssl — 安全套接字层工具
openssl 是一个用于处理各种安全协议(如 SSL/TLS)的命令行工具,可以生成密钥、证书等。
常见命令:
-
生成私钥:
openssl genpkey -algorithm RSA -out private.key -
生成公钥:
openssl rsa -pubout -in private.key -out public.key -
生成证书签名请求(CSR):
openssl req -new -key private.key -out request.csr -
证书转换(如从 PEM 转为 DER 格式):
openssl x509 -outform DER -in certificate.pem -out certificate.der
