Centos下自动记录开机次数时间及扫描PCIE信息shell脚本记录

本文介绍了一个Centos脚本,用于自动记录每次开机次数、时间以及PCIE扫描信息。脚本需设置权限并添加到rc.local,便于在每次启动时更新计数和日志。

前言

用于记录在Centos开机后自动记录开机次数及时间,PCIE扫描信息(此处可更换成其他扫描),可以用于断电重启测试。


一、脚本内容

#!/bin/bash
# 执行此脚本前 需要给此脚本以及/home增加权限,
# 执行cd /;chmod 777 /home;chmod 777 /path/to/your/script.sh
# 即可使用普通用户执行。
# 想开机就开始计次需要在rc.local下增加 sh /path/to/your/script.sh

###############################
# 记录启动计数文件的路径
count_file="/home/boot_count.txt"
log_file="/home/log.txt"
DATE_TIME="$(date +'%Y-%m-%d %H:%M:%S')"
# 检查计数文件是否存在
if [ ! -f "$count_file" ];
 then
    echo "0" > "$count_file"
     
fi

# 读取当前的启动计数
count=$(cat "$count_file")

# 增加启动计数
count=$((count + 1))

# 记录新的启动计数
echo "$count" > "$count_file"
echo "$DATE_TIME" >> "$log_file"
echo "这是第 $count 次启动!" >> "$log_file"
lspci>>"$log_file"

二、使用方法

1.首要按照注释中将存放日志的文件相应的权限

# 如果想要用普通用户就可以使用此脚本,建议进行以下权限的更改。
cd /
chmod 777 /home
chmod 777 /path/to/your/script.sh

2.在rc.local下最后一行添加脚本执行

su 
# 输入管理员密码
vi  /etc/rc.local
在最后一行添加
sh /path/to/your/script.sh
按下ESC,输入wq!保存并退出
此时reboot后即可在/home/boot_count.txt下查看启动次数,
在/home/log.txt中查看累计启动次数时间及其扫描PCIE信息。

总结

此脚本可以实现设备运行一次就进行一次记录,可以用于定时开关机或者和断电计数器一起使用,脚本命名尽量简洁,注意权限和rc.local的内容编写,脚本可顺利运行。

### 在 Linux 中添加虚拟 PCIe 设备并通过 `lspci` 查看 要在 Linux 系统中添加虚拟 PCIe 设备并确保能够通过 `lspci` 命令查看,可以采用以下方法。这种方法主要依赖于 QEMU/KVM 的虚拟化功能以及 Linux 内核的支持。 #### 方法概述 QEMU 支持创建虚拟的 PCIe 设备,并允许用户定义这些设备的行为和属性。通过配置 QEMU 或者加载特定的内核模块,可以在系统中模拟出虚拟的 PCIe 设备[^4]。随后,使用 `lspci` 命令即可检测到这些新增的虚拟设备。 --- #### 步骤一:确认环境支持 首先需要确保当前运行的 Linux 系统具备以下条件: - **启用 KVM 模块**:KVM 是 QEMU 的加速组件,用于提高虚拟化的效率。 - **安装 QEMU 及其相关工具**:QEMU 提供了创建虚拟硬件的能力。 - **加载 vfio-pci 模块**(可选):该模块主要用于直通物理设备,但在某些情况下也可以辅助管理虚拟设备。 检查是否启用了 KVM 功能: ```bash lsmod | grep kvm ``` 如果没有输出,则需手动加载 KVM 模块: ```bash sudo modprobe kvm_intel # 对于 Intel CPU sudo modprobe kvm_amd # 对于 AMD CPU ``` --- #### 步骤二:启动带有虚拟 PCIe 设备的 QEMU 实例 以下是创建两个虚拟 PCIe 设备的具体命令示例: ```bash qemu-system-x86_64 \ -M pcie-root-port=on \ # 启用 PCIe Root Port -device pci-bridge,bus=pcie.0,chassis_nr=1,id=pci_bridge1,port=1,chains=1,multifunction=on \ -device pci-bridge,bus=pcie.0,chassis_nr=2,id=pci_bridge2,port=2,chains=1,multifunction=on \ -nographic -m 2G # 设置内存大小和其他参数 ``` 解释: - `-M pcie-root-port=on`: 显式开启 PCIe Root Port 支持。 - `-device pci-bridge,...`: 创建虚拟的 PCIe Bridge 设备,并指定其父级总线 (`bus`) 和端口号 (`port`)。 - `chassis_nr`, `id`, `chains`, `multifunction`: 定义桥接设备的唯一性和链路特性[^4]。 --- #### 步骤三:验证虚拟 PCIe 设备的存在 在 QEMU 虚拟机内部或者宿主机上运行以下命令来验证虚拟 PCIe 设备是否存在: ```bash lspci ``` 预期输出应包含类似于以下条目: ``` 00:01.0 PCI bridge: Red Hat, Inc. Virtual PCI-to-PCI bridge (rev 01) 00:02.0 PCI bridge: Red Hat, Inc. Virtual PCI-to-PCI bridge (rev 01) ``` 如果未看到新增的虚拟设备,请检查 QEMU 配置是否正确,或者重新加载必要的内核模块。 --- #### 步骤四:持久化设置(可选) 为了使虚拟 PCIe 设备永久生效而不必每次都手动启动 QEMU,可以考虑将上述 QEMU 配置保存为脚本或服务文件。例如,编写一个 Shell 脚本来简化操作: ```bash #!/bin/bash qemu-system-x86_64 \ -M pcie-root-port=on \ -device pci-bridge,bus=pcie.0,chassis_nr=1,id=pci_bridge1,port=1,chains=1,multifunction=on \ -device pci-bridge,bus=pcie.0,chassis_nr=2,id=pci_bridge2,port=2,chains=1,multifunction=on \ -nographic -m 2G & ``` 赋予脚本执行权限并运行它: ```bash chmod +x add_virtual_pcie_devices.sh ./add_virtual_pcie_devices.sh ``` --- ### 注意事项 1. **性能影响**:大量虚拟 PCIe 设备可能会增加系统的复杂度和资源消耗。 2. **兼容性测试**:部分老旧的操作系统可能无法完全识别新的虚拟 PCIe 设备,建议优先测试 CentOS 7.x 或更高版本[^3]。 3. **调试手段**:如果遇到问题,可以借助 `hwloc` 工具进一步分析 PCIe 拓扑结构[^2]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值