отключение управления заданиями в ударе (CTRL-Z)

Это возможно, сценарий ниже запустится some_command и передача каждой строки в файле, и запускает их в фоне, не блокируясь:

cat input | while read param; do
    some_command $param &
done
11
08.07.2014, 20:17
4 ответа

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

set + m

Если вам действительно понадобятся функции ctrl-z позже, вы можете просто набрать 'set -m', чтобы включить мониторинг для этого сеанса.

Из man bash . Обратите внимание, что это для '-m', где «+ m» переключает этот параметр на отключение.

set [+abefhkmnptuvxBCEHPT] [+o option] [arg ...] 
....
-m
    Monitor mode. Job control is enabled. This option is on by default for interactive
    shells on systems that support it (see JOB CONTROL above). Background processes 
    run in a separate process group and a line containing their exit status is printed
    upon their completion. 

В качестве последней попытки вы можете вручную скомпилировать версию bash без флага "--enable-job-control". Вот краткое руководство по установке от GNU. Если вы решите пойти по этому пути, НЕ заменяйте / bin / bash на тот случай, если фоновые процессы запускаются через bash, ожидая управления заданиями. Вместо этого создайте /bin/bash.alt или другой файл. Вашу оболочку по умолчанию можно изменить на эту альтернативную, запустив usermod или отредактировав / etc / passwd от имени пользователя root.

8
27.01.2020, 19:58

Добавьте trap "" SIGTSTP в свой скрипт. Он перехватит сигнал и проигнорирует его.

#!/bin/bash
trap "" SIGTSTP
watch date
2
27.01.2020, 19:58

Или я что-то пропустил, и эта функция может быть полезной?

Чтобы ответить на эту часть вопроса: Комбинация C-z / fg необходима для моего рабочего процесса vim. Например, я предпочитаю C-z > git коммит > fg использованию git-обёрток изнутри vim.

C-z помогает рассматривать оболочку как IDE, что соответствует принципу "do one thing". (Это вместо "редактор как IDE").

3
27.01.2020, 19:58

stty susp undef отключит инициализированный клавиатурой сигнал приостановки для большинства программ, однако команды типа vim и emacs, которые имеют специфическую привязку для Ctrl-Z, придется перенастраивать по отдельности.

Вы можете добавить эту команду stty к своему ~/.bash_profile или ~/.profile, выйти из системы, снова войти в систему.

4
27.01.2020, 19:58

Теги

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