3

简单的问题:有没有办法在不运行终端的情况下在后台运行脚本?

更多细节和背景:我有一个应用程序,它读取一个应用程序 .log 文件并从中提取信息,然后从日志中的信息中提供信息和统计信息。对应用程序的更新改变了 .log 文件的写入方式,删除了信息,并以我无法预测的方式复制了日志。

旨在与日志交互的应用程序未编码以检查此类更改。因此,当它在日志更改后尝试收集信息时,它会停止工作。

已经设计了一个“hack”来运行 tail -f,然后将应用程序十六进制以指向新文件。(“hack”有效)我想在后台运行尾巴,这样用户就不会打断它......打破它......

- 抱歉(可能)比需要的描述长。但是我想一个更详细的问题会给我一个准确的答案。

提前致谢!

~¥约瑟夫

4

1 回答 1

6

答案取决于您是否需要能够在退出 shell 后重新连接到该进程。如果该过程是非交互式的并且可以简单地不理会,那么“nohup program &”应该可以解决问题。但这不会让您在关闭 shell 后继续与程序交互。

如果它是一个交互式程序,那么您最好的选择是使用屏幕或其他终端多路复用器之一。您启动“屏幕”,它为您提供了一个新的外壳,在这里您可以启动您想要的任何程序,通常的方式是“nano myfile.txt”。

当您想关闭 shell 但让程序继续运行时,您可以按 Ca d ('Detach') 以从屏幕上分离。它继续运行,但在后台运行,即使您注销也会继续运行。

当您稍后想要重新连接到 screen 时,您打开一个新的 shell 并输入“screen -r”(重新连接),这会让您回到您所在的位置。

Screen 还允许您在单个终端窗口中运行多个不同的 shell,总体上是一个简洁的工具。看看这个。

于 2012-05-09T11:33:04.867 回答