1. Linux命令基础与核心概念
在Linux系统中,命令是用户与操作系统交互的基本方式。与图形界面不同,命令行提供了更直接、高效的操作手段,尤其适合服务器管理、批量处理和自动化任务。理解Linux命令的工作机制,是掌握系统管理的第一步。
Linux命令通常由三部分组成:命令本身、选项(option)和参数(argument)。选项通常以"-"或"--"开头,用于修改命令的行为;参数则是命令操作的对象。例如在ls -l /home中,ls是命令,-l是选项,/home是参数。
提示:Linux命令区分大小写,且大多数情况下选项可以组合使用,如
ls -la等同于ls -l -a
命令的执行依赖于环境变量PATH,它定义了系统查找命令的目录路径。当你在终端输入一个命令时,系统会按照PATH中定义的顺序在这些目录中查找对应的可执行文件。可以使用echo $PATH查看当前PATH设置。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统管理核心命令解析
2.1 磁盘空间管理:du与df
du(disk usage)和df(disk free)是Linux下最常用的磁盘空间管理命令,但它们的功能和输出结果常常让新手困惑。
du命令用于估算文件或目录占用的磁盘空间,常用选项包括:
-h:以人类可读格式显示(自动转换KB/MB/GB)-s:只显示总计大小--max-depth=N:控制显示的目录层级深度
典型用法示例:
bash复制# 查看当前目录总大小
du -sh .
# 查看各子目录大小,深度为1
du -h --max-depth=1 /var
而df命令显示文件系统的磁盘空间使用情况,常用选项:
-h:人类可读格式-T:显示文件系统类型-i:显示inode使用情况而非块使用情况
当du和df显示的磁盘使用量不一致时,通常有以下原因:
- 已删除文件仍被进程占用(可通过
lsof | grep deleted查找) - 文件系统存在隐藏的保留空间
- 某些特殊文件系统(如proc、sysfs)的干扰
2.2 权限提升与sudo机制
sudo(superuser do)命令允许授权用户以超级用户或其他用户身份执行命令,是Linux系统管理的重要工具。与直接使用su切换用户不同,sudo提供了更细粒度的权限控制。
sudo的配置文件是/etc/sudoers,建议使用visudo命令编辑,因为它会在保存时检查语法。典型授权语法:
code复制username ALL=(ALL:ALL) ALL
表示允许username用户在任何主机上以任何用户和组身份执行任何命令。
常见sudo问题排查:
- "sudo: command not found":PATH环境变量问题,可在sudoers中添加
Defaults secure_path - 密码输入无反应:这是正常的安全设计,实际在接收输入但不显示
- "user is not in the sudoers file":需要将该用户加入sudo组或直接配置sudoers
重要:避免滥用
sudo,特别是对于不信任的命令。错误的sudo操作可能导致系统损坏。
3. 数据处理与排序命令
3.1 sort命令详解
sort是Linux下强大的排序工具,可以处理文本数据的排序需求。其基本语法为:
bash复制sort [选项] [文件]
常用选项组合:
-r:逆序排序-n:按数值而非字符串比较-k:指定排序键(字段)-t:指定字段分隔符-u:去重(等同于uniq)
典型应用场景:
bash复制# 按第二列数值逆序排序
sort -k2 -nr data.txt
# 处理CSV文件,按第三列排序
sort -t',' -k3 data.csv
# 合并两个已排序文件
sort -m file1 file2
对于编程中的排序需求,不同语言有对应的实现:
- C++:
std::sort(v.begin(), v.end(), std::greater<int>())实现降序 - JavaScript:
array.sort((a,b) => b-a)数值降序 - Python:
sorted(list, reverse=True)
3.2 数据筛选与处理组合
Linux命令的强大之处在于可以通过管道(|)组合多个命令。常见的数据处理组合:
bash复制# 查找大文件并排序
find / -type f -size +100M -exec du -h {} + | sort -rh
# 统计日志中出现频率最高的IP
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10
# 比较两个文件的差异
sort file1 > file1.sorted
sort file2 > file2.sorted
diff file1.sorted file2.sorted
4. 系统维护实用命令集
4.1 软件包管理命令
不同Linux发行版使用不同的包管理工具:
Debian/Ubuntu系列:
bash复制# 更新软件源
sudo apt-get update
# 安装软件
sudo apt-get install package
# 修复依赖问题
sudo apt-get -f install
# dpkg相关操作
sudo dpkg -i package.deb # 安装本地deb包
sudo dpkg --configure -a # 完成未完成的配置
RHEL/CentOS系列:
bash复制# YUM/DNF命令
sudo yum install package
sudo dnf remove package
# RPM相关操作
sudo rpm -ivh package.rpm
sudo rpm -e package
4.2 系统信息与监控
bash复制# 查看系统版本
cat /etc/*release
uname -a
# 监控系统资源
top # 动态进程监控
htop # 增强版top
free -h # 内存使用情况
vmstat 1 # 系统性能概览
# 网络相关
ifconfig # 网络接口信息
netstat -tulnp # 监听端口和对应进程
ss -s # socket统计
4.3 文件操作进阶
bash复制# 安全复制保留属性
sudo cp -a source dest
# 查找并处理文件
find /path -name "*.log" -mtime +30 -exec rm {} \;
# 批量重命名
rename 's/\.bak$//' *.bak
# 比较目录差异
diff -r dir1 dir2
5. 常见问题解决方案
5.1 Docker镜像拉取失败处理
当遇到sudo docker pull ubuntu:18.04失败时,可以尝试以下步骤:
- 检查网络连接:
bash复制ping 8.8.8.8
curl -I https://docker.com
- 更换镜像源:
bash复制sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://<your-mirror>.mirror.aliyuncs.com"]
}
EOF
sudo systemctl restart docker
- 检查DNS配置:
bash复制cat /etc/resolv.conf
sudo vi /etc/docker/daemon.json
# 添加 "dns": ["8.8.8.8", "114.114.114.114"]
5.2 用户权限问题
为普通用户添加sudo权限的几种方法:
- 加入sudo组(Debian系):
bash复制sudo usermod -aG sudo username
- 加入wheel组(RHEL系):
bash复制sudo usermod -aG wheel username
- 直接编辑sudoers:
bash复制sudo visudo
# 添加行:username ALL=(ALL) ALL
5.3 系统本地化配置
处理sudo dpkg-reconfigure locales错误:
- 先修复包管理器:
bash复制sudo dpkg --configure -a
sudo apt-get -f install
- 重新配置locales:
bash复制sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8
- 检查当前locale设置:
bash复制locale
localectl status
6. 命令使用技巧与最佳实践
6.1 历史命令高效利用
history命令记录终端操作历史,配合以下技巧大幅提升效率:
bash复制# 搜索历史命令
Ctrl+R # 反向搜索
history | grep "apt"
# 快速执行历史命令
!n # 执行第n条历史命令
!! # 执行上一条命令
!string # 执行最近以string开头的命令
# 修改上条命令
^old^new # 将上条命令中的old替换为new后执行
可以配置~/.bashrc增强history功能:
bash复制export HISTSIZE=10000
export HISTFILESIZE=20000
export HISTTIMEFORMAT="%F %T "
shopt -s histappend
6.2 命令行快捷操作
bash复制Ctrl+A # 移动到行首
Ctrl+E # 移动到行尾
Ctrl+U # 删除到行首
Ctrl+K # 删除到行尾
Alt+. # 插入上条命令的最后一个参数
Ctrl+XX # 在行首和当前光标位置切换
6.3 脚本编写规范
编写可靠shell脚本的建议:
- 始终在脚本开头添加shebang和基本注释:
bash复制#!/bin/bash
# 脚本名称:disk_check.sh
# 用途:监控磁盘使用情况
# 作者:Your Name
# 日期:2023-08-20
- 启用错误检测:
bash复制set -euo pipefail
- 使用函数组织代码:
bash复制function check_disk {
local threshold=$1
# 函数体
}
- 添加日志记录:
bash复制log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" >> /var/log/myscript.log
}
7. 国产Linux系统特别注意事项
随着国产操作系统如银河麒麟、统信UOS的普及,使用时需注意:
- 软件源配置:
bash复制# 银河麒麟添加软件源示例
sudo vim /etc/apt/sources.list.d/kylin.list
deb http://archive.kylinos.cn/kylin/KYLIN-ALL 4.0.2sp2 main
- 输入法安装:
bash复制# 搜狗输入法for Linux
sudo apt install fcitx fcitx-sogoupinyin
im-config -n fcitx
- 等保合规相关命令:
bash复制# 账户安全策略
sudo chage -M 90 username # 密码最长有效期
sudo passwd -l username # 锁定账户
# 审计相关
sudo auditctl -l # 查看审计规则
sudo ausearch -k "sudo" # 搜索sudo相关审计事件
- 系统日志位置差异:
- 常规Linux:/var/log/
- 银河麒麟:/var/log/kylin/
- 统信UOS:/var/log/deepin/
