作为一名经验丰富的后端工程师,Linux 命令行工具是我日常工作中最亲密的伙伴。无论是服务器管理、应用部署,还是问题排查,都离不开各种各样的 Linux 命令。市面上关于 Linux 命令大全 的资料很多,但往往过于零散或者缺乏实际应用场景的指导。今天,我就结合自己多年的实战经验,系统地整理一些常用的 Linux 命令,并分享一些踩坑经验,希望能够帮助大家更好地驾驭 Linux 系统。
文件操作:那些年我们一起搞过的权限与目录
文件操作是 Linux 命令中最基础也是最常用的部分,熟练掌握这些命令能够让你高效地管理文件和目录。
ls:查看文件列表
ls 命令用于列出目录中的文件和子目录。常用的选项包括:
-l:以长格式显示文件信息,包括权限、所有者、大小、修改时间等。-a:显示所有文件,包括以.开头的隐藏文件。-h:以人类可读的格式显示文件大小(例如 KB、MB、GB)。-t:按照修改时间排序,最近修改的文件排在前面。-r:倒序排列。
例如,要查看当前目录下所有文件的详细信息,并按照修改时间倒序排列,可以使用以下命令:
ls -lhatr
避坑经验: 在使用 ls -l 命令时,要注意第一列的权限信息。如果发现某个文件没有执行权限,可以使用 chmod 命令来修改。
cd:切换目录
cd 命令用于切换当前工作目录。常用的选项包括:
cd ..:返回上一级目录。cd ~:切换到当前用户的主目录。cd -:切换到上一次所在的目录。
例如,要返回上一级目录,可以使用以下命令:
cd ..
避坑经验: 在使用 cd 命令时,要注意目录是否存在。如果目录不存在,会报错。可以使用 ls 命令来查看目录是否存在。
mkdir:创建目录
mkdir 命令用于创建目录。常用的选项包括:
-p:递归创建目录。如果父目录不存在,会自动创建父目录。
例如,要创建一个名为 test 的目录,可以使用以下命令:
mkdir test
如果要递归创建目录 test/a/b/c,可以使用以下命令:
mkdir -p test/a/b/c
避坑经验: 在使用 mkdir 命令时,要注意目录是否已经存在。如果目录已经存在,会报错。可以使用 -p 选项来避免这个问题。
rm:删除文件或目录
rm 命令用于删除文件或目录。请务必谨慎使用,因为它会永久删除文件,无法恢复! 常用的选项包括:
-r:递归删除目录及其所有内容。-f:强制删除,不提示确认。
例如,要删除一个名为 test.txt 的文件,可以使用以下命令:
rm test.txt
要递归删除一个名为 test 的目录及其所有内容,可以使用以下命令:
rm -rf test
避坑经验: 永远不要在生产环境中使用 rm -rf / 命令!这会将整个文件系统删除,导致系统崩溃。养成良好的习惯,删除文件前先确认,并尽量使用回收站工具。
cp:复制文件或目录
cp 命令用于复制文件或目录。常用的选项包括:
-r:递归复制目录及其所有内容。-p:保留原始文件的属性,例如权限、所有者、时间戳等。
例如,要复制一个名为 test.txt 的文件到 test_copy.txt,可以使用以下命令:
cp test.txt test_copy.txt
要递归复制一个名为 test 的目录及其所有内容到 test_copy,可以使用以下命令:
cp -r test test_copy
避坑经验: 在复制目录时,如果目标目录已经存在,cp -r 命令会将源目录的内容复制到目标目录中。如果目标目录不存在,cp -r 命令会创建目标目录,并将源目录及其内容复制到目标目录中。
mv:移动或重命名文件或目录
mv 命令用于移动或重命名文件或目录。例如,要将一个名为 test.txt 的文件重命名为 new_test.txt,可以使用以下命令:
mv test.txt new_test.txt
要将一个名为 test.txt 的文件移动到 test 目录,可以使用以下命令:
mv test.txt test/
避坑经验: 在使用 mv 命令时,如果目标文件已经存在,mv 命令会覆盖目标文件。请谨慎操作。
文本处理:效率提升的利器
Linux 命令行提供了强大的文本处理工具,可以帮助我们快速地分析和处理文本数据。
cat:查看文件内容
cat 命令用于查看文件内容。例如,要查看一个名为 test.txt 的文件内容,可以使用以下命令:
cat test.txt
避坑经验: cat 命令适用于查看小文件。对于大文件,使用 cat 命令可能会导致终端卡顿,甚至崩溃。建议使用 less 或 head 命令来查看大文件。
head:查看文件头部
head 命令用于查看文件头部。默认情况下,head 命令会显示文件的前 10 行。可以使用 -n 选项来指定显示的行数。例如,要查看一个名为 test.txt 的文件的前 20 行,可以使用以下命令:
head -n 20 test.txt
tail:查看文件尾部
tail 命令用于查看文件尾部。默认情况下,tail 命令会显示文件的后 10 行。可以使用 -n 选项来指定显示的行数。例如,要查看一个名为 test.txt 的文件的后 20 行,可以使用以下命令:
tail -n 20 test.txt
tail -f 命令可以实时监控文件内容的更新,常用于查看日志文件。例如:
tail -f /var/log/nginx/access.log
避坑经验: 使用 tail -f 监控大文件时,需要注意磁盘空间的使用情况。如果日志文件增长过快,可能会导致磁盘空间耗尽。
grep:查找文本
grep 命令用于在文件中查找文本。常用的选项包括:
-i:忽略大小写。-v:反向查找,只显示不匹配的行。-n:显示匹配行的行号。-r:递归查找目录中的文件。
例如,要在 test.txt 文件中查找包含 error 的行,可以使用以下命令:
grep error test.txt
要在当前目录及其子目录中查找包含 error 的行,并显示行号,可以使用以下命令:
grep -rn error .
避坑经验: grep 命令可以使用正则表达式来进行更复杂的匹配。例如,可以使用 grep -E 'pattern1|pattern2' 来查找包含 pattern1 或 pattern2 的行。
sed:文本替换
sed 命令用于文本替换。例如,要将 test.txt 文件中的所有 old 替换为 new,可以使用以下命令:
sed 's/old/new/g' test.txt
要将替换结果保存到新文件中,可以使用以下命令:
sed 's/old/new/g' test.txt > new_test.txt
避坑经验: sed 命令默认不会修改原始文件。可以使用 -i 选项来直接修改原始文件。例如:sed -i 's/old/new/g' test.txt 。但请谨慎使用,避免误操作。
awk:文本处理工具
awk 是一种强大的文本处理工具,可以用于提取、转换和格式化文本数据。例如,要提取 test.txt 文件中每行的第一列,可以使用以下命令:
awk '{print $1}' test.txt
awk 还可以进行复杂的计算和逻辑判断。例如,可以使用 awk 统计文件中出现的单词数量。
避坑经验: awk 语法相对复杂,需要一定的学习成本。但掌握 awk 可以极大地提高文本处理效率。
系统管理:掌握服务器的命脉
掌握一些常用的系统管理命令,可以帮助你更好地管理服务器,保证系统的稳定运行。
ps:查看进程信息
ps 命令用于查看进程信息。常用的选项包括:
-ef:显示所有进程的详细信息,包括进程 ID、父进程 ID、用户 ID、CPU 占用率、内存占用率等。-aux:显示所有用户的进程信息,包括 CPU 占用率、内存占用率等。
例如,要查看所有进程的详细信息,可以使用以下命令:
ps -ef
top:实时监控系统资源
top 命令用于实时监控系统资源,包括 CPU 占用率、内存占用率、磁盘 I/O、网络流量等。
避坑经验: top 命令可以帮助你快速定位系统瓶颈。如果 CPU 占用率过高,可能是由于某个进程占用了大量的 CPU 资源。如果内存占用率过高,可能是由于内存泄漏或者程序占用了过多的内存。
kill:杀死进程
kill 命令用于杀死进程。可以使用进程 ID 或者进程名来指定要杀死的进程。常用的信号包括:
SIGTERM (15):正常终止进程,进程可以捕获该信号并进行清理工作。SIGKILL (9):强制终止进程,进程无法捕获该信号,会立即被终止。请谨慎使用,因为它可能会导致数据丢失或系统不稳定。
例如,要杀死一个进程 ID 为 1234 的进程,可以使用以下命令:
kill 1234
如果要强制杀死一个进程,可以使用以下命令:
kill -9 1234
避坑经验: 在杀死进程之前,最好先尝试使用 SIGTERM 信号正常终止进程。如果进程无法正常终止,再考虑使用 SIGKILL 信号强制终止进程。
netstat 和 ss:网络连接状态
netstat 和 ss 命令用于查看网络连接状态。ss 命令是 netstat 的替代品,功能更强大,性能更高。
例如,要查看所有 TCP 连接,可以使用以下命令:
ss -t -a
要查看监听 80 端口的进程,可以使用以下命令:
ss -l -p | grep :80
避坑经验: 可以通过 netstat 或 ss 命令来排查网络连接问题,例如端口占用、连接超时等。
df:查看磁盘空间使用情况
df 命令用于查看磁盘空间使用情况。常用的选项包括:
-h:以人类可读的格式显示磁盘空间大小(例如 KB、MB、GB)。
例如,要查看所有磁盘空间使用情况,可以使用以下命令:
df -h
避坑经验: 如果磁盘空间不足,可能会导致系统运行缓慢甚至崩溃。需要定期清理磁盘空间,例如删除不必要的日志文件、临时文件等。
du:查看目录大小
du 命令用于查看目录大小。常用的选项包括:
-h:以人类可读的格式显示目录大小(例如 KB、MB、GB)。-s:只显示总大小,不显示子目录大小。
例如,要查看当前目录下所有目录的大小,可以使用以下命令:
du -h
要查看当前目录的总大小,可以使用以下命令:
du -sh
避坑经验: du 命令可以帮助你快速定位占用磁盘空间最多的目录,从而进行清理。
权限管理:守护你的数据安全
Linux 系统的权限管理非常重要,可以有效地保护你的数据安全。
chmod:修改文件权限
chmod 命令用于修改文件权限。可以使用数字或者符号来指定权限。例如,要将 test.txt 文件的权限设置为所有者可读写,同组用户可读,其他用户可读,可以使用以下命令:
chmod 644 test.txt
或者使用符号表示:
chmod u=rw,g=r,o=r test.txt
避坑经验: 在修改文件权限时,要仔细考虑权限设置的安全性。避免将文件权限设置为过于开放,导致安全风险。
chown:修改文件所有者
chown 命令用于修改文件所有者。例如,要将 test.txt 文件的所有者修改为 user1,可以使用以下命令:
chown user1 test.txt
避坑经验: 只有 root 用户才能修改文件所有者。
chgrp:修改文件所属组
chgrp 命令用于修改文件所属组。例如,要将 test.txt 文件的所属组修改为 group1,可以使用以下命令:
chgrp group1 test.txt
避坑经验: 只有 root 用户或者文件所有者才能修改文件所属组。
网络管理:配置和诊断你的网络
网络管理是 Linux 系统管理的重要组成部分。掌握一些常用的网络管理命令,可以帮助你配置和诊断网络问题。
ifconfig 和 ip:配置网络接口
ifconfig 和 ip 命令用于配置网络接口。ip 命令是 ifconfig 的替代品,功能更强大,用法也更灵活。
例如,要查看所有网络接口的信息,可以使用以下命令:
ip addr show
要查看指定网络接口的信息,可以使用以下命令:
ip addr show eth0
避坑经验: 在使用 ip 命令配置网络接口时,需要仔细阅读文档,了解各个选项的含义。
ping:测试网络连通性
ping 命令用于测试网络连通性。例如,要测试与 www.baidu.com 的连通性,可以使用以下命令:
ping www.baidu.com
避坑经验: 如果 ping 命令无法到达目标地址,可能是由于网络故障、防火墙阻止或者 DNS 解析错误等原因导致。
traceroute:跟踪网络路由
traceroute 命令用于跟踪网络路由。例如,要跟踪到达 www.baidu.com 的路由,可以使用以下命令:
traceroute www.baidu.com
避坑经验: traceroute 命令可以帮助你定位网络故障点,例如某个路由器故障导致网络无法连通。
掌握了这些 Linux 命令大全 中的常用命令,你就可以更加高效地管理 Linux 系统,并解决各种问题。希望这篇文章能够帮助你更好地驾驭 Linux 命令行,成为一名真正的 Linux 高手! 同时也欢迎大家在评论区分享你常用的 Linux 命令和使用技巧。
冠军资讯
键盘上的咸鱼