Ubuntu 为什么我的cron作业有时会在cd上以“失败”开头;不是目录;?

Ubuntu 为什么我的cron作业有时会在cd上以“失败”开头;不是目录;?,ubuntu,cron,cd,Ubuntu,Cron,Cd,我在无人值守的Ubuntu工作站上创建了一个日常cron作业: 0 3 * * * cd /home/spertus/src-mirror/blockly; svn up; git add -A; git commit -m "Automatic commit `date`"; git push 大约有一半的时间,它是有效的。另一半时间,我收到一封以以下行开头的错误消息: /bin/sh: line 0: cd: /home/spertus/src-mirror/blockly: Not a

我在无人值守的Ubuntu工作站上创建了一个日常cron作业:

0 3 * * * cd /home/spertus/src-mirror/blockly; svn up; git add -A; git commit -m "Automatic commit `date`"; git push
大约有一半的时间,它是有效的。另一半时间,我收到一封以以下行开头的错误消息:

/bin/sh: line 0: cd: /home/spertus/src-mirror/blockly: Not a directory
Skipped '.'

有人知道为什么cd会失败吗?

最可能的解释是您的主目录是自动装载的,这意味着如果您最近没有访问它,
/home/spertus
将不存在

正如您在评论中所说,您应该将目录移动到其他地方,或者了解如何强制安装它

在执行命令之前,可能只是访问主目录:

ls /home/spertus >/dev/null 2>&1; cd /home/spertus/src-mirror/blockly; ...

这就足够了,但我对自动装载的了解还不够确定。

因为有时候路径是文件而不是目录我是唯一有权访问的人,而且我从不改变文件层次结构中的这一点,所以我不知道如何通过文件来实现。顺便说一句,我喜欢你的后缀。你的主目录是自动挂载的吗?@KeithThompson,是的,可能就是这样。听起来我应该把目录移到其他地方,或者获取本地关于如何强制安装的建议。非常感谢。我打赌移动(或重新创建)目录(并对crontab进行相应的更改)将解决这个问题。如果没有,我将重新开始这个问题。
ls/home/spertus>/dev/null 2>&1;cd/home/spertus/src镜像/块,所以它不会仍然执行cd命令?您可能想使用
&&
@ansh0l:是的,如果
cd
失败,您将收到一条错误消息,这正是应该发生的。希望
ls
命令将导致
/home/spertus
自动装载。我不知道它是否真的会工作。@KeithThompson好的,我以为
ls
是检查目录是否存在,然后才将
cd
放入其中。在任何情况下,
ls
本身都不能在我的系统上自动装载目录。只是好奇,什么时候可以
ls
自动挂载目录?@ansh0l:我不知道;正如我所说,我对自动安装不太了解。一般的想法是,在您尝试访问该目录之前,该目录不存在,但某些访问它的方法仍然可能失败。
ls
技巧只是猜测。