Я работаю над Beaglebone Black под Debian. Я пишу правила Udev для управления картой µSD. Что мне нужно сделать для Udev: когда мой µSD подключен, подключите µSD к /media/sdcard (он делает) и выполните скрипт, который:

  • Остановите rsyslog.service (это делает)
  • Переместить /var /log в /media /sdcard (это НЕ)
  • создайте ссылку из /var /log на /media /sdcard /log (для продолжения записи в журнал, но на SD-карте) (это не так, но /media /sdcard /log не существует, поскольку предыдущий шаг не удался)
  • перезапустите службу rsyslog (она работает)

Вот скрипт, который делает то, что я только что описал:

logger 'Enterring /root/ServolineScripts/LogsonSDcard.sh script'
logger 'Refreshing Mountinglogs'
sudo rm /var/log/Mountinglogs.log
logger 'Stopping syslog service'
sudo /etc/init.d/rsyslog stop
sudo mv /var/log /media/sdcard/
sudo ln -s /media/sdcard/log /var/log
sudo /etc/init.d/rsyslog start
logger 'Successfully restarted rsyslog, logs are back on syslog!'
logger 'Restarted syslog service'
logger 'Quitting /root/ServolineScripts/LogsonSDcard.sh script'

Я не уверен, почему он не перемещает каталог /var /log. Этот же скрипт выполняется вручную с помощью простого sh /root/ServolineScripts/LogsonSDcard.sh ...

Интересно, это проблема прав ...

1 ответ1

0

Я пишу ответ, с чем мне помогли в комментариях.

Кредиты на @kostix;)


Вероятно, главной проблемой было чрезмерное использование sudo в скрипте, который выполняется Udev, у которого уже есть права root. @kostix предложил мне написать два разных скрипта, один с действиями и один основной, который вызывает функции в скрипте действий. Я выполнил оба решения: удалил sudo который не должен существовать, и создал другой скрипт с действиями. Это сработало отлично, и теперь я могу посмотреть на другие проблемы в моем сценарии!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .