Сценарий не работает над запуском, но делает, когда выполнено вручную

Я сделал сценарий, который загружает файл VHD, фиксирует его с ntfsfix таким образом, это может быть монтированием rw и затем монтирует его. Этот сценарий творит абсолютные чудеса, когда выполнено через терминальное использование sudo, но при выполнении его через crontab, ~/.profile или с помощью приложений запуска, это не работает. Рассматриваемый сценарий

#!/bin/sh
rmmod nbd
modprobe nbd max_part=16
qemu-nbd -c /dev/nbd0 '/media/tygo/1.8TB Drive/MEGA.vhdx' 
ntfsfix /dev/nbd0p2
mount -o rw /dev/nbd0p2 /home/tygo/MEGA
1
задан 11 March 2020 в 23:39

2 ответа

Для выполнения скрипта с помощью crontab удостоверьтесь, что Вы указываете полные пути:

#!/bin/sh
/usr/sbin/rmmod nbd
/usr/sbin/modprobe nbd max_part=16
/usr/bin/qemu-nbd -c /dev/nbd0 '/media/tygo/1.8TB Drive/MEGA.vhdx' 
/usr/bin/ntfsfix /dev/nbd0p2
/usr/bin/mount -o rw /dev/nbd0p2 /home/tygo/MEGA

Вы могли найти использование путей whereis команда: whereis mount.

Затем выполненный crontab с sudo: sudo crontab -e и добавьте полный путь к своему сценарию:

@reboot /home/user/scripts/vhdscript.sh

Используйте свое собственное время вместо @reboot

Чтобы видеть, выполняется ли это, Вы могли бы добавить некоторую дополнительную информацию к своему сценарию. Например, добавьте в конец своего сценария:

echo "VHD file loading have been completed" | logger

Затем с помощью терминала контролируйте казнь сценария появлением сообщения:

journalctl -f | grep VHD
1
ответ дан 17 March 2020 в 00:03

Мне в конечном счете удалось зафиксировать его путем сна спустя секунду после загрузки VHD с qemu и выполнением его с cronjob с sudo каждая половина минуты с помощью следующих двух строк:

* * * * * sudo /etc/megaMount.sh > /var/log/megaMount.log
* * * * * (sleep 30; sudo /etc/megaMount.sh > /var/log/megaMount.log)

Отредактированный сценарий следующим образом, первые проверки строки, если он уже смонтирован:

if ! grep -qs '/home/tygo/MEGA' /proc/mounts; 
then 
        sleep 1
        rmmod nbd
        modprobe nbd max_part=16
        qemu-nbd -c /dev/nbd0 '/media/tygo/1.8TB Drive/MEGA.vhdx' 
        sleep 1
        ntfsfix /dev/nbd0p2
        mount -o rw /dev/nbd0p2 /home/tygo/MEGA
fi

Править: Забыл упоминать, что задания добавляются с помощью sudo crontab -e, не абсолютно уверенный, почему я затем также должен выполнить использование сценария sudo, но это не работает без него.

0
ответ дан 17 March 2020 в 00:03

Другие вопросы по тегам:

Похожие вопросы: