cwd*_*cwd 17 shell cron environment-variables interactive
我有一个运行脚本的 cron 作业。当我通过交互式 shell(ssh 到 bash)运行脚本时,它工作正常。当脚本通过 cron 自行运行时,它会失败。
我的猜测是它使用了交互式 shell 中设置的一些环境变量。我将对脚本进行故障排除并删除它们。
进行更改后,我知道我可以在 cron 中将脚本排队以使其正常运行,但是有没有一种方法可以从命令行运行脚本,但告诉它像从 cron 一样运行 -即在非交互式环境中?
Gil*_*il' 15
从 cron 运行命令和在命令行上运行之间的主要区别是:
/bin/sh);cron(8)或crontab(5)手册页;通常只有HOME,也许SHELL,也许LOGNAME,也许USER和一个小PATH);%字符进行了特殊处理(它变成了换行符);下面的调用将运行 shell 片段,就像它是从 cron 调用的一样。我假设该片段不包含字符'或%.
env - HOME="$HOME" USER="$USER" PATH=/usr/bin:/bin /bin/sh -c 'shell snippet' </dev/null >job.log 2>&1
Run Code Online (Sandbox Code Playgroud)
另请参阅从 cron 执行 sh 脚本,这可能有助于解决您的问题。