我有一个RasPi,我想每次重新启动时执行一个shell脚本来自动挂载文件夹。
脚本命令是:
sudo mount -t cifs '文件夹路径' '挂载点' -o username=xxx,password=xxx,sec=ntlm
如果我手动使用它,它可以完美地工作,但是通过cronjob,它会响应“Mount Error(13): Permission denied”,无法执行挂载。 这意味着cronjob至少执行了该文件。
我的想法是手动挂载它,并检查/etc/fstab或/etc/mtab中是否禁用了自动挂载。由于它只是一个文件夹,因此我只在mtab中找到了它。 我不能在其中写入,但选项中没有“noauto”,所以一切都正确。
不确定它是否与crontab执行权限有关,但ls -lha /usr/bin/crontab的输出是-rwxr-sr-x 1。
如果你们中的任何人有任何线索如何解决这个问题,我将感激帮助。 谢谢
编辑1:
好吧,在经过数小时的努力后,它似乎在/home/pi/.config/lxsession/LXDE-pi/autostart.sh中运行(键入“sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart.sh”)。在那个文件中,我写了“@/home/pi/scripttoexecute.sh”。在我的执行脚本中,我写了“sudo mount -t cifs 'foldertomount' 'directorypath' -o credentials=/root/.smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777,sec=ntlm”。显然,要使用smb凭据文件,请写“sudo nano /root/.smbcredentials”,在那里写“username=xxx”和下一行“password=xxx”以及可选域。 感谢大家,我希望这可能会节省其他人的时间。 不确定它是否与apt-get upgrade和apt-get update有关。
如果我手动使用它,它可以完美地工作,但是通过cronjob,它会响应“Mount Error(13): Permission denied”,无法执行挂载。 这意味着cronjob至少执行了该文件。
我的想法是手动挂载它,并检查/etc/fstab或/etc/mtab中是否禁用了自动挂载。由于它只是一个文件夹,因此我只在mtab中找到了它。 我不能在其中写入,但选项中没有“noauto”,所以一切都正确。
不确定它是否与crontab执行权限有关,但ls -lha /usr/bin/crontab的输出是-rwxr-sr-x 1。
如果你们中的任何人有任何线索如何解决这个问题,我将感激帮助。 谢谢
编辑1:
好吧,在经过数小时的努力后,它似乎在/home/pi/.config/lxsession/LXDE-pi/autostart.sh中运行(键入“sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart.sh”)。在那个文件中,我写了“@/home/pi/scripttoexecute.sh”。在我的执行脚本中,我写了“sudo mount -t cifs 'foldertomount' 'directorypath' -o credentials=/root/.smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777,sec=ntlm”。显然,要使用smb凭据文件,请写“sudo nano /root/.smbcredentials”,在那里写“username=xxx”和下一行“password=xxx”以及可选域。 感谢大家,我希望这可能会节省其他人的时间。 不确定它是否与apt-get upgrade和apt-get update有关。
sudo crontab -e
应该与crontab -u root -e
相同,尽管对于后者,您可能需要使用sudo
。顺便说一下,我重新阅读了您的问题,并想知道为什么需要这个 cron?如果您希望在重新启动时运行此命令,则可能希望将命令放在在重新启动时运行的脚本中,而不是将其放在 cron 上。也许像rc.local
这样的文件会有用。我不确定您要做什么,或者树莓派如何工作,但您可能会发现 这个 有用。 - drewyupdrew