我有一个远程服务器文件系统,我尝试通过FUSE sshfs在本地安装在FreeBSD 9机器上,Cron为备份程序安装。 我有SSH密钥设置框之间允许无密码login作为根本用户在本地计算机上。
Cron设置为运行以下脚本(在Root的crontab中):
#!/bin/sh echo "Mounting Share" /usr/local/bin/sshfs -C -o reconnect -o idmap=user -o workaround=all <remote user>@<remote domain>.com: /mnt/remote_server
作为root用户,我可以在命令行上运行这个脚本而没有问题,也不需要密码,共享就可以成功挂载。 然而,当由Cron运行脚本失败。 sshfs的path与sshfs的值相同
这是从Cron守护进程收到的电子邮件地址:
X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <HOME=/root> X-Cron-Env: <PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=root> X-Cron-Env: <USER=root> Mounting Share fuse: failed to exec mount program: No such file or directory fuse: failed to mount file system: No such file or directory
我被困在为什么我收到No such file or directory在这种情况下。 鉴于path看起来是正确的,这似乎更奇怪。
我也试图比较env在shell中的输出和插入到脚本中的env 。 我没有看到任何应该引起这个麻烦的环境variables。 在启动时,FUSE报告其版本为:
fuse4bsd: version 0.3.9-pre1, FUSE ABI 7.8
帮助我ServerFault向导,你是我唯一的希望!
事实certificate$ PATH环境variables是这个问题的原因。 修改了上面的脚本,将PATH设置为与shell相同,现在它没有问题:
PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin" export PATH
我想这个教训是从来没有做任何关于最小克伦环境的假设。