1. Linux命令概述:从入门到精通的必备工具
作为一名Linux系统管理员,我每天的工作都离不开命令行操作。记得刚入行时,面对黑底白字的终端窗口,那种手足无措的感觉至今难忘。但当我逐渐掌握各种命令后,才发现命令行才是Linux系统最强大的武器。与图形界面相比,命令行操作更高效、更灵活,特别是在服务器管理和自动化任务方面。
Linux命令可以分为以下几大类:
- 文件与目录操作命令(如ls、cd、cp、mv等)
- 系统信息查询命令(如top、free、df等)
- 网络相关命令(如ping、ifconfig、netstat等)
- 权限管理命令(如chmod、chown等)
- 文本处理命令(如grep、awk、sed等)
- 软件包管理命令(如apt、yum等)
提示:初学者常犯的错误是试图一次性记住所有命令。实际上,掌握20%的核心命令就能完成80%的日常工作,剩下的可以在需要时查阅。
2. 文件与目录操作:Linux系统的基础
2.1 基本文件操作命令
ls命令是我使用频率最高的命令之一。它不仅用于列出目录内容,配合各种参数还能实现强大的功能:
ls -l # 显示详细信息(权限、所有者、大小等) ls -a # 显示隐藏文件(以.开头的文件) ls -lh # 以人类可读的格式显示文件大小 ls -t # 按修改时间排序cp和mv命令用于文件和目录的复制与移动。一个常见的坑是复制目录时需要加-r参数:
cp -r dir1 dir2 # 递归复制目录 mv file1 file2 # 重命名或移动文件2.2 文件内容查看与搜索
查看文件内容有多种方式,各有用处:
cat file # 显示整个文件内容 less file # 分页查看(可上下滚动) head -n 5 file # 显示前5行 tail -n 5 file # 显示最后5行 tail -f logfile # 实时监控日志文件变化grep命令是文本搜索的利器,我几乎每天都会用到:
grep "error" logfile # 查找包含"error"的行 grep -i "warning" logfile # 忽略大小写搜索 grep -r "function" /path # 递归搜索目录 grep -v "debug" logfile # 显示不匹配的行3. 系统管理与监控:掌握系统状态
3.1 系统信息查询
当系统出现性能问题时,这些命令能快速定位瓶颈:
top # 动态查看进程和系统资源使用情况 htop # top的增强版(需安装) free -h # 查看内存使用情况(-h表示人类可读格式) df -h # 查看磁盘空间使用情况 du -sh * # 查看当前目录各文件/目录大小ps命令用于查看进程信息,我常用的组合是:
ps aux # 查看所有运行中的进程 ps -ef | grep nginx # 查找特定进程3.2 用户与权限管理
Linux的权限系统是其安全性的基石。chmod命令修改文件权限:
chmod 755 script.sh # 所有者rwx,组和其他rx chmod +x script.sh # 添加执行权限chown命令改变文件所有者:
chown user:group file # 改变所有者和组4. 网络相关命令:连接与诊断
4.1 网络连接测试
ping是最基础但最有用的网络诊断工具:
ping example.com # 测试连通性 ping -c 4 example.com # 只发送4个包telnet虽然逐渐被ssh取代,但在测试端口连通性时仍然有用:
telnet example.com 80 # 测试80端口是否开放更现代的替代品是nc(netcat):
nc -zv example.com 80 # 测试端口4.2 网络配置与状态
ifconfig(或ip命令)查看和配置网络接口:
ifconfig # 显示网络接口信息(旧版) ip addr show # 新版替代命令netstat(或ss命令)显示网络连接状态:
netstat -tulnp # 查看监听中的端口和进程 ss -tulnp # 更快的替代命令5. 文本处理三剑客:grep、awk、sed
5.1 grep进阶用法
grep的正则表达式功能强大:
grep "^[A-Z]" file # 查找以大写字母开头的行 grep "[0-9]$" file # 查找以数字结尾的行 grep -E "error|fail" file # 查找error或fail5.2 awk数据处理
awk特别适合处理结构化文本数据:
awk '{print $1}' file # 打印每行第一个字段 awk -F: '{print $1}' /etc/passwd # 以:为分隔符 awk '$3 > 100 {print $0}' file # 第三个字段大于100的行5.3 sed流编辑器
sed用于文本替换和转换:
sed 's/foo/bar/g' file # 全局替换foo为bar sed -i.bak 's/foo/bar/g' file # 直接修改文件(保留备份) sed '/pattern/d' file # 删除匹配行6. 软件包管理与系统维护
6.1 软件包管理
不同Linux发行版使用不同的包管理器:
Debian/Ubuntu使用apt:
sudo apt update # 更新软件包列表 sudo apt install nginx # 安装软件 sudo apt remove nginx # 移除软件RHEL/CentOS使用yum或dnf:
sudo yum install httpd sudo dnf install httpd6.2 系统服务管理
systemd已成为现代Linux的标准服务管理工具:
sudo systemctl start nginx # 启动服务 sudo systemctl stop nginx # 停止服务 sudo systemctl restart nginx # 重启服务 sudo systemctl enable nginx # 设置开机启动 sudo systemctl status nginx # 查看服务状态7. 实用技巧与高级命令
7.1 命令组合与管道
Linux的强大之处在于命令可以组合使用:
ps aux | grep nginx # 查找nginx进程 cat logfile | grep "error" | wc -l # 统计错误数量 find / -name "*.log" -type f -mtime +30 -exec rm {} \; # 删除30天前的日志文件7.2 历史命令与别名
history命令查看和重用历史命令:
history # 显示命令历史 !number # 执行历史中第number条命令 !! # 执行上一条命令设置别名可以简化常用命令:
alias ll='ls -alF' alias grep='grep --color=auto'7.3 定时任务管理
crontab用于设置定时任务:
crontab -e # 编辑当前用户的crontab * * * * * command # 每分钟执行一次 0 3 * * * /path/to/backup.sh # 每天3点执行备份8. 常见问题排查与调试
8.1 日志分析
系统日志通常位于/var/log目录:
tail -f /var/log/syslog # 实时查看系统日志 journalctl -xe # 查看systemd日志 dmesg | grep error # 查看内核日志中的错误8.2 性能问题排查
当系统变慢时,可以按以下步骤排查:
- 使用top或htop查看CPU和内存使用情况
- 使用iostat查看磁盘I/O
- 使用iftop查看网络流量
- 使用strace跟踪进程系统调用
strace -p PID # 跟踪正在运行的进程 lsof -i :80 # 查看使用80端口的进程8.3 权限问题解决
遇到"Permission denied"错误时:
- 检查文件权限:ls -l
- 检查文件所有者:ls -n
- 检查SELinux状态:getenforce
- 检查文件系统挂载选项:mount
sudo setenforce 0 # 临时关闭SELinux sudo chcon -t httpd_sys_content_t /path/to/file # 修复SELinux上下文