我有一个启动并输出到日志文件的进程。启动它的脚本在 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