linux脚本实时检测U盘插拔驱动aria2c


linux下自动检测u盘热插拔情况,U盘热插拔后,挂载点可能发生变动,比如sda1突然变成了sda2,或者sdb1等等,需要程序自动识别,并自动判断挂载点,将新的挂载点名称写入相关程序的配置文件。主要方便驱动aria2等存储类的程序,代码如下,按.sh后缀命名:

#!/bin/sh
# 默认死循环检测,直到检测到u盘插入,并把正常挂载的u盘路径设置到aria2.conf里面后,才推出循环
predisk="sda1"     #  上次加载的挂载点名
APPID="aria2c"

while true           
do
sleep 10   # 每隔10秒检测一次u盘挂载情况,没有检测到u盘正常挂载,就只负责检测,不做其他处理。
nnn=$(df -h | grep "/dev/sd" | awk '{print $1}' | cut -c 6-9)
devnn="/mnt/"$nnn
#echo $devnn

if [ -n "`pidof $APPID`" ]; then        # 如果发现存在ariac2的进程
if [ -z "$nnn" ]; then                 # 如果发现 u盘 不存在 则执行
killall aria2c                         #关闭正在运行的 aria2进程
echo "udisk removed! aria2 stopped!"
fi
fi

if [ -n "$nnn" ]; then     # 如果发现存在 u盘 则执行
if [ $nnn != $predisk ]; then  # 进一步判断,如果u盘挂载是 和上次 不一样的挂载点,则执行

BAPA=$devnn/aria2_config
CONF=$BAPA/aria2.conf
SESS=$BAPA/aria2.session
DHHT=$BAPA/dht.dat
DDIR=$devnn/aria2

RAWC=/etc/config/aria2
needstr=$(grep -e "dir=.*" $CONF)  # 先查找出 u盘目录下的 aria2.conf 文件内记录 的路径!

if [ $needstr != "dir="$DDIR ]; then   # 如果插入的u盘挂载点, 和aria2.conf内记录的挂载点不同,那么更新之! 

killall aria2c   #关闭正在运行的 aria2进程
	
sed -i "s@input-file.*@input-file=$SESS@g" $CONF
sed -i "s@save-session.*@save-session=$SESS@g" $CONF
sed -i "s@dht-file-path.*@dht-file-path=$DHHT@g" $CONF
sed -i "s@dir.*@dir=$DDIR@g" $CONF

sed -i "s@option config_dir.*@option config_dir '$BAPA'@g" $RAWC
sed -i "s@option dir.*@option dir '$DDIR'@g" $RAWC

echo "aria2 updated -:"$nnn

predisk=$nnn

fi
fi

    if [ -z "`pidof $APPID`" ]; then   # u盘已经正常挂载,且conf文件被更新后, 如果发现不存在ariac2的进程,则启动之
     aria2c --conf-path=$CONF -D            # 启动aria2 即可。
     echo "udisk inserted ! aria2 started!"
    fi

fi

done

 运行效果如图

 

需事先预置好可能的挂载点,这样程序会自动匹配。

 

点击数: 77   打印  添加到收藏   发布时间: 2020-04-22




上一篇:挽救飞线-PCB打补丁
下一篇:Openwrt下aria2断电重启tracker丢失问题及修复





» 相关内容
  ubuntu上lua的tcp和udp服务方..
  cpulimit编译ipk包针对AR71XX..
  手动安装opkg方法ipk包-openwr..
  关于MAX3485芯片导致的多串口..
  微波雷达的两个明显作用
  3D打印材料分类特点
  DC-005插座的切换供电功能
  中位滤波算法-net版VB
  麦克风的负DB详细解释
  MD5加密的一段代码
  滤波函数增强版
  Matlab模拟PID方法-推荐
  Matlab强制拟合函数过零方法
  清空USB FX2LP FIFO缓冲方法
  Savgol萨维基购耳滤波方法-MAT..