看到已经运行的程序的输出吗?

看到已经运行的程序的输出吗?

当我在终端中启动程序时,我会看到输出。我可以通过Ctrl+C退出并再次使用终端,但是有没有办法将其输出再次放入终端?

我知道我可以将输出直接放入文件并读取它,但最好将其再次显示在屏幕上进行测试。

答案1

通过以下方式启动应用程序或命令

command &

并且不要使用Ctrl- C。您将看到输出,直到关闭终端。

使用以下命令将命令重新置于前台

fg

例子

创建一个简单的脚本,例如

#!/bin/bash
while true; do
    echo foo
    sleep 5
done

启动脚本,程序会输出单词foo。过了一会儿,我输入echo bar,然后按fgCtrl-C来终止脚本。

$./foo& 复制代码
[1] 29544
$ foo
回音栏
酒吧
$ foo
韋克
[1] + 29544 正在运行 ./foo
^C

答案2

点击Ctrl+C会向终端前台运行的进程发送 SIGINT 信号,终止该进程,除非该进程故意忽略 SIGINT 信号;

因此,通过点击Ctrl+,C您可以告诉在终端前台运行的进程终止。

要运行某个进程以防止其占用终端,您可以&在命令末尾附加以下内容以将其启动到后台:

user@user-X550CL:~/tmp$ bash script.sh &
[1] 24961
user@user-X550CL:~/tmp$ 

如果你已经在前台启动了一个进程,你仍然可以通过按Ctrl+来停止它Z

user@user-X550CL:~/tmp$ bash script.sh
^Z
[1]+  Stopped                 bash script.sh
user@user-X550CL:~/tmp$ 

并将其发送到后台并使用内置bg功能恢复其执行:

user@user-X550CL:~/tmp$ bg
[1]+ bash script.sh &
user@user-X550CL:~/tmp$ 

您可以将多个进程发送到后台:

user@user-X550CL:~/tmp$ bash script.sh &
[1] 24961
user@user-X550CL:~/tmp$ bash script.sh &
[2] 24984
user@user-X550CL:~/tmp$ bash script.sh &
[3] 24989
user@user-X550CL:~/tmp$ 

您可以使用内置功能将所有进程列出到后台jobs

user@user-X550CL:~/tmp$ jobs
[1]   Running                 bash script.sh &
[2]-  Running                 bash script.sh &
[3]+  Running                 bash script.sh &
user@user-X550CL:~/tmp$ 

要将一个进程从后台移动到前台,可以使用fg内置函数传递作业号作为参数:

user@user-X550CL:~/tmp$ fg %1
bash script.sh

运行时fg如果不指定作业号作为参数将会把最后一个后台进程移到前台:

user@user-X550CL:~/tmp$ fg
bash script.sh

相关内容