Как запустить сценарий без перерыва в цикле питания
Я растоптал о том, как выполнить эту задачу. Мне нужно запустить этот скрипт, который заполняет флэш-память nand на встроенном устройстве (linux-Busybox v1) случайными данными, а затем постоянно повторяет этот процесс, пока пользователь не остановит его или не выйдет из строя флешка. Проблема, с которой я столкнулся, заключается в том, что мое тестирование включает в себя выключение питания устройства несколько раз. Но скрипт перестает работать, поэтому мне нужно запустить его вручную. Может кто-нибудь порекомендовать решение? Спасибо!
Автор сценария:
#!/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 attach namefortmuxsession", чтобы просмотреть вывод терминала из вашего скрипта.
Замена /path/to/your/script',
$(ИМЯ_ПОЛЬЗОВАТЕЛЬ-TO-RUN-АС)and
$ {NAME-FOR-SESSION} `в соответствии с вашими потребностями.
Конечно, вам нужно tmux
установлены. Вы могли бы сделать это с screen
вместо этого, однако я предпочитаю tmux
,