Отправить запущенную в терминале программу в фоновый режим

Из руководства Nixos:

nixos-version

3
10.09.2019, 14:05
3 ответа

Нет не -хакерских способов перенаправить вывод другого процесса в другое место [1], но если a)вы не планируете когда-либо возвращать свой процесс на передний план и b)в порядке с другим процессом (легким -весомымcat)также работающим в течение всего времени работы вашей программы, это может привести к:

{ your_program... & } | (trap : INT; cat & sleep 5; kill $!; cat >/dev/null &)

Вы можете захотеть перенаправить как stderr, так и stdout вашей программы в конвейер с помощью your_program 2>&1.

[1] Возможный хакерский способ — подключиться к нему с помощью отладчика и перенаправить его вывод изнутри.

1
27.01.2020, 21:46

Вы можете создать файл конфигурации.desktop и связать его с файлом bash. Таким образом, вы можете запустить файл оболочки, и он не откроется в терминале. Просто не забудьте изменить Terminal=Trueна Terminal=False, чтобы не открывать в терминале. Введите ниже в файл с именем «anyfile.dekstop» и сделайте его исполняемым (щелкните правой кнопкой мыши -свойства -разрешите выполнение файла как программы)

[Вход с рабочего стола]

Версия=1.0

Exec="путь к вашему исполняемому файлу или файлу.sh"

Имя=Образец

GenericName=Образец

Comment=Любой комментарий

Кодировка=UTF -8

Терминал=ложь

Тип=Приложение

Категории=Приложение

Icon=любая ссылка на значок

-2
27.01.2020, 21:46

Теперь я вижу большое недоразумение :Я думал, что задание должно начинаться на переднем плане и волшебным образом переходить на задний план через 5 секунд, и вывод не имеет значения . Однако с этим ответом вывод продолжается... Q кажется равным «фону» с «отсутствием вывода». В любом случае это интересно:

С помощью этого вспомогательного скрипта "подтяжка"...

#!/bin/bash
sleep 1
pid=$(pidof -x counter.sh)
sleep 3
kill -s STOP $pid
sleep 1
kill -s CONT $pid

...Я могу приостановить выполнение сценария 'counter.sh' и перезапустить его в фоновом режиме. Звонок:

./suspender &./counter.sh

«Приостановка» запускается в фоновом режиме и ждет секунды, пока не запустится счетчик. Он получает pid и ждет 3 секунды (задержки в соответствии с запросом ). Сигнал STOP соответствует ctrl-Z, CONT — bg. Сон между ними необходим.

Счетчик — это программа, которую нужно смотреть несколько секунд и часто нажимать клавишу -c ней. Через пять секунд он должен освободить подсказку. Выход не имеет значения. Это просто печатает 10 чисел, становясь медленнее.

#!/bin/bash 
for i in {1..10}
do 
  sleep $i; echo $i
done

С сообщениями управления заданием и продолжающимся выводом это не очень приятно.

Перед приостановкой -возобновлением -в действии -bg вы можете остановить скрипт, нажав ctrl -c, а затем использовать подсказку. Это почти имеет смысл...

0
27.01.2020, 21:46

Теги

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