2016-03-01 118 views
0

我有一个cron作业来运行一个名为sedcmd.sh的sed shell来预处理一些json数据。当我在正确的目录我手动运行它与crontab不会运行sed shell

. ./sedcmd.sh 

它的工作原理。外壳本身工作正常。 参考命令的一个内部看起来像

sed -i '/^\s*$/d' /home/school/Desktop/Programs/rawjsondata.txt 

我的cronjob看起来像

5 * * * * . ./home/school/Desktop/Programs/sedcmd.sh 

我得到的错误“没有这样的文件或目录下找到”。我究竟做错了什么。我三重检查了任何拼写错误。我也似乎无法从任何其他目录运行sedcmd.sh,即使我给整个文件路径,所以它肯定是我做错了。我对解决方案的想法是

  1. 我应该将sedcmd.sh添加到我的$ PATH或bashrc中,以便我可以从任何地方调用它。我不知道该怎么做。 或
  2. 弄清楚如何从crontab中正确调用它。我也不知道该怎么做。
+1

如果将反式词条更改为'5 * * * */home/school/Desktop/Programs/sedcmd.sh'(没有点),该怎么办? –

+0

修复它。那为什么呢?我认为这些点是调用shell所必需的。 – Sam

+1

仅当您在相同的目录中调用文件时。看看[这里](http://unix.stackexchange.com/a/4432) –

回答

1

当您运行从终端的脚本,你这样做: ./script_name.sh而是从crontab中执行相同的脚本,你这样做5 * * * * /path/to/script/script_name.sh

萨姆已经得到了来自评论这个答案,发布答案作为社区维基。