Как Вы отправляете приложения командной строки непосредственно в фон?

Наиболее надежный источник является самим исходным кодом, и он действительно предполагает, что MD5, сохраненный в STREAMINFO, проверяется по умолчанию.

22
29.09.2016, 03:53
3 ответа

Отправка заявления от переднего плана до фона требует сотрудничества и от терминала и от оболочки. Терминал не может сделать этого один, потому что оболочка должна установить группу приоритетного процесса. Оболочка не может сделать этого один, потому что терминал должен обработать нажатие клавиши (оболочка не находится на переднем плане, таким образом, это не может получить нажатие клавиши).

Близкое приближение должно послать заявление в фон действительно быстро. В конце концов, приложение совместно использует процессорное время с другими, и пауза нескольких сотых частей секунды не должна иметь значения. (Это делает для приложений реального времени, поэтому удостоверьтесь, что запустили их в фоновом режиме.) Я использую привязку оболочки для Ctrl+Z, который отправляет последнее-foregrounded задание в фон. Тот путь, нажатие Ctrl+Z Ctrl+Z отправляет задание в фон с минимальным временем приостановки.

Вот моя привязка zsh, который также “фон” полувведенная команда, когда командная строка не пуста.

fancy-ctrl-z () {
  emulate -LR zsh
  if [[ $#BUFFER -eq 0 ]]; then
    bg
    zle redisplay
  else
    zle push-input
  fi
}
zle -N fancy-ctrl-z
bindkey '^Z'          fancy-ctrl-z

На английском языке, для non-zsh-users в аудитории:

  • Определите функцию оболочки, которая делает следующее:

  • Свяжите эту функцию с Ctrl+Z.

Если Вы просто хотите поведение фоновой обработки независимо от того, пуста ли командная строка:

function bg_ { builtin bg "$@"; }
zle -N bg_
bindkey '^Z' bg_

Я не знаю, можно ли сделать то же в ударе. Это должно быть столь же легко как bind -x '"\C-z": bg', за исключением того, что удар оставляет tty стоповый символ на месте, таким образом, это никогда не получает Ctrl+Z, как введено.

17
27.01.2020, 19:42
  • 1
    Интересный, позвольте мне видеть, может ли это быть сделано в Bash. Если так, это было бы решением. Я не знаком с zsh. Следите за объяснением, что делает Ваш сценарий? –  trusktr 09.04.2013, 03:54
  • 2
    @trusktr Видит мое редактирование. –  Gilles 'SO- stop being evil' 09.04.2013, 14:06
  • 3
    Спасибо! я собираюсь переключиться на zsh. Я слышал так много хорошего материала об этом. –  trusktr 13.04.2013, 08:33

Вы можете фон задача путем добавления a & после него.

Например, tail -f /var/log/messages & будет фон задача сразу.

Поскольку всегда Вы видите что задачи Вы фон с jobs команда.

Это, конечно, предполагает, что Вы еще не выполнили команду.

16
27.01.2020, 19:42
  • 1
    Это полезно, но не, что я имею в виду. Если я имею приложение на переднем плане, то хочу отправить его в фон позже, я могу нажать ctrl+z затем выполнитесь bg в командной строке к выполнению приложения в фоновом режиме. Но между нажатием ctrl+z и выполнение bg, существует период времени, что приложение полностью приостанавливается. Я не хочу это. Как я отправляю его в фон сразу? –  trusktr 09.04.2013, 03:49
  • 2
    @trusktr как сказанный Gilles. Необходимо сообщить и оболочке и терминалу. Извините, я не знаю о способе сделать это. –  prateek61 12.04.2013, 04:14
  • 3
    Это не отвечает на вопрос. –  Luciano Andress Martini 29.09.2016, 15:00

Фоновая обработка команда сделана путем добавления амперсанда к команде.

sleep 300 &

Если это уже работает, Ваша единственная опция состоит в том, чтобы остановить его затем фон он.

4
27.01.2020, 19:42
  • 1
    Между нажатием ctrl+z и выполнением bg, существует период времени, что приложение полностью приостанавливается, который является тем, что я не хочу. Таким образом, нет никакого способа отправить его в фон сразу? –  trusktr 09.04.2013, 03:50
  • 2
    Нет. Как Giles сказал, это берет и оболочку и терминал. Необходимо сообщить каждому. –  bahamat 09.04.2013, 22:05

Теги

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