我已经在互联网上搜索了几个小时来寻找问题的解决方案,但我似乎找不到答案或解决我做错的事情。我正在尝试设置一个 cron 来定期运行 perl 脚本。我使用 Ubuntu 18.04.3 LTS 作为 Oracle VM Virtualbox 5.2.26 上的虚拟机,在 Windows 10 主机上运行。
我没有成功运行 perl 脚本,所以我尝试执行一些其他命令来测试我做错了什么。我在运行 /usr/bin/ 路径中找到的许多命令时遇到问题。我已经能够执行“echo”和“printf”,但仅此而已。下面是我的代码和我从每一行收到的错误消息(请注意“echo“$PATH””行似乎工作正常):
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/home/myname/Alpha/ATK_queries
SHELL=/bin/bash
[email protected]
2 * * * * /usr/bin/env
2 * * * * env
2 * * * * echo "$PATH"
2 * * * * perl atk_queries.pl
2 * * * * /usr/bin/perl /home/myname/Alpha/ATK_queries/atk_queries.pl
2 * * * * perl /home/myname/Alpha/ATK_queries/atk_queries.pl
命令顺序的输出/错误:
(1) /bin/bash: /usr/bin/env: 没有这样的文件或目录
(2) /bin/bash: $'env\r': 找不到命令
(3) /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/home/myname/Alpha/ATK_queries
(4) 无法打开perl脚本“atk_queries.pl”:没有这样的文件或目录
(5)无法打开perl脚本“/home/derek/Alpha/ATK_queries/atk_queries.pl”:没有这样的文件或目录
(6) 无法打开perl脚本“/home/derek/Alpha/ATK_queries/atk_queries.pl”:没有这样的文件或目录
非常感谢任何指导。
答案1
显然,这个问题与修改 Notepad++ 中的 crontab 文件有关,Notepad++ 本身就是一个 Windows 程序。根据 Haxiel 的评论,在命令本身内执行 \r 回车符有些奇怪。
通过 crontab -e 修改文件,删除 crontab 内容,用完全相同的文本替换它们,并将文件另存为非 DOS 文件,导致所有命令以及 Perl 脚本成功执行。