如何在电源循环期间不间断地运行脚本

如何在电源循环期间不间断地运行脚本

我不知道该如何完成这项任务。我需要运行这个脚本,用随机数据填充嵌入式(linux-Busybox v1)设备上的 nand 闪存,然后不断重复此过程,直到用户停止它或闪存驱动器发生故障。我遇到的问题是,我的测试涉及多次对设备进行电源循环。但是,脚本停止运行,这要求我手动重新启动它。有人可以推荐一个解决方案吗?谢谢!

脚本:

#!/bin/sh

mkdir -p /mytest/storage/testnand

idx=0
while true
do
#./script.sh >/mytest/storage/testnand/test.raw
dd if=/dev/urandom of=/mytest/storage/testnand/test.raw bs=100000 count=50 2> /dev/null
if [ ! $? = 0 ]
then
    echo "ERROR: ${idx}"
    echo "ERROR: ${idx}" >> /mytest/storage/testnand/error.log
    continue
fi
cp /mytest/storage/testnand/test.raw /mytest/storage/testnand/test_copied.raw
if [ ! $? = 0 ]
then
    echo "ERROR 1: ${idx}"
    echo "ERROR 1: ${idx}" >> /mytest/storage/testnand/error.log
    continue
fi
cmp /mytest/storage/testnand/test.raw /mytest/storage/testnand/test_copied.raw 2> /dev/null
if [ ! $? = 0 ]
then
    echo "ERROR 2: ${idx}"
    echo "ERROR 2: ${idx}" >> /mytest/storage/testnand/error.log
    continue
fi
echo "OK ${idx}"
echo "OK ${idx}" >> /mytest/storage/testnand/ok.log

idx=`expr $idx + 1`
done

更新:

我没有提到,因为我当时没有这些信息,嵌入式操作系统已修补:有许多文件是只读的; /etc/rc 就是其中之一。是否有某种解决方法可以让我在启动时运行我的脚本?

答案1

您可以将以下内容添加到/etc/rc.local

sudo -u ${USERNAME-TO-RUN-AS} tmux new-session -d -s ${NAME-FOR-SESSION} -d 'sh /path/to/your/script'

然后您可以输入“tmux attachment namefortmuxsession”来查看脚本的终端输出。

替换/path/to/your/script',$(USERNAME-TO-RUN-AS) and${NAME-FOR-SESSION}` 以满足您的需要。

当然,您需要tmux安装。您可能可以使用 来执行此操作screen,但我更喜欢tmux

相关内容