如何使用现有的环境变量和库运行 at 命令?

Albert G 位置

几乎如此重复问题一个,然而,在该职位回答不解决环境问题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=:1script2.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=:0myscrpit.shline 上方,它应该可以工作pycharm.py您可以DISPLAY通过echo $DISPLAY在终端窗口中键入来检查变量

另一个原因是环境变量。$PATHcron 作业中变量可能不包含可执行文件所在的所有路径。也可能有库文件。

您可以通过键入which <excutable>(例如which gjs来检查可执行文件的路径对于库目录,变量是$LD_LIBRARY_PATH并查看它使用的库的位置,它是ldd $(which gjs).

然后将export PATH=$PATH:<exepath>添加export LD_LIBRARY_PATH=<libpath>到您的at脚本中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用现有环境变量运行cron命令?

来自分类Dev

如何使用kubectl exec在容器中运行命令,该命令使用容器中的环境变量?

来自分类Dev

使用环境变量运行命令行程序

来自分类Dev

使用 AWS SSM 运行命令的环境变量

来自分类Dev

何时在环境变量和命令之间使用分号

来自分类Dev

如何在监督命令中使用环境变量

来自分类Dev

Supervisord在命令中使用环境变量

来自分类Dev

在后台运行设置环境变量或定义函数的命令

来自分类Dev

如何从环境变量运行命令并让内部的跟号起作用?

来自分类Dev

如何正确设置PHP环境变量以在Git Bash中运行命令

来自分类Dev

如何从环境变量运行命令并让内部的跟号起作用?

来自分类Dev

如何运行 sudo 命令并加载当前登录用户的环境变量?

来自分类Dev

使用环境变量时无法从命令行运行php

来自分类Dev

在 Makefile 中使用 Docker 容器中定义的环境变量来运行命令

来自分类Dev

Xcode环境变量和命令行参数

来自分类Dev

Maven安装命令和环境变量文件

来自分类Dev

Xcode环境变量和命令行参数

来自分类Dev

没有.env文件的命令行生产中的Laravel和环境变量

来自分类Dev

具有环境变量的Bash命令替换

来自分类Dev

如何在PuTTY命令行上设置私钥和环境变量

来自分类Dev

如何使我的环境变量可用于sudo命令?

来自分类Dev

如何为Shell命令设置环境变量

来自分类Dev

如何通过powershell命令设置环境变量?

来自分类Dev

如何从环境变量中正确转义命令参数

来自分类Dev

如何从shell命令显示jenkins默认环境变量?

来自分类Dev

如何创建作为命令输出的环境变量

来自分类Dev

在同一命令中设置和使用环境变量

来自分类Dev

使用环境变量将参数传递给命令

来自分类Dev

Docker Compose-使用容器环境变量的命令

Related 相关文章

  1. 1

    如何使用现有环境变量运行cron命令?

  2. 2

    如何使用kubectl exec在容器中运行命令,该命令使用容器中的环境变量?

  3. 3

    使用环境变量运行命令行程序

  4. 4

    使用 AWS SSM 运行命令的环境变量

  5. 5

    何时在环境变量和命令之间使用分号

  6. 6

    如何在监督命令中使用环境变量

  7. 7

    Supervisord在命令中使用环境变量

  8. 8

    在后台运行设置环境变量或定义函数的命令

  9. 9

    如何从环境变量运行命令并让内部的跟号起作用?

  10. 10

    如何正确设置PHP环境变量以在Git Bash中运行命令

  11. 11

    如何从环境变量运行命令并让内部的跟号起作用?

  12. 12

    如何运行 sudo 命令并加载当前登录用户的环境变量?

  13. 13

    使用环境变量时无法从命令行运行php

  14. 14

    在 Makefile 中使用 Docker 容器中定义的环境变量来运行命令

  15. 15

    Xcode环境变量和命令行参数

  16. 16

    Maven安装命令和环境变量文件

  17. 17

    Xcode环境变量和命令行参数

  18. 18

    没有.env文件的命令行生产中的Laravel和环境变量

  19. 19

    具有环境变量的Bash命令替换

  20. 20

    如何在PuTTY命令行上设置私钥和环境变量

  21. 21

    如何使我的环境变量可用于sudo命令?

  22. 22

    如何为Shell命令设置环境变量

  23. 23

    如何通过powershell命令设置环境变量?

  24. 24

    如何从环境变量中正确转义命令参数

  25. 25

    如何从shell命令显示jenkins默认环境变量?

  26. 26

    如何创建作为命令输出的环境变量

  27. 27

    在同一命令中设置和使用环境变量

  28. 28

    使用环境变量将参数传递给命令

  29. 29

    Docker Compose-使用容器环境变量的命令

热门标签

归档