我有一个计划任务在启动时运行脚本,我使用以下命令创建该脚本crontab -e
@reboot /home/ubuntu/startup.sh > /home/ubuntu/log.log 2>&1
我的startup.sh
脚本包含:
#!/bin/bash
...
bash /home/ubuntu/ec2-script.sh
并且我的ec2-script.sh
包含:
spark-submit
但我得到了spark-submit: command not found
。如果我从终端尝试,它工作得很好。但当脚本运行时启动,无法找到spark-submit
命令。我也尝试将 sleep 也放进去,这样 spark 就可以正常启动,但没用。如果有人指出哪里出了错或缺了什么,那将非常有帮助。
答案1
您必须使用 spark-submit 的完整路径。
Cron 不会像在终端/bash 中那样设置环境。这意味着,除其他事项外,PATH(可执行文件的搜索路径)未设置。
您可以在 crontab 的第一行设置环境,例如:
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
OTHERVAR=/some/thing
或者在您的脚本中。如果您在脚本中设置它们,则必须导出 PATH 和您设置的其他变量,以便在调用其他脚本或程序时将它们传递下去。