Я работаю над 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 ...
Интересно, это проблема прав ...
Черт возьми, почему так много звонков sudo?
udevзапускает свои скрипты с правами суперпользователя, ему не нужно никакогоsudo. И `sudo 'может легко не делать то, что вы, якобы, ожидаете в общем случае. Я имею в виду, пожалуйста, прекратите бездумно копировать любую ерунду, которую вы видите в случайных сообщениях в блоге; вложите огромное количество мыслей в то, что вы реализуете.