【问题标题】:minimum time between signals in bashbash中信号之间的最短时间
【发布时间】:2015-07-16 16:40:35
【问题描述】:

我正在尝试制作一个使用 hostapd 启动/停止访问点的 bash 脚本。

我们有一个极端情况,我们想尽快切换到另一个 wifi 频道,并且由于 hostapd 不支持即时频道交换,我们必须:

  • 杀死进程
  • 更改配置文件
  • 再次启动 hostapd。

我决定将信号从主应用程序发送到此脚本(USR1 和 USR2)来执行此操作,但我没有得到预期的结果。我总是首先收到第二个信号,所以它不起作用。我曾尝试在代码中添加 sleep(1) 以使其正常工作,但这不是一个优雅的解决方案。

这是我正在使用的 c++ 行,

killAP();
sleep(1);
generateAP();

这就是脚本。

#!/bin/ash

TASKS=''

enqueueLaunch () {
    TASKS="$TASKS launch"
}

enqueueKill () {
   TASKS="$TASKS kill"
}

launchAP ()  {
    logger -t LAUNCH Launching AP--.
    /scripts/launchAP
    logger -t LAUNCH DONE
}

killAP () {
    logger -t KILL Killing AP

    PID=`cat /var/run/wifi-phy0.pid`
    kill -9 $PID
    iw wlan0 del
    rm -f /var/run/wifi-phy0.pid
    logger -t KILL  DONE
}

parse () {
    for i in $@ ; do
        case "$i" in
            "launch")
                launchAP
                ;;
            "kill")
                killAP
                ;;
        esac
    done
}

echo $$ > /var/run/hostapd-sh.pid

trap enqueueLaunch SIGUSR1
trap enqueueKill SIGUSR2

while :
do                            
   if [ ! -z "$TASKS" ] ; then
      parse $TASKS
      TASKS=""                      
   fi           
   sleep 1      
done

欢迎任何想法。

非常感谢!!

【问题讨论】:

  • 为什么这个脚本运行在后台监听信号而不是在需要的时候被调用?
  • 我们在应用程序中使用 fastCGI,如果我们在打开 fascgi 套接字后停止并启动 hostapd,hostapd 会保持打开状态,当我再次尝试绑定它们时,它会获取那些产生问题的套接字。
  • 虽然实时信号保证按照发送的顺序发送,但标准信号的发送顺序是未指定的。尝试切换到实时信号。
  • @Acampoh,你试过切换到实时信号吗?

标签: linux bash signals hostapd bash-trap


【解决方案1】:

虽然保证实时信号按发送顺序发送,但标准信号的发送顺序是未指定的。尝试切换到实时信号。


此外,您可能想尝试完全不同的方法。作为它的man page specifies,您可以简单地要求它重新加载其配置文件,而不是杀死然后重新启动hostapd

可以通过向 hostapd 处理器发送 SIGHUP 或使用 hostapd_cli(8) 实用程序(使用 hostapd_cli reconfigure)重新加载对配置文件的更改。

请注意,重新加载配置时已建立的连接会丢失。

【讨论】:

  • 我试过了。它似乎有效,但 AP 完全没有响应。无法连接到它。也许还有其他原因,但不知道。我也看过这个帖子 lists.shmoo.com/pipermail/hostap/2011-January/022394.html 我想它太旧了,但我还没有看到其他人说它现在得到支持。
  • 重新加载配置但通道保持未修改时,AP是否也无响应?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-20
  • 2018-06-22
  • 1970-01-01
  • 1970-01-01
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多