简单问题:有没有办法在后台运行脚本而不运行终端?
更多细节和背景:我有一个应用程序,它可以读取应用程序.log文件并从中提取信息,然后根据日志中的信息提供信息和统计信息。 对应用程序的更新改变了.log文件的编写方式,并以我无法预测的方式删除信息并复制日志。
设计用于与日志交互的应用程序未编码以检查此类更改。因此,当它在日志更改后尝试收集信息时,它将停止工作。
设计了一个“hack”来运行tail -f,然后将应用程序篡改为指向新文件。 (“黑客”的作品) 我想在后台运行尾部,这样用户就不会打断它......打破它......
- (可能)比所需描述更长的时间。我认为一个更详细的问题会得到一个确切的答案。
提前致谢!
〜¥oseph
答案 0 :(得分:5)
答案取决于您是否需要在退出shell后重新连接到该进程。如果这个过程是非交互式的,可以简单地单独使用,那么“nohup program&”应该做的伎俩。但是,在关闭shell后,这不会让你继续与程序进行交互。
如果是交互式程序,那么最好的办法是使用屏幕或其他终端多路复用器。你启动“屏幕”,它会给你一个新的shell,在这个你开始你想要的任何程序,通常的方式,说“nano myfile.txt”。
如果要关闭shell,但让程序继续运行,请按C-a d('Detach')从屏幕上分离。它一直在运行,但在后台运行,即使你退出也会继续运行。
当您稍后想要重新连接到屏幕时,您打开一个新的shell并输入“screen -r”(重新连接),这会让您离开你所在的位置。
屏幕还允许您在单个终端窗口中运行多个不同的shell,并且整体上是一个整洁的工具。看看吧。