Временное отображение stdout во время выполнения команды

Сохраняйте PID при запуске процессов:

pids=()

./w1 & pids+=( "$!" )
./w1 & pids+=( "$!" )
./w1 & pids+=( "$!" )
./w1 & pids+=( "$!" )

(предполагается оболочка сbash-совместимым синтаксисом массива)

Теперь у вас есть PID в массиве pidsи вы можете получить к ним доступ как "${pids[0]}", "${pids[1]}"и т. д.

Если вы используете обычный/bin/sh:

set --

./w1 & set -- "$@" "$!"
./w1 & set -- "$@" "$!"
./w1 & set -- "$@" "$!"
./w1 & set -- "$@" "$!"

Теперь у вас есть PID в списке "$@"и вы можете получить к ним доступ как "$1", "$2"и т. д.

Специальное значение "$!"будет PID последней запущенной фоновой команды.

1
04.12.2021, 14:41
1 ответ

Графическая среда рабочего стола

Простой способ — использовать lessв окне эмулятора терминала, просто перенаправив вывод программы,

program-name | less

например, если вы хотите сохранить цвета,

ls -l --color ~/* | less -r

и когда вы выходите из less (с помощью 'q' ), предыдущий диалог присутствует.

Экран текстового режима

Многие новые экраны текстового режима не сохраняют предыдущий диалог, но вы можете установить и использовать screen.

screen
# run some programs here

screen
# run the program from which you want temporary output saved here
exit

и вы вернетесь к «первому экрану» и его диалогу.

screen— это продвинутая программа, и я знаю только некоторые ее рудиментарные возможности, но я проверил, что она работает именно так.

0
04.12.2021, 22:13

Теги

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