linux中不常见命令用法详解

以下是一些 Linux 中相对不常见但功能强大的命令及其详细解释,适用于高级用户或特定场景:


1. 文本处理类

comm

用途:比较两个已排序文件的行差异,输出三列结果(仅第一个文件、仅第二个文件、共有的行)。
示例

1
comm file1.txt file2.txt

参数

  • -1:隐藏仅第一个文件独有的行
  • -2:隐藏仅第二个文件独有的行
  • -3:隐藏共有的行

join

用途:基于共同字段(类似 SQL JOIN)合并两个已排序的文件。
示例

1
join -1 2 -2 1 file1.txt file2.txt  # 合并 file1 的第2列和 file2 的第1列

column

用途:将输入文本格式化为对齐的列(类似表格)。
示例

1
echo "Name Age\nAlice 30\nBob 25" | column -t

输出

1
2
3
Name   Age
Alice 30
Bob 25

2. 系统监控与调试

pidstat

用途:监控进程的 CPU、内存、I/O 等资源使用情况(需安装 sysstat 包)。
示例

1
pidstat -d 2  # 每2秒显示进程的磁盘I/O统计

mpstat

用途:报告 CPU 使用情况(多核细化统计)。
示例

1
mpstat -P ALL 1  # 每1秒显示所有CPU核心的利用率

lsof 的高级用法

用途:列出被进程打开的文件或网络连接。
示例

1
2
3
lsof -i :80          # 查看占用80端口的进程
lsof -u username # 查看某用户打开的文件
lsof /var/log/syslog # 查看正在使用某文件的进程

3. 网络工具

nc (netcat)

用途:网络调试工具(端口扫描、文件传输、代理等)。
示例

1
2
3
nc -zv example.com 80      # 检查端口是否开放
nc -l 1234 > received_file # 监听端口接收文件
echo "Hello" | nc -N example.com 80 # 发送数据到端口

ss (Socket Statistics)

用途:查看网络连接信息(替代 netstat)。
示例

1
ss -tunap  # 显示所有TCP/UDP连接及关联进程

4. 文件与磁盘

rename

用途:批量重命名文件(支持正则表达式)。
示例

1
rename 's/.txt/.md/' *.txt  # 将所有.txt扩展名改为.md

注意:不同发行版语法可能不同(Perl 或 C 版本)。


fallocate

用途:预分配或释放文件空间(无需填充内容)。
示例

1
2
fallocate -l 1G bigfile.img  # 快速创建1GB的空文件
fallocate -d sparse_file # 释放稀疏文件的空洞空间

debugfs

用途:手动修复 ext2/3/4 文件系统(谨慎使用)。
示例

1
2
3
debugfs /dev/sda1
debugfs: lsdel # 列出已删除但未覆盖的文件
debugfs: undel <inode> # 恢复指定inode的文件

5. 时间与计划任务

chronyc

用途:监控和调整 chronyd 时间同步服务。
示例

1
2
chronyc tracking    # 查看时间同步状态
chronyc sources -v # 列出时间源详细信息

6. 终端控制

script

用途:记录终端会话的所有输入输出。
示例

1
2
script -t 2> timing.log -a output.log  # 记录操作并保存时间戳
exit # 结束记录

回放

1
scriptreplay timing.log output.log

7. 其他实用工具

tac

用途:反向输出文件内容(cat 的逆序版)。
示例

1
tac file.txt  # 从最后一行开始显示

rev

用途:反转每行字符的顺序。
示例

1
echo "hello" | rev  # 输出 "olleh"

watch

用途:周期性执行命令并显示输出。
示例

1
watch -n 1 -d "ls -l"  # 每秒刷新并高亮变化

cal 的高级用法

示例

1
2
cal -3         # 显示上/当前/下月
cal -y 2024 # 显示2024全年日历

总结场景

  • 文本分析comm, join, column
  • 系统调试pidstat, lsof, debugfs
  • 网络诊断nc, ss
  • 批量操作rename, fallocate
  • 记录与回放script

这些命令在特定场景下能显著提高效率,但需谨慎使用系统级工具(如 debugfs)。