Linux命令行操作与系统管理实战指南
1. Linux系统环境概述
第一次接触Linux的人常会被它的命令行界面吓到,但真正用过后你会发现,这套诞生于1991年的操作系统远比想象中友好。我在运维岗位工作8年,从CentOS到Ubuntu都用过,最深的体会是:掌握Linux环境就像学骑自行车,开始可能摇摇晃晃,一旦上手就再也回不去了。
现代Linux系统主要由三部分组成:内核(管理硬件资源)、Shell(命令解释器)和文件系统。与Windows不同,Linux一切皆文件——硬件设备是文件,进程信息是文件,就连网络连接也是文件。这种设计哲学让所有操作都能通过命令完成,比如插上U盘后,你会看到它被映射为/dev/sdb1这样的设备文件。
新手常见误区:总想找图形化工具。其实命令行效率更高,按Tab键能自动补全,方向键↑可调出历史命令,熟练后操作速度比鼠标快3倍不止。
2. 终端操作基础
2.1 Shell环境初探
打开终端看到username@hostname:~$这个提示符时,你已经进入了Bash Shell(最常用的Shell类型)。这里的~代表用户家目录,相当于Windows的C:\Users\YourName。试试这几个基础命令:
pwd # 显示当前路径(Print Working Directory) ls # 列出文件(相当于dir) cd /tmp # 切换目录(Change Directory)我习惯用ls -lht组合参数:
-l显示详细信息-h人类可读的文件大小(自动换算KB/MB)-t按修改时间排序
2.2 文件操作四件套
# 创建/删除 mkdir project && touch project/test.txt # &&表示前一条成功才执行后一条 rm -r project # -r参数递归删除目录 # 复制/移动 cp file1 file2 # 复制 mv file1 new_name # 重命名或移动危险命令预警:
rm -rf /会删除整个系统!建议在~/.bashrc里添加alias rm='rm -i'让rm命令总是询问确认。
3. 系统管理核心命令
3.1 进程管理三板斧
ps aux | grep nginx # 查看进程(a所有用户,u详细信息,x无终端进程) top # 动态监控(类似任务管理器) kill -9 1234 # 强制结束PID为1234的进程我常用的组合技:
# 查找并杀死所有Python进程 pgrep python | xargs kill -93.2 网络配置实战
ifconfig # 查看IP(新系统用ip addr) ping baidu.com # 测试连通性 netstat -tulnp # 查看监听端口(-tTCP -uUDP -l监听 -n数字显示 -p进程)遇到网络问题时,我的排查顺序:
ping 网关IP查内网ping 8.8.8.8测外网nslookup baidu.com验DNS
4. 文本处理神器
4.1 grep/sed/awk三剑客
grep "error" /var/log/syslog # 过滤含error的行 sed -i 's/old/new/g' file.txt # 替换文本(-i直接修改文件) awk '{print $1}' data.log # 提取第一列真实案例:统计Nginx日志中每个IP的访问量
awk '{print $1}' access.log | sort | uniq -c | sort -nr4.2 文件查看技巧
cat -n file.txt # 显示行号 less file.log # 分页查看(/搜索 n下一个) tail -f /var/log/nginx/access.log # 实时追踪日志5. 权限与用户管理
5.1 权限体系解析
Linux权限用10个字符表示,比如-rwxr-xr--:
- 第1位:文件类型(-普通文件 d目录 l链接)
- 2-4位:所有者权限
- 5-7位:组权限
- 8-10位:其他用户权限
修改权限的两种方式:
chmod 755 script.sh # 数字法(7=rwx 5=r-x) chmod u+x,g-w,o=r file # 字母法(u用户 g组 o其他)5.2 用户管理实操
sudo useradd -m devuser # -m创建家目录 passwd devuser # 设置密码 usermod -aG sudo devuser # 加入sudo组生产环境建议:禁用root远程登录,改用sudo用户+SSH密钥认证。
6. 软件包管理对比
不同发行版的包管理工具:
| 发行版 | 安装命令 | 更新命令 |
|---|---|---|
| Ubuntu | sudo apt install nginx | sudo apt update && upgrade |
| CentOS | sudo yum install httpd | sudo yum update |
| Arch | sudo pacman -S nginx | sudo pacman -Syu |
我常用的清理命令:
# Ubuntu sudo apt autoremove # 删除无用包 # CentOS sudo yum clean all # 清理缓存7. 环境变量配置
查看所有环境变量:
env临时添加PATH(关闭终端失效):
export PATH=$PATH:/new/path永久生效需要写入配置文件:
echo 'export PATH=$PATH:/new/path' >> ~/.bashrc source ~/.bashrc # 立即生效8. 定时任务管理
crontab -e # 编辑定时任务经典格式:
* * * * * command | | | | | | | | | +----- 星期几 (0 - 6) (周日=0) | | | +------- 月份 (1 - 12) | | +--------- 日 (1 - 31) | +----------- 小时 (0 - 23) +------------- 分钟 (0 - 59)实例:每天3点备份
0 3 * * * /home/backup.sh9. 系统信息查询
uname -a # 内核版本 lsb_release -a # 发行版信息 free -h # 内存使用(-h人性化显示) df -h # 磁盘空间 lscpu # CPU信息10. 高效工作技巧
10.1 命令组合技
# 后台运行并输出日志 nohup command > log.txt 2>&1 & # 批量重命名 for file in *.txt; do mv "$file" "${file%.txt}.log"; done10.2 实用小工具
history | grep ssh # 搜索历史命令 !! # 上一条命令 !$ # 上条命令的最后一个参数 ctrl+r # 反向搜索历史命令最后分享我的.bashrc配置片段:
alias ll='ls -alFh' alias grep='grep --color=auto' export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '