Crontab脚本:没有这样的文件或目录

5
一个bash脚本在crontab中执行。每次运行时,都会通过电子邮件发送以下错误信息:
/opt/Informatica/pcdev/scripts/startworkflow_trg.sh: line 1: #!/bin/bash: No such file or directory

以下是crontab中的内容:

# Check queue and start corresponding processes in test
* * * * * (. ~/.bash_profile; $HOME/scripts/startworkflow_trg.sh tst)

脚本的功能正常,但错误邮件在收件箱中不断增加。该如何解决此错误?

当您手动运行脚本时,是否收到相同的错误消息? - Zumo de Vidrio
1
echo $HOME 的输出是什么? - prado
2
~ 修改为 $HOME,去掉不必要的括号并将分号替换为 && - Mark Setchell
你如何在 cron 上下文之外调用脚本? - Laurent G
@ZumodeVidrio,起初我以为这是crontab配置的问题,但现在我注意到即使在手动运行脚本时也会出现错误。 - ph3nx
@ph3nx 这改变了情况!在这种情况下,您可能希望更新您的问题并添加您的脚本内容。 - Zumo de Vidrio
2个回答

7
问题出现在将行从Windows复制并粘贴到Linux时,执行crontab -e命令时。Windows的LF字符x'0d'会被插入并引起问题。解决方法是删除所有行并重新输入它们。您可以通过执行crontab -l | od -x命令并查找0d字符来发现该问题。

这个真的很难找,非常感谢! - David Wei

1
为了找到脚本中出现错误的行,注释掉了脚本的不同部分。即使只留下第一行包含: #!/bin/bash 仍然出现了问题。
通过创建一个新脚本并手动编写上述第一行,然后粘贴旧脚本的其余内容来解决了该问题。我们认为脚本的第一行中有在我们的编辑器中看不到的字符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接