几乎如此重复问题一个,然而,在该职位回答不解决环境问题at
的命令。
问题描述:我想使用at
命令作为计划作业运行我的 shell 脚本。我所有的 shell 脚本都在 Ubuntu 10.04 和 20.04(3 个不同的系统)的普通终端中顺利运行。我按预期获得了所有结果。但是,一旦我使用 运行我的 shell 脚本at
,它就根本无法运行。这里有 3 个案例来证明at
简单操作有效,复杂操作失败。
情况1
at
使用简单的脚本。以下是我的外壳的所有内容script1.sh
:
echo $(date) > ~/Desktop/time.txt
运行at now + 1 minutes -f ~/script1.sh
,它可以节省时间到 time.txt 文件中。太好了,这意味着我的at
功能很好。
案例2
at
一个简单的脚本失败。以下是我的外壳的所有内容script2.sh
:
echo $(date) > ~/Desktop/time.txt
pycharm.sh
运行at now + 1 minutes -f ~/script2.sh
,它将时间节省到 time.txt 文件中,但 Pycharm 从未打开过。但是,如果我在sh script2.sh
不使用 的情况下运行at
,则一切正常,我在 time.txt 文件中获得时间,并且 Pycharm 正常打开。我认为这只是意味着at
没有获得现有终端环境中的所有变量。有一次,我添加export DISPLAY=:1
到script2.sh
作为
echo $(date) > ~/Desktop/time.txt
export DISPLAY=:1
pycharm.sh
然后at now + 1 minutes -f ~/script2.sh
将正常运行。
案例3
我需要at
作为计划作业运行以下 shell 脚本script3.sh
:
gjs -numberofsplits 50 -clusterplatform condor -condorscript condor.script main.mac > ./output0.txt 2>&1
condor_submit main.submit > ./output1.txt 2>&1
请注意,所有这些脚本都在终端中正常运行sh script.sh
,但是,使用 运行脚本at now + 1 minutes -f ~/script3.sh
,它会引发保存在output0.txt
文件中的错误,它说
gjs: error while loading shared libraries: libG4global.so: cannot open shared object file: No such file or directory
我也试着使用GJS的绝对路径和condor_submitscript3.sh
像
/home/albert/Products9/Gate/Gate-9.0-install/bin/gjs -numberofsplits 50 -clusterplatform condor -condorscript condor.script main.mac > ./output0.txt 2>&1
/usr/bin/condor_submit > ./output1.txt 2>&1
但它会引发相同的错误。
已经尝试过的解决方案
到目前为止,我认为问题描述得很好。我认为这个问题的原因是at
命令无法像普通终端那样访问所有环境变量。
这是我在这里发布的尝试的解决方案,希望at
通过添加来公开所有环境变量
source $HOME/.profile
或者
source $HOME/.bashrc
到shell脚本的开头。然而,它根本没有解决或缓解问题。
寻求帮助
请问各位这个领域的专家,能不能帮我解决一下这个问题。由于此问题也可能会困扰许多其他用户。非常感谢。
原因之一是因为at
默认情况下未将命令调度程序设置为在 GUI 显示上运行。如果您添加export DISPLAY=:0
到myscrpit.sh
line 上方,它应该可以工作pycharm.py
。您可以DISPLAY
通过echo $DISPLAY
在终端窗口中键入来检查变量。
另一个原因是环境变量。$PATH
cron 作业中的变量可能不包含可执行文件所在的所有路径。也可能有库文件。
您可以通过键入which <excutable>
(例如which gjs
)来检查可执行文件的路径。对于库目录,变量是$LD_LIBRARY_PATH
并查看它使用的库的位置,它是ldd $(which gjs)
.
然后将export PATH=$PATH:<exepath>
和添加export LD_LIBRARY_PATH=<libpath>
到您的at
脚本中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句