crontab环境

Modified on: Sun, 20 Oct 2019 06:00:02 +0800

我编写了各种脚本来启动Java服务器应用程序,这些应用程序通常在关闭之前运行24小时(通过使用不同的参数调用相同的脚本)。

该脚本依赖于文件中定义的环境变量:~/<user>.env,我从.bashrc中获取。

从命令行调用脚本时可以正常工作,但是如果我想将脚本添加为crontab条目,我会遇到无法读取.bashrc的问题。

我的问题:解决这个问题的最佳实践方法是什么?我意识到我可以定义一个crontab条目,例如:

* * * * 1-5 /usr/bin/bash -c '. /home/myuser/myuser.env && /home/myuser/scripts/myscript.sh'

......但这看起来很丑陋。或者,我可以在每个脚本的开头部署myuser.env,但这将成为维护的噩梦。

任何帮助表示感谢。

作者:Adamski

最佳答案

我实际上通过在我的bash命令中添加'-l'( - login)标志来发现一个相当优雅的解决方案,这使得它可以获取所有登录文件,包括.bashrc。因此我的crontab命令就是:

* * * * 1-5 /usr/bin/bash -lc '/mnt/group/core/deploy/scripts/test.sh' > /dev/null 2>&1
作者:Adamski

相关问答

添加新评论