rk3588监控断电情况

sudo vim /usr/local/bin/boot_logger.sh


#!/bin/bash

# 定义日志文件路径
LOG_FILE="/var/log/boot_history.log"

# 创建日志目录(如果不存在)
sudo mkdir -p "$(dirname "$LOG_FILE")"
sudo touch "$LOG_FILE"
sudo chmod 666 "$LOG_FILE"  # 为了让普通用户也能写入,生产环境建议更严格的权限

# 获取当前时间戳
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')

# 获取设备启动时间(系统已运行时间)
UPTIME=$(uptime -s)

# 获取内核启动信息(dmesg中最早的信息)
# 使用 tail 和 head 精确抓取内核启动的第一行时间戳
# 注意:dmesg 的时间戳是系统启动后的秒数
BOOT_TIME_FROM_DMESG=$(dmesg | tail -n 50 | grep -m 1 "\[" | awk '{print $1}' | tr -d '[]' | head -c 12)
# 将相对时间转换为绝对时间(近似值)
if [ -n "$BOOT_TIME_FROM_DMESG" ]; then
    # 这是一个近似计算,将系统启动时间减去dmesg中的时间戳,得到绝对时间
    BOOT_EPOCH=$(date -d "$UPTIME" +%s)
    DMESG_EPOCH=$(echo "$BOOT_EPOCH - $BOOT_TIME_FROM_DMESG" | bc)
    BOOT_DATETIME=$(date -d "@$DMESG_EPOCH" '+%Y-%m-%d %H:%M:%S' 2>/dev/null || echo "N/A")
else
    BOOT_DATETIME="N/A"
fi

# 将信息写入日志文件
echo "=================================" | tee -a "$LOG_FILE"
echo "系统启动记录" | tee -a "$LOG_FILE"
echo "记录时间: $TIMESTAMP" | tee -a "$LOG_FILE"
echo "系统启动时间 (uptime): $UPTIME" | tee -a "$LOG_FILE"
echo "内核启动时间 (近似值): $BOOT_DATETIME" | tee -a "$LOG_FILE"
echo "---------------------------------" | tee -a "$LOG_FILE"

# 记录上一次的关机记录(如果存在上次会话)
LAST_SHUTDOWN=$(last -x | grep shutdown | head -n 1)
if [ -n "$LAST_SHUTDOWN" ]; then
    echo "上次关机记录: $LAST_SHUTDOWN" | tee -a "$LOG_FILE"
else
    echo "上次关机记录: 未找到(可能是断电)" | tee -a "$LOG_FILE"
fi

echo "" | tee -a "$LOG_FILE"


sudo chmod +x /usr/local/bin/boot_logger.sh
sudo vim /etc/systemd/system/boot-logger.service

[Unit]
Description=Log boot time for power failure diagnosis
After=syslog.target network.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/boot_logger.sh
RemainAfterExit=no
StandardOutput=journal

[Install]
WantedBy=multi-user.target


sudo systemctl daemon-reload
sudo systemctl enable boot-logger.service
sudo systemctl start boot-logger.service  

cat /var/log/boot_history.log






评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值