Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
shell:如何制作在后台运行的文件的尾部_Shell_Tail - Fatal编程技术网

shell:如何制作在后台运行的文件的尾部

shell:如何制作在后台运行的文件的尾部,shell,tail,Shell,Tail,我想在shell中运行一些任务 将文件拖尾到新文件中:例如:tail-f debug | tee-a test.log 同时,运行其他任务 我的问题是:如何使命令tail-f debug | tee-a test.log在后台运行,这样我就可以在shell脚本中运行其他任务了?您根本不需要tee,只需使用shell内置的append操作符即可: tail -f debug >> test.log & 尾部&在外壳中正常工作。您只需将输出发送到文件以及标准输出,如果您将其置于

我想在shell中运行一些任务

  • 将文件拖尾到新文件中:例如:
    tail-f debug | tee-a test.log
  • 同时,运行其他任务
    我的问题是:如何使命令
    tail-f debug | tee-a test.log
    在后台运行,这样我就可以在shell脚本中运行其他任务了?

    您根本不需要tee,只需使用shell内置的append操作符即可:

    tail -f debug >> test.log &
    

    尾部&在外壳中正常工作。您只需将输出发送到文件以及标准输出,如果您将其置于后台,则可能不是您想要的。

    通常,如果您想要将某些内容置于后台,则只需在命令后使用一个符号

    tail -f debug|tee -a test.log &
    

    然后,您可以稍后通过键入
    fg
    将其带回前台。这是否回答了您的问题,或者我是否错过了您提出的问题?

    简单的方法是:

    screen -R -D
    tail -f debug|tee -a test.log
    Ctrl-A c
    ps ax |grep tail
    Ctrl-A [Backspace]
    ...
    Ctrl-A [Spacebar]
    
    屏幕
    允许您在一个终端连接上运行多个终端会话。您可以使用Ctrl-A[Backspace]|[Space]来回切换。要创建另一个单独的shell,请按Ctrl-A c

    screen的一个主要好处是,如果终端会话断开连接,它会保持所有东西都在运行。只需关闭终端窗口或断开ssh,转到另一台计算机,登录并运行
    screen-R-D
    即可重新连接到仍在运行的所有设备


    如果您只是偶尔需要,只需运行tail,键入Ctrl-Z,运行命令,然后
    fg%1
    将tail进程带回前台,或者
    bg%1
    使其在后台永久运行。如果确实使用Ctrl-Z,则
    作业
    命令将显示所有分离的作业。

    这与使用
    tee的代码
    的区别在于,这不会将调试输出发送到终端-它只将其发送到文件。@Jonathan Leffler,感谢您的响应,我很清楚。但是如何停止后台运行的尾部?要终止后台
    tail
    进程,请使用
    kill%tail
    通常,使用第二个窗口/终端最简单。以我的经验来看,在日志输出也进入屏幕时键入命令是一种令人沮丧的经历。@Jonathan Leffler,谢谢你的建议。是的,我认为在同一屏幕上记录输出的同时键入命令确实是一种令人沮丧的经历。