linux - Bash 在启动时运行 gpxlogger

标签 linux bash raspberry-pi gpsd

我试图在启动 RaspPi 后运行 gpxlogger,问题是如果启动时没有来自 GPSD 的信号(在启动后大约 1.5-2 分钟收到信号),gpxlogger 会在 5 秒后自动关闭,有时更多,所以 sleep 可能无法解决它),如果发生这种情况,它会返回 0。

到目前为止我有:

(while true; do
     until gpxlogger -d -f /home/pi/gpslogs/log'%Y-%m-%d-%H:%M:%S'.txt -i 2; do
         echo "restarting"
         sleep 10
     done
done
) &

在/etc/init.d/rc.local

问题是,脚本不等待 gpxlogger 返回,而是每 10 秒启动一个新的 gpxlogger。

tl;dr 所需操作:

启动 Raspberry -> 循环 gpxloggers 在 GPSD 无数据 5 秒后死机 -> 在 GPSD 中修复 -> 单个 gpxlogger 保持登录文件

有人可以帮我解决这个问题吗? 任何输入将不胜感激。

最佳答案

如果它已经在运行,请不要重新启动。

while true; do
    if ! pidof gpxlogger >/dev/null; then
        echo "restarting"
        gpxlogger -d -f /home/pi/gpslogs/log'%Y-%m-%d-%H:%M:%S'.txt -i 2
    fi
    sleep 10
done &

(括号似乎是多余的,所以我把它们去掉了。)

关于linux - Bash 在启动时运行 gpxlogger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34675306/

相关文章:

android - 自动重启Linux控制台应用程序

Linux BlueZ dbus 通信 a2dp

linux - 为什么在 Linux 中有时会有多个守护进程?

c - 替代 container_of()

linux - 关闭,比如 vim,会触发 sys_exit 吗?

mysql - 如何使用 bash 脚本写入 mysql 表

linux - Bash 函数作为参数给出 -> 本地 archive.tar.gz 中的 ssh 存档远程文件夹 -> echo "test"也打包在 tar 文件中

将帧从相机 (/dev/video0) 复制到帧缓冲区 (/dev/fb0) 会产生意外结果

linux - shell "${i%,v}"在 run-parts.sh 中是什么意思?

bash - 递归搜索给定名称的文件,找到特定短语的实例并显示该文件的路径