下面是一份针对已经熟悉 Linux 基础命令的用户所整理的「高级命令与常见操作」笔记,涵盖文本处理、系统管理、网络调试与其他常用的进阶技巧。请你审核下面笔记,检查是否有过时的内容,如有请进行替换,确保其符合现代化需求:
一、文本处理与过滤
1. grep 高级用法
- 概念:
grep用于在文本中搜索匹配的行,支持正则表达式、递归搜索等。 - 常用操作:
- 递归搜索:
grep -r "关键词" /path/to/dir - 忽略大小写:
grep -i "keyword" file - 显示匹配上下文:
grep -C 3 "pattern" file # 匹配行上下文 3 行 grep -A 3 "pattern" file # 匹配行后 3 行 grep -B 3 "pattern" file # 匹配行前 3 行 - 使用正则:
grep -E "reg(expression|exp)" file - 只显示文件名:
grep -l "keyword" *.txt
- 递归搜索:
2. sed(流编辑器)
- 概念:
sed是一种非交互式流编辑器,支持对文本进行插入、删除、替换以及正则处理等。 - 常用操作:
- 行内容替换:
sed 's/old/new/' file # 替换每行首次出现的 old 为 new sed 's/old/new/g' file # 替换每行所有出现的 old 为 new sed -i 's/old/new/g' file # 直接修改文件内容 - 删除匹配行:
sed '/pattern/d' file # 删除含有 pattern 的行 - 指定行号操作:
sed '1,5d' file # 删除 1 到 5 行 sed '10a new_text' file # 在第 10 行后插入文本 sed '5i new_text' file # 在第 5 行前插入文本 - 结合正则:
sed -n '/regex/p' file # 只打印符合正则的行
- 行内容替换:
3. awk
- 概念:
awk是一门脚本语言,适合对文本内容进行基于行和列的处理、统计、报表生成等。 - 常用操作:
- 按列分割:默认使用空白分割列:
$1、$2等分别代表第 1、2 列。awk '{ print $1, $3 }' file - 指定分隔符:
awk -F: '{ print $1, $3 }' /etc/passwd - 条件过滤:
awk '$3 > 1000 { print $1, $3 }' file - 内置变量:
NR:当前行号NF:当前行列数FNR:当前文件的行号(处理多个文件时使用)
awk '{ print NR, $0 }' file - 执行算术操作:
awk '{ sum += $2 } END { print sum }' file
- 按列分割:默认使用空白分割列:
4. sort / uniq / cut / paste
- sort:排序文件内容
sort file # 默认按字符顺序排序 sort -n file # 按数字大小排序 sort -r file # 逆序排序 - uniq:去除重复行
sort file | uniq # 一般和 sort 搭配 uniq -c file # 显示重复次数 uniq -d file # 只显示重复行 - cut:提取文本中的特定列
cut -d: -f1 /etc/passwd # 以 : 作为分隔符,提取第 1 列 - paste:将多行文本并列合并
paste file1 file2 # 两个文件并列合并
5. xargs
- 概念:
xargs接受标准输入并将其转换为命令行参数,常与管道一起使用。 - 常用操作:
- 将文件列表传给命令:
find . -name "*.log" | xargs rm -f - 限制单次执行命令的参数数量:
find . -name "*.log" | xargs -n 10 rm -f - 结合
-I自定义替换字符串:cat filelist.txt | xargs -I {} cp {} /backup/dir/
- 将文件列表传给命令:
二、系统管理与监控
1. 进程管理相关
1.1 ps 高级用法
- 常用操作:
- 查看所有进程:
ps -ef - 查看以树状方式显示进程关系:
ps -ef --forest - 结合管道查找指定进程:
ps -ef | grep "nginx"
- 查看所有进程:
1.2 top / htop
- top:动态显示系统进程状态与资源占用。
- 进入后可以:
- 按
P键按 CPU 占用排序 - 按
M键按内存占用排序 - 按
k键输入 PID 并杀死该进程 - 按
q退出
- 按
- 进入后可以:
- htop:功能更强大的交互式查看工具,需要自行安装,支持鼠标操作、界面更丰富。
1.3 kill, pkill, killall
- kill:根据 PID 杀死进程
kill -9 <PID> - pkill:根据进程名称匹配杀死进程
pkill -9 nginx - killall:杀死同名进程
killall -9 httpd
1.4 nohup & &
- 概念:允许进程在退出终端后继续运行。
nohup your_command & # 后台执行并不受退出终端影响
2. 服务管理
2.1 systemctl
- 概念:基于
systemd系统的服务管理工具。 - 常用操作:
- 启动 / 停止 / 重启:
systemctl start nginx systemctl stop nginx systemctl restart nginx - 开机自启动:
systemctl enable nginx systemctl disable nginx - 查看状态:
systemctl status nginx - 查看所有服务列表:
systemctl list-units --type=service
- 启动 / 停止 / 重启:
2.2 journalctl
- 概念:查看和管理 systemd 日志。
- 常用操作:
- 查看所有日志:
journalctl - 实时查看最新日志:
journalctl -f - 查看特定服务日志:
journalctl -u nginx - 按时间范围查看:
journalctl --since "2023-01-01" --until "2023-01-02"
- 查看所有日志:
3. 系统性能监控
3.1 iostat
- 概念:查看 CPU 和磁盘 I/O 性能指标。
- 常用操作:
iostat -x 2 # 每 2 秒输出一次扩展统计信息
3.2 sar
- 概念:系统活动报告工具,可记录并回放 CPU、内存、网络等多种历史性能指标。
- 常用操作:
sar -u 1 5 # 每秒采集 CPU 使用率,共 5 次 sar -n DEV 1 5 # 监控网络设备流量
3.3 vmstat
- 概念:快速查看虚拟内存、CPU、IO 等整体概况。
- 常用操作:
vmstat 2 5 # 每 2 秒采集一次,共 5 次
4. 文件系统与磁盘管理
4.1 df / du
df:查看文件系统的磁盘使用情况。df -h # 以人性化方式显示du:查看目录或文件大小。du -sh /path # 统计指定目录大小
4.2 磁盘分区:fdisk / parted
fdisk:交互式管理 MBR 分区表- 常用:
fdisk /dev/sda
- 常用:
parted:适用于 GPT 分区表,交互式或命令式操作
4.3 LVM(逻辑卷管理)
- 概念:创建灵活的逻辑卷,便于在线扩容或缩容。
- 常用操作(示例):
- 创建物理卷 (PV):
pvcreate /dev/sdb1 /dev/sdc1 - 创建卷组 (VG):
vgcreate myvg /dev/sdb1 /dev/sdc1 - 创建逻辑卷 (LV):
lvcreate -n mylv -L 10G myvg - 挂载:
mkfs.ext4 /dev/myvg/mylv mount /dev/myvg/mylv /mnt/mydata - 扩容:
lvextend -L +5G /dev/myvg/mylv resize2fs /dev/myvg/mylv
- 创建物理卷 (PV):
三、网络管理与调试
1. 网络配置与路由
1.1 ip 命令套件
- 概念:取代传统的
ifconfig、route、arp等命令,功能更强大且统一。 - 常用操作:
- 查看网卡信息:
ip addr show - 配置 IP:
ip addr add 192.168.1.10/24 dev eth0 ip link set eth0 up - 查看路由表:
ip route show - 添加默认路由:
ip route add default via 192.168.1.1
- 查看网卡信息:
1.2 ss / netstat
- 概念:查看网络连接、端口占用等信息;
ss是netstat的新一代替代者,速度更快。 - 常用操作:
ss -tlnp # 查看 TCP 监听端口及进程 ss -uanp # 查看 UDP 监听端口及进程 netstat -plnt # 类似用途,但 netstat 在有些发行版需额外安装
2. 网络测试
2.1 ping
- 用法扩展:
ping -c 4 8.8.8.8 # 发送 4 个包后停止 ping -i 0.2 8.8.8.8 # 每隔 0.2 秒发送一次
2.2 traceroute / tracepath
- 概念:跟踪到目标主机所经过的路由路径,调试网络连通性问题。
- 常用操作:
traceroute 8.8.8.8 tracepath 8.8.8.8
2.3 tcpdump
- 概念:抓包分析工具,可捕获网络接口的实时数据包。
- 常用操作:
- 捕获所有接口所有数据:
tcpdump -i any - 抓取指定端口:
tcpdump -i eth0 port 80 - 抓取指定主机:
tcpdump -i eth0 host 192.168.1.100 - 写入文件,后续分析:
tcpdump -i eth0 -w output.pcap
- 捕获所有接口所有数据:
3. 其他网络工具
3.1 nmap
- 概念:网络扫描和安全审计工具,可扫描主机开放端口、服务版本等。
- 常用操作:
- 快速扫描:
nmap -sS 192.168.1.0/24 - 探测操作系统:
nmap -O 192.168.1.100 - 服务与版本探测:
nmap -sV 192.168.1.100
- 快速扫描:
3.2 curl / wget
- 下载与请求测试:
- 下载文件:
wget https://example.com/file.zip curl -O https://example.com/file.zip - 通过 HTTP 请求测试:
curl -I https://example.com # 只获取响应头 curl -X POST -d "key=value" https://example.com
- 下载文件:
四、高级调试与排错
1. strace
- 概念:跟踪进程执行时系统调用、信号等,常用于排查故障。
- 常用操作:
strace -p <PID> # 跟踪正在运行的进程 strace ls # 跟踪命令 ls strace -o output.txt ls # 将跟踪信息输出到文件
2. ltrace
- 概念:类似
strace,但主要跟踪库函数调用。 - 常用操作:
ltrace -p <PID> # 跟踪正在运行进程的库函数调用 ltrace myapp # 跟踪可执行文件的库函数调用
五、文件打包、同步与传输
1. tar 高级用法
- 概念:打包并压缩、解压缩文件的常用工具。
- 常用操作:
- 打包并压缩(gzip):
tar -czvf archive.tar.gz /path/to/dir - 打包并压缩(bzip2):
tar -cjvf archive.tar.bz2 /path/to/dir - 解压:
tar -xzvf archive.tar.gz tar -xjvf archive.tar.bz2 - 查看文件列表:
tar -tzvf archive.tar.gz
- 打包并压缩(gzip):
2. rsync
- 概念:高效增量同步工具,支持本地或远程文件同步。
- 常用操作:
- 本地同步:
rsync -av /src/ /dest/ - 远程同步:
rsync -avz /src/ user@remote:/dest/ - 删除目标多余文件:
rsync -av --delete /src/ /dest/
- 本地同步:
3. scp / sftp
- 概念:基于 SSH 的安全拷贝/文件传输工具。
- 常用操作:
scp file user@remote:/path scp -r directory user@remote:/path # 递归目录 sftp user@remote # 进入交互式 FTP 模式
六、用户权限与安全
1. sudo 高级用法
- 概念:以其他用户(通常是 root)权限执行命令。
- 常用操作:
- 编辑 sudoers 文件(推荐使用
visudo):visudo - 仅授予特定命令权限:
- 在 sudoers 中配置:
让username ALL=(ALL) NOPASSWD:/usr/bin/systemctlusername可以免密执行systemctl。
- 在 sudoers 中配置:
- 编辑 sudoers 文件(推荐使用
2. chown / chmod 进阶
- chown:改变文件所有者和组
chown user:group file chown -R user:group dir # 递归整个目录 - chmod:改变文件权限
chmod u+x file # 给属主加执行权限 chmod g-r file # 去掉所属组读权限 chmod 755 file # rwxr-xr-x
3. SELinux 常见操作(如适用)
- 查看状态:
sestatus - 临时关闭 SELinux:
setenforce 0 - 永久关闭 /etc/selinux/config 文件中修改
SELINUX=disabled并重启。
七、其他实用技巧
1. alias 与自定义命令
- 概念:在
~/.bashrc或~/.zshrc中添加自定义别名,简化常用命令输入。 - 示例:
alias ll='ls -l --color=auto' alias gs='git status'
2. screen / tmux
- 概念:终端复用工具,保持会话不断开,支持多窗口分割。
- 常用操作(以 tmux 为例):
- 启动 tmux:
tmux - 分割窗口:
Ctrl + b,然后"或%
- 分离会话:
Ctrl + b,然后d
- 重新连接会话:
tmux attach
- 启动 tmux:
3. date / uptime / which
- date:查看和设置系统时间
date "+%Y-%m-%d %H:%M:%S" date -s "2025-04-01 12:00:00" - uptime:查看系统运行时长和平均负载
uptime - which:查看命令的绝对路径
which ls
4. 环境变量与 export
- 查看环境变量:
env - 设置环境变量(仅在当前会话):
export MYVAR="some_value" - 永久生效:可写入
~/.bashrc或~/.profile。
八、总结
- 文本处理:掌握
grep、sed、awk三大工具能快速处理日志、配置文件以及各种文本数据。 - 系统管理:熟练使用
ps、top、kill、systemctl等能应对常见进程、服务管理及日志查看需求。 - 网络调试:
ip、ss、tcpdump、nmap等工具是排查网络故障、端口占用和安全扫描的利器。 - 文件同步与传输:
tar、rsync、scp的高级用法能让你在备份、迁移、部署时如虎添翼。 - 安全与权限:合理使用
sudo、chown、chmod、SELinux 等,保障系统安全。 - 终端管理与脚本:使用
screen、tmux、自定义alias和环境变量,可以极大提升效率。 - 调试排错:在出现复杂问题时,可以借助
strace、ltrace、journalctl进行深入分析。
掌握以上这些命令与操作后,你将在大多数 Linux 场景下应对自如,也更容易编写自动化脚本和解决系统级问题。在实际使用中,还可以结合 Shell 脚本语言(如 Bash、Zsh)或更高级语言(如 Python)进行复杂任务的编排与自动化。祝学习顺利!