Linux作为现代服务器和开发环境的主流操作系统,其核心价值在于稳定、高效和高度可定制。与Windows等商业系统不同,Linux采用模块化设计,主要由以下几个核心组件构成:
提示:生产环境推荐使用LTS(长期支持)版本,如Ubuntu 22.04或CentOS Stream 9,它们提供5年以上的安全更新支持
Linux终端(Terminal)是系统管理的核心界面。打开终端后,你会看到提示符通常显示为[用户名@主机名 当前目录]$。例如:
bash复制devuser@web-server ~/projects $
这里的$表示普通用户身份,如果是#则代表root超级用户权限
常用基础快捷键:
Ctrl+C 终止当前命令Ctrl+Z 挂起进程(可用fg恢复)Ctrl+D 发送EOF(相当于exit)Tab 命令/路径补全↑/↓ 浏览历史命令Linux命令通用格式:
bash复制命令 [选项] [参数]
-或--开头,修改命令行为例如查看详细目录列表:
bash复制ls -l /var/log # -l是选项,/var/log是参数
date命令:
bash复制date +"%Y-%m-%d %H:%M:%S" # 输出:2024-03-15 14:30:22
常用格式符号:
%Y 四位年份%m 月份(01-12)%d 日(01-31)%H 小时(00-23)%M 分钟(00-59)%S 秒(00-60)cal命令:
bash复制cal -3 # 显示当月及前后各一月
cal 2024 # 显示整年日历
uname命令:
bash复制uname -a
# 典型输出:
# Linux web-server 5.15.0-76-generic #83-Ubuntu SMP Thu Jun 15 19:16:32 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
关键选项:
-s 内核名称(默认)-n 网络节点主机名-r 内核发行版本-m 机器硬件名称hostnamectl命令(现代Linux推荐):
bash复制hostnamectl status
提供更详细的系统标识信息,包括静态/动态主机名、操作系统版本等
pwd命令:
bash复制pwd -P # 显示物理路径(解析符号链接)
当你在符号链接目录时,pwd默认显示逻辑路径,-P选项显示实际物理路径
cd命令技巧:
bash复制cd - # 返回上一个目录
cd ~ # 返回用户主目录
cd ../.. # 上移两级目录
ls命令高级用法:
bash复制ls -lh --time-style=long-iso # 人类可读大小+完整时间格式
ls -t | head -5 # 显示最新修改的5个文件
关键选项组合:
-l 详细列表-h 人性化显示文件大小(KB/MB/GB)-a 显示隐藏文件(以.开头)-R 递归列出子目录touch命令:
bash复制touch {file1,file2}.txt # 批量创建文件
touch -t 202403151430.00 log.txt # 设置特定时间戳
cp/mv命令:
bash复制cp -av source_dir/ dest_dir/ # 保留所有属性递归复制
mv --backup=numbered *.log archive/ # 覆盖前自动备份
ps命令:
bash复制ps aux --sort=-%mem | head # 按内存使用排序
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu # 定制输出列
top/htop命令:
bash复制top -b -n 1 > system_snapshot.txt # 批处理模式输出
htop需要额外安装,提供更友好的交互界面:
bash复制sudo apt install htop # Debian/Ubuntu
sudo yum install htop # RHEL/CentOS
df命令:
bash复制df -hT -x tmpfs # 排除临时文件系统
输出示例:
code复制Filesystem Type Size Used Avail Use% Mounted on
/dev/nvme0n1p2 ext4 200G 45G 146G 24% /
du命令:
bash复制du -sh * | sort -h # 排序显示当前目录大小
du --max-depth=1 -h /var # 查看/var下级目录大小
ping命令:
bash复制ping -c 4 -i 0.5 example.com # 发送4个包,间隔0.5秒
traceroute命令:
bash复制traceroute -T -p 80 example.com # TCP方式跟踪80端口
ip命令(取代过时的ifconfig):
bash复制ip addr show # 显示所有接口
ip route list # 查看路由表
ss命令(替代netstat):
bash复制ss -tulnp # 显示所有监听端口
ss -o state established '( dport = :443 or sport = :443 )' # 过滤HTTPS连接
id命令:
bash复制id -un # 显示当前用户名
id -Gn # 显示所属组
sudo命令:
bash复制sudo -l # 查看可用权限
sudo -u postgres psql # 以特定用户执行
chmod命令:
bash复制chmod 750 script.sh # 所有者:rwx,组:r-x,其他:---
chmod +x backup.sh # 添加执行权限
umask设置:
bash复制umask 0027 # 目录755,文件644
bash复制grep -rin --color=auto "error" /var/log/ # 递归忽略大小写搜索
grep -E "404|500" access.log # 扩展正则匹配
bash复制sed -i.bak 's/old/new/g' file.txt # 替换并创建备份
sed -n '10,20p' logfile # 打印10-20行
bash复制awk '{print $1,$4}' access.log # 打印特定列
awk -F: '{print $1,$6}' /etc/passwd # 指定冒号分隔符
bash复制# 统计当前目录文件数(排除目录)
find . -maxdepth 1 -type f | wc -l
# 查看CPU信息
lscpu | grep -E 'Model name|Socket|Thread|Core'
# 批量重命名
rename 's/.JPG/.jpg/' *.JPG
在~/.bashrc中添加:
bash复制export HISTTIMEFORMAT="%F %T " # 记录时间戳
export HISTSIZE=10000 # 内存中保存数量
export HISTFILESIZE=20000 # 文件保存数量
shopt -s histappend # 追加而不是覆盖
使用tmux保持会话:
bash复制tmux new -s dev_session # 新建会话
Ctrl+b d # 分离会话
tmux attach -t dev_session # 重新连接
"Command not found":
which command_nameecho $PATH"Permission denied":
ls -l filegetenforce关键日志位置:
/var/log/syslog(Debian)/var/log/messages(RHEL)/var/log/nginx/, /var/log/mysql/实时监控日志:
bash复制tail -f /var/log/nginx/access.log | grep -v "ELB-HealthChecker"
CPU瓶颈:
bash复制mpstat -P ALL 1 # 每核心CPU使用率
pidstat -u 1 # 进程级CPU统计
内存瓶颈:
bash复制free -h
vmstat 1 # 虚拟内存统计
I/O瓶颈:
bash复制iostat -xz 1 # 磁盘I/O统计
iotop -o # 实时I/O监控