Linux命令是系统管理与运维的核心工具。根据参考资料,本文将从文件操作、系统监控、网络管理、用户权限、文本处理、软件管理、磁盘管理、进程管理等多个维度,选取并详细说明约30个最核心的命令及其高级用法。掌握这些核心命令足以应对绝大部分工作场景,并可通过命令组合实现复杂功能。
一、 文件与目录操作
这类命令用于日常文件和目录的管理,是基础中的基础。
| 命令 | 核心作用 | 常用选项与用法举例 |
|---|---|---|
ls |
列出目录内容 | -l(长格式)、-a(显示隐藏文件)、-h(人性化文件大小)、-t(按时间排序)。例:ls -lh /var/log/ |
cd |
切换工作目录 | cd /home 切换到绝对路径;cd .. 返回上级目录;cd ~ 或 cd 返回家目录。 |
pwd |
打印当前工作目录 | 直接执行 pwd 即可显示完整路径。 |
cp |
复制文件或目录 | -r(递归复制目录)、-i(覆盖前询问)、-v(显示详细过程)。例:cp -r source_dir dest_dir/ |
mv |
移动或重命名文件/目录 | mv old_name new_name(重命名);mv file /path/to/dir/(移动)。 |
rm |
删除文件或目录 | 高危命令 。-r(递归删除)、-f(强制删除,无提示)。强烈建议组合使用前先用 ls 确认目标。例:rm -rf dir_to_delete/ |
mkdir |
创建目录 | -p(递归创建多层目录)。例:mkdir -p project/{src,doc,bin} |
find |
查找文件 | 功能强大,可依据名称、类型、大小、时间等查找。例:find /home -name "*.log" -size +10M -exec rm {} \; |
chmod |
修改文件权限 | chmod 755 script.sh(数字模式);chmod u+x,g-w,o=r file(符号模式)。 |
chown |
修改文件所有者 | chown user:group file;-R(递归修改)。例:chown -R www-data:www-data /var/www/ |
二、 文本查看与处理
文本处理是Linux的强项,适用于日志分析、配置管理等。
| 命令 | 核心作用 | 常用选项与用法举例 |
|---|---|---|
cat |
连接并打印文件内容 | 查看整个小文件。例:cat /etc/hosts。-n 显示行号。 |
echo |
输出一行文本或变量值 | 基础用法:echo "Hello World"。高级应用:-e 启用转义符(如` |
换行),-n 不输出末尾换行符。变量扩展:echo $PATH。重定向写入文件:echo "new line" >> file.txt` 。 |
||
more / less |
分页查看文件内容 | less 更强大,支持前后翻页、搜索。例:less /var/log/syslog,按/搜索关键词。 |
head / tail |
查看文件开头/末尾部分 | head -n 20 file.log(查看前20行)。tail -f /var/log/app.log(实时追踪日志尾部,对监控应用日志至关重要)。 |
grep |
文本搜索过滤 | 核心过滤工具。-i(忽略大小写)、-r(递归搜索目录)、-n(显示行号)、-v(反向匹配)。例:grep -rin "error" /var/log/ 。 |
sed |
流编辑器,用于文本转换 | 用于替换、删除、选取。例:sed 's/foo/bar/g' input.txt(将全局foo替换为bar)。 |
awk |
强大的文本分析工具 | 按列处理数据。例:awk -F: '{print $1,$6}' /etc/passwd(以冒号分割,打印用户名和家目录)。 |
vim / vi |
强大的命令行文本编辑器 | 强大的命令行文本编辑器。基本流程:vi file -> 按i进入编辑模式 -> 编辑 -> 按Esc退出编辑 -> 输入:wq保存退出。 |
diff |
比较两个文件的差异 | diff file1 file2。-u 输出统一格式,更易读。常用于补丁制作。 |
三、 系统信息与进程管理
了解系统状态和控制进程是运维和调试的关键。
| 命令 | 核心作用 | 常用选项与用法举例 |
|---|---|---|
ps |
显示当前进程快照 | ps aux 或 ps -ef(显示所有进程详细信息),常与 grep 联用:`ps aux |
top / htop |
实时动态显示进程状态 | top(默认启动)。htop(交互性更强,支持鼠标操作)。 |
kill / killall |
向进程发送信号 | kill -9 PID(强制终止进程)。killall process_name(通过进程名终止)。 |
pkill |
根据模式终止进程 | pkill -f "pattern" 终止匹配模式的进程。 |
free |
显示内存使用情况 | free -h(以人类可读的单位GB/MB显示内存总量和空闲量)。 |
df |
报告文件系统磁盘空间使用 | df -hT(显示磁盘空间使用情况、文件系统类型)。 |
du |
估算文件和目录的磁盘使用量 | du -sh /home/*(以人类可读格式汇总显示/home下各目录大小)。 |
uname |
打印系统信息 | uname -a(显示所有系统信息,包括内核版本、主机名等)。 |
uptime |
显示系统运行时间及平均负载 | 直接执行 uptime,结果包含当前时间、运行时长、用户数、1/5/15分钟内的平均负载。 |
四、 网络诊断与下载
进行网络配置、排错和数据抓取。
| 命令 | 核心作用 | 常用选项与用法举例 |
|---|---|---|
ping |
测试网络连通性 | ping -c 4 baidu.com(发送4个ICMP包后停止)。 |
netstat / ss |
显示网络连接、路由表等 | netstat -tulnp 或更现代的 ss -tulnp(查看监听的TCP/UDP端口及对应进程)。 |
curl |
强大的网络数据传输工具 | curl -I https://www.example.com(获取响应头)。curl -o file.zip http://example.com/download.zip(下载文件并重命名)。 |
wget |
命令行下载工具 | 支持HTTP/HTTPS/FTP,支持断点续传、限速、后台下载。 1. 基础下载 :wget http://example.com/file.tar.gz 。 2. 断点续传 :wget -c url 。 3. 后台下载 :wget -b url 。 4. 限速下载 :wget --limit-rate=200k url 。 5. 镜像网站 :wget -m -k -p url 。 |
traceroute |
追踪数据包到达目标主机的路径 | traceroute google.com 。 |
ifconfig / ip |
配置和显示网络接口 | ifconfig eth0(查看接口信息,较老)。ip addr show(ip命令更强大,是现代推荐工具)。 |
五、 包管理与系统服务
管理软件包和控制后台服务。
| 命令 | 核心作用 | 常用选项与用法举例 |
|---|---|---|
apt-get / apt |
Debian/Ubuntu 包管理工具 | apt update(更新包列表);apt install nginx(安装软件);apt upgrade(升级所有包)。 |
yum / dnf |
RHEL/CentOS/Fedora 包管理工具 | yum install httpd(安装软件);yum update(更新系统)。 |
systemctl |
控制系统服务(systemd) | systemctl start nginx(启动服务);systemctl enable nginx(设置开机自启);systemctl status nginx(查看服务状态)。 |
service |
管理系统服务(SysVinit) | service nginx start(在旧版系统中使用)。 |
六、 高级诊断与信息查看
用于深入系统诊断和获取详细信息。
| 命令 | 核心作用 | 常用选项与用法举例 |
|---|---|---|
lsof |
列出系统打开的文件列表 | 功能极为强大,可用于诊断文件被谁占用、进程打开了哪些文件。 1. 查看进程打开的文件 :lsof -p <PID> 。 2. 查看文件被哪个进程占用 :lsof /path/to/file 。 3. 查看端口占用 :lsof -i :80(查看占用80端口的进程)。 4. 查看用户打开的文件 :lsof -u username 。 |
strace |
跟踪进程的系统调用和信号 | 用于调试程序和性能分析。例:strace -p <PID> 或 strace ls。 |
journalctl |
查询和显示systemd日志 | journalctl -u nginx.service(查看nginx服务日志);journalctl -f(实时追踪日志)。 |
核心命令组合与应用示例
实际工作中,命令往往组合使用以解决复杂问题。
-
场景一:查找并清理大日志文件
假设需要清理
/var/log目录下超过100M的.log文件。bash# 首先查找确认 find /var/log -name "*.log" -size +100M -exec ls -lh {} \; # 确认无误后删除 find /var/log -name "*.log" -size +100M -exec rm {} \;此命令组合了
find、ls和rm,利用find的-exec参数进行批处理。 -
场景二:监控特定进程的实时日志
假设Nginx进程PID为1234,希望实时监控其打开的文件变化。
bash# 使用 lsof 监控进程文件句柄变化 watch -n 1 'lsof -p 1234 | head -20'同时,在另一个终端用
tail -f追踪错误日志:bashtail -f /var/log/nginx/error.log -
场景三:批量下载并处理文件
使用
wget从列表文件urls.txt中批量下载,并用awk提取信息。bash# 批量下载 wget -i urls.txt -P ./downloads/ --limit-rate=500k # 假设下载的是CSV,提取第一列 awk -F',' '{print $1}' downloads/*.csv > summary.txt
掌握这些命令及其组合,并理解其底层原理(如 lsof 通过读取 /proc 文件系统信息来工作),能极大提升运维效率和问题诊断能力。学习时建议从基础文件操作开始,逐步深入到进程、网络和系统诊断,并通过编写Shell脚本将命令固化、自动化,这才是提升300%效率的关键。