我正在 Debian 下开发 Beaglebone Black。我正在编写 Udev 规则来管理 µSD 卡。我需要 Udev 执行的操作:当我的 µSD 插入时,安装 µSD /media/sdcard
(确实如此)并执行以下脚本:
- 停止 rsyslog.service(它会)
- 将 /var/log 移动到 /media/sdcard(不会)
- 创建从 /var/log 到 /media/sdcard/log 的链接(以继续记录但在 SDcard 中)(它不会这样做,但是 /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
我根据对我有帮助的内容在评论中写下答案。
感谢@kostix;)
主要问题可能是过度使用 sudo在执行的脚本中已经具有root权限的udev。@kostix 推荐我编写两个不同的脚本,一个包含操作,一个主要调用操作脚本中的函数。我做了两个解决方案,删除sudo
不需要存在的,并创建另一个包含操作的脚本。它运行完美,我现在可以查看脚本中的其他问题了!