Abr*_*ile 13 bash environment-variables crontab
我正在工作,Redhat
并且在/usr/local/bin
我想crontab
为root
用户调用的文件夹中几乎没有程序。我认为通过将二进制文件放在该文件夹中就足以像在 shell 中一样直接调用程序。
基本上我每次都需要指定文件夹,所以下面的 crontab 不起作用
5 9 * * 1,2,3,4,5 my_bin some_args
Run Code Online (Sandbox Code Playgroud)
但我把它改成
5 9 * * 1,2,3,4,5 source ~/.bashrc; /usr/local/bin/my_bin some_args
Run Code Online (Sandbox Code Playgroud)
你知道为什么吗?
我采购的原因bashrc
是添加一些环境库,特别是LD_LIBRARY_PATH
因为我的二进制文件无法从/usr/local/lib
.
Gor*_*son 19
cron 作业在非常小的环境中运行,并且由于它们是在crond
没有 shell的情况下直接执行的(除非您强制创建一个),因此常规的 shell 设置永远不会发生。有两种标准的方法可以解决这个问题。首先,您可以在 crontab 中定义环境变量(请注意,这些将适用于所有作业——至少,在定义之后列出的那些):
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
LD_LIBRARY_PATH=/usr/local/lib
5 9 * * 1,2,3,4,5 my_bin some_args
Run Code Online (Sandbox Code Playgroud)
其次,您可以编辑脚本以减少对其环境的依赖(例如,让它定义自己需要什么),然后在 crontab 条目中使用完整路径:
5 9 * * 1,2,3,4,5 /usr/local/bin/my_bin some_args
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8034 次 |
最近记录: |