我想在shell中运行一些任务。
tail -f debug|tee -a test.log
我的问题是:如何让命令tail -f debug|tee -a test.log
在后台运行,以便我可以在shell脚本中运行其他任务?
答案 0 :(得分:5)
你根本不需要tee,只需使用shell的内置追加算子:
tail -f debug >> test.log &
尾随&在shell中正常工作。您只需要tee将输出发送到文件以及标准输出,如果您在后台使用它可能不是您想要的。
答案 1 :(得分:4)
通常情况下,如果你想要背景,你只需在命令后使用&符号。
tail -f debug|tee -a test.log &
然后,您可以通过键入fg
将其恢复到前台。这是回答你的问题还是我错过了你的问题?
答案 2 :(得分:1)
这样做的简单方法是:
screen -R -D
tail -f debug|tee -a test.log
Ctrl-A c
ps ax |grep tail
Ctrl-A [Backspace]
...
Ctrl-A [Spacebar]
screen
允许您在一个终端连接上运行多个终端会话。您可以使用Ctrl-A [Backspace] | [Space]来回切换。要创建另一个单独的shell Ctrl-A c
屏幕的一个主要好处是,如果终端会话断开连接,它会使所有内容保持运行状态。只需关闭终端窗口或断开ssh,转到另一台计算机,登录并运行screen -R -D
即可重新连接到仍在运行的所有内容。
如果您偶尔需要这个,只需运行tail,键入Ctrl-Z,运行命令,然后fg %1
将尾部进程重新置于前台,或bg %1
使其运行永久的背景。如果使用Ctrl-Z,则jobs
命令会显示所有已分离的作业。