gpt4 book ai didi

bash - 内部带有 nohup 的脚本无法正确退出

转载 作者:行者123 更新时间:2023-12-04 16:16:47 25 4
gpt4 key购买 nike

我们有脚本可以使用 nohup 在后台进行一些处理并触发作业。当我们从 Oracle OEM(或者它可以是任何调度程序作业)调度此脚本时,我看到以下错误并将状态显示为失败但脚本实际上已完成且没有问题。 nohup启动backup ground job时如何正确退出脚本?

Remote operation finished but process did not close its stdout/stderr

文件:test.sh

#!/bin/bash
# do some processing
...
nohup ./start.sh 2000 &

# end of the script

最佳答案

通过以这种方式执行 start.sh,您允许它声明对 test.sh 的输出文件描述符(stdout)的部分所有权>/标准错误)。因此,当大多数 bash 脚本退出时,它们的文件描述符为它们关闭(由操作系统),test.sh 的文件描述符无法关闭,因为 start.sh 仍然拥有它们的所有权。

解决方案是不要让 start.sh 声明与 test.sh 正在使用的相同的输出文件描述符。如果您不关心它的输出,您可以像这样启动它:

nohup ./start.sh 2000 1>/dev/null 2>/dev/null &

它告诉新进程将其 stdout 和 stderr 发送到 /dev/null。如果您确实关心它的输出,那么只需将其捕获到更有意义的地方:

nohup ./start.sh 2000 1>/path/to/stdout.txt 2>/path/to/stderr.txt &

关于bash - 内部带有 nohup 的脚本无法正确退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29709790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com