Linux命令

rename

重命名工具,支持通配符和正则表达式

# 去掉文件名中的空格
rename 's/ //g' *.mp4

# 修改扩展名(会将所有 .txt 文件的扩展名改为 .bak)
rename 's/\.txt$/.bak/' *.txt

# -n : 预览效果
rename -n 's/\.log$/\.bak/' *.log

apt

# 查看软件包更新日志
apt changelog openssh-server

img2txt

# 可以在控制台查看小图像
img2txt -f utf8 -w <宽度> -h <高度> <图像文件路径>

journalctl

# 查看实时日志(类似 tail -f)
journalctl -f

# 查看最近10分钟日志
journalctl --since "10 minutes ago"

# 查看指定时间范围日志
journalctl --since "2025-12-25 02:38:00" --until "2025-12-25 02:40:00"

# 查看特定服务日志(如 sshd)
journalctl -u sshd

# 查看所有服务日志
journalctl -u *

# 查看错误日志
journalctl -p err

# 查看警告及以上日志
journalctl -p warning

# 查看内核日志(-k)
journalctl -k

# 输出为 JSON 格式
journalctl -o json

# 输出为短格式
journalctl -o short-precise

dd

测试磁盘写能力
因为/dev/zero是一个伪设备,它只产生空字符流,对它不会产生IO,所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。
# time dd if=/dev/zero of=/test.dbf bs=8k count=300000 

测试磁盘读能力
因为/dev/sdb1是一个物理分区,对它的读取会产生IO,/dev/null是伪设备,相当于黑洞,of到该设备不会产生IO,所以,这个命令的IO只发生在/dev/sdb1上,也相当于测试磁盘的读能力。
time dd if=/dev/sdb1 of=/dev/null bs=8k 

yum

仅下载
# yum -y install --downloadonly --downloaddir /tmp/ NetworkManager 

查看依赖包列表
# yum deplist docker-compose | grep provider
   provider: python3.x86_64 3.6.8-18.el7
   provider: python3.i686 3.6.8-18.el7
   provider: python3.x86_64 3.6.8-18.el7
   provider: python3.i686 3.6.8-18.el7
   provider: python36-cached_property.noarch 1.5.1-2.el7
   provider: python36-docker.noarch 2.6.1-3.el7
   provider: python36-dockerpty.noarch 0.4.1-18.el7
   provider: python36-docopt.noarch 0.6.2-8.el7
   provider: python36-jsonschema.noarch 2.5.1-4.el7
   provider: python36-pysocks.noarch 1.6.8-7.el7
   provider: python36-requests.noarch 2.14.2-2.el7
   provider: python3-setuptools.noarch 39.2.0-10.el7
   provider: python36-six.noarch 1.14.0-3.el7
   provider: python36-texttable.noarch 1.6.2-1.el7
   provider: python36-websocket-client.noarch 0.47.0-2.el7
   provider: python36-PyYAML.x86_64 3.13-1.el7

查看yum事务列表
# yum history list

回滚指定事务(根据ID)
# yum history undo 7 

adb

# 查询已连接设备
adb devices

# 查询所有包名
adb shell pm list packages -s

# 获取应用的详细信息
adb shell dumpsys package <包名>

# 卸载
adb shell pm uninstall --user 包名

# 停用应用
adb shell pm disable --user 包名

# 启用应用
adb shell pm enable --user 包名

rpm

# 查看某个 RPM 包的所有脚本
rpm -q --scripts <package-name>

# 查看 RPM 包中包含的所有文件
rpm -ql <package-name>

# 查看某个 RPM 包的详细信息,包括文件的权限、大小等
rpm -qi <package-name>

# 提取 RPM 包内容
rpm2cpio <package-name>.rpm | cpio -idmv

# 重置数据库
rpm --rebuilddb

# 查看更新日志
rpm -q --changelog openssh-server

virsh

# 查看OS元数据列表
virt-install --osinfo list

# 创建虚拟机
virt-install \
  --name=CentOS_Stream_10 \
  --ram=2048 \
  --vcpus=2 \
  --disk path=/media/wuxk/514BA5C710D27B7B/CentOS-Stream-GenericCloud-x86_64-10-latest.x86_64.qcow2,format=qcow2 \
  --os-variant=rhel7.0 \
  --network network=default \
  --graphics spice \
  --import

# 运行状态虚拟机列表 --all(全部列表)
virsh list

# 虚拟机信息
virsh dominfo 3

# 虚拟机删除
virsh undefine 3

# 查看虚拟机IP
virsh domifaddr an_89

# 设置虚拟机centos用户公钥
virt-customize -a CentOS-7-x86_64-GenericCloud-1703.qcow2 --ssh-inject centos:string:"123"
# 设置用户密码
--root-password password:ubuntu
# 主机名
--hostname ubuntutest

# 添加mac地址绑定
virsh net-update default add ip-dhcp-host '<host mac="52:54:00:48:27:1D" ip="198.51.100.3"/>' --live --config

# 修改绑定
virsh net-update default modify ip-dhcp-host '<host mac="52:54:00:48:27:1D" ip="198.51.100.3"/>' --live --config

# 查看绑定
virsh net-dhcp-leases virbr1

# 进入控制台
virsh console an_89

nmap

NMAP 默认只会扫描1000个常用的端口

参数	作用
-sT	TCP 连接扫描(不安全)
-sS	SYN 扫描(安全,推荐)
-sU	UDP 扫描
-Pn	禁用 ping 扫描
-p	指定端口(如 -p 80,443)
-oX	输出 XML 格式结果
-T	设置扫描速度(T1~T6)
-sV	服务版本检测
-O	操作系统识别
-sC	使用 NSE 脚本
-A	强力扫描(包含版本、操作系统、脚本等)
-6	IPv6 地址扫描
-f	使用小数据包规避防火墙
-v	显示冗余信息

主机发现‌:检测目标主机是否在线(如 nmap -sn 192.168.1.0/24)

‌端口扫描‌:探测开放端口及服务版本(如 nmap -sV 192.168.1.10)

‌操作系统识别‌:推断目标主机的操作系统(如 nmap -O 192.168.1.10)

‌服务版本检测‌:识别端口上运行的服务版本(如 nmap -sV 192.168.1.10)

‌防火墙规避‌:通过分片、IP 伪装等策略绕过防火墙(如 nmap -f 192.168.1.10)

扫描指定端口:nmap -sV -6 -p 10000-11000 wuxk.ip-ddns.com

dmidecode

查看型号
# dmidecode -s system-product-name

查看系统信息
# dmidecode -t system

screen

#创建会话 -d:后台 -m:存在的话则重命名 -S 指定名称 (或bash)
screen -d -m -S anolisupdate sh -c "ping -c 100 localhost | tee /tmp/update_anolis.log"

#会话列表
screen -list

#进入会话
screen -r anolisupdate

#离开会话,但不终止任务
在 screen 会话中按下 Ctrl + A 然后按下 d。

#终止会话
screen -X -S <会话编号或名称> quit

循环

for 循环(适用于每行只有一个字段)
# cat list
1.2.3.4
1.2.3.5

# for i in $(cat list);do ssh $i lsblk;done

for 循环(范围)
for i in {1..188};do echo $i;done


while循环(适用于每行有多个字段)
# cat list
1.2.3.4 666
1.2.3.5 333
cat list | while read -r ip port;do ssh $ip -p$port;done

strace

跟踪调试命令,可以跟踪命令、进程、子进程

跟踪命令调用
# strace -o ls.log ls /tmp

显示 cat 命令中与文件操作相关的系统调用(open、read、write)
# strace -e trace=open,read,write cat /etc/passwd

统计系统调用耗时
strace -c ls /tmp

跟踪已运行的进程 字符串内容最多显示 9999 字节 
该命令会实时监控进程 3300348 向 ‌标准输出(stdout)‌ 和 ‌标准错误(stderr)‌ 写入的所有内容(如日志、错误消息等),并完整显示(因 -s 9999 确保内容不截断)。
# strace -p 3300348 -s 9999 -e write=1,2

跟踪网络请求
# strace -e trace=network curl www.baidu.com

‌分析启动缓慢的程序
strace -tt -c -o slow.log ./slow_program

# 在脚本中获取脚本的绝对路径
echo $(readlink -f "$0") # 输出/root/a.sh

EOF

# 会展开 Shell 变量(如 $() 和 $0) - 区别在于开头的 EOF 和 'EOF'
var="Hello"
cat <<EOF
$var World  # 输出:Hello World
EOF


# 不会展开 Shell 变量(如 $() 和 $0)
var="Hello"
cat <<'EOF'
$var World  # 输出:$var World(原样输出)
EOF

物理机交付 2025-07-17
OpenStack 2025-07-15

评论区