Наблюдение вывода уже запускающей программы?

Когда я запускаю программу в терминале, я вижу вывод. Я могу Ctrl+C мой выход из него для использования терминала снова, но являюсь там способом получить вывод его в терминал снова?

Я знаю, что могу направить вывод в файл и считать это, но было бы хорошо иметь его назад на экране снова для тестирования.

3
задан 16 September 2015 в 17:49

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
1
ответ дан 1 December 2019 в 16:27

Запустите свое приложение или команду через

command &

и не используйте Ctrl-C. Вы будете видеть вывод, пока Вы не закроете терминал.

Возвратите команду в передний план с

fg

Пример

Создайте простой сценарий, например.

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

Запустите сценарий, программа произведет слово foo. Через какое-то время я вошел echo bar, сопровождаемый fg и Ctrl-C для завершения сценария.

$ ./foo &
[1] 29544
$ foo
foo
foo
echo bar
bar
$ foo
foo
fg
[1]  + 29544 running    ./foo
foo
^C
2
ответ дан 1 December 2019 в 16:27

Другие вопросы по тегам:

Похожие вопросы: