我不知道该如何完成这项任务。我需要运行这个脚本,用随机数据填充嵌入式(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
。