使用 shell 脚本中的 bash disown 作为 screen 的替代品有什么注意事项吗?

使用 shell 脚本中的 bash disown 作为 screen 的替代品有什么注意事项吗?

我有一个启动并输出到日志文件的进程。启动它的脚本在 GNU 中启动它screen,然后在日志后面加上tail.

该过程将立即开始写入日志文件,并且能够以这种方式观察它的启动,以发现任何配置错误,然后返回到提示符,这很有用ctrl-c。我知道这只会停止并tail不会终止正在记录的进程;这是所希望的。

screen我想要做的是从 shell 脚本启动第二个看门狗进程,该进程仅在运行的进程完成初始化后才执行操作;这仅在所有启动日志输出之后发生。

如果我循环启动脚本并等待进程screen初始化以便它可以执行其操作,那么我就会失去实时tail输出。如果我在循环中等待时尝试监视日志并输出其内容,则用户无法ctrl-c在不中断等待初始化完成的循环的情况下提前退出脚本。

为了支持看门狗和tail -f日志文件,我可以启动一个作业,然后disown保证注销不会杀死它。

对于一个简单的问题来说,这是很多信息,但我想包含与我的用例相关的所有详细信息,以便在有更好的替代方案时提供澄清。

另外值得注意的是,我可以开始另一个screen,但我不需要与它交互,并且disown似乎是一个更简单的选择。

我还知道我需要根据需要重定向输出以防止输出到父 shell。

示例代码,在从脚本启动然后注销并重新登录时经过测试并正确执行:

#!/bin/bash

( sleep 10s; echo 1 > b ) &
disown

相关内容