下面是一份针对已经熟悉 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/systemctl
username
可以免密执行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)进行复杂任务的编排与自动化。祝学习顺利!