【问题标题】:Shell script not executing all commands in backgroundShell脚本未在后台执行所有命令
【发布时间】:2014-11-07 07:36:46
【问题描述】:

我有一个从文件夹读取文件的 shell 脚本,使用该文件执行 python 脚本,然后将文件移动到另一个文件夹。 在服务器上,如果在前台运行,脚本可以正常工作,但如果它触发在后台运行,使用 & 注销它不会处理 python,而是移动所有文件。我什至尝试添加 disown ,它在注销时运行了大约 100 个文件,它只是移动了文件并且没有触发 python。这看起来很奇怪,shell 的一部分正在执行。

【问题讨论】:

  • 您尝试过 nohup 命令吗? nohup your-script > output.log 2> err.log &
  • 它是如何触发你的脚本在后台运行的?如果使用 crontab,请检查在 PATH 环境变量的目录中是否找到了 python 命令。 shell 会话(前台)中 PATH 变量的值与 crontab 中的不同。
  • 如果我使用 nohup 未检测到文件,表示在 err.log 文件中找不到文件
  • 我在后台使用 & 最后运行脚本

标签: python linux bash shell ubuntu


【解决方案1】:

你可以试试

nohup your_script_file.sh &

或者你可以使用 disown

disown your_script_file.sh &

也比这些好

screen

【讨论】:

  • nohup 找不到文件,disown 工作了 100 个文件然后停止,屏幕一直工作到现在希望它工作正常。谢谢...
  • 它与屏幕一起工作,试图将 cron 作业设置为与屏幕一起运行。感谢@Skynet 的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-09
  • 2022-06-18
  • 2013-09-22
  • 2012-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多