Привет, всем, ага. С утра разминочка, а ближе к обеду про более серьезные вещи поговорим.
Наверняка ты знаешь, что при нажатии сочетания клавиш CTRL+D завершится текущая интерактивная оболочка. То есть если ты сидишь на сервере по ssh и нажал CTRL+D, сессия прервется. ОК.
При нажатии такого сочетания, оболочка при чтении устройства терминала получит признак конца файла и завершится если строка пуста. Нюанс, если в командной строке набрать какие-то символы и нажать CTRL+D, то ничего не произойдет.
Как еще можно завершить сессию с командной оболочкой? Ну например установить значение переменной TMOUT больше нуля.
Цифра будет означать секунды.
# TMOUT=5
Текущая сессия закроется через 5 секунд.
Следующий вариант это активировать параметр оболочки «t» с помощью команды
set.
set -t
Выбросило! НО! Оболочка прекратит свою работу, только после того, как завершится работа запущенных команд в текущей строке. Например:
set -t ; read
Выход произойдет, только после нажатия клавиши Enter. А в примере ниже:
set -t ; read -t3
Выход будет произведен после нажатия Enter ИЛИ
по прошествии 3х секунд.
Так. Еще есть вариант с параметром «e». Указав его оболочка завершает работу после возникновения ошибки. Например:
set -e ; false
Команда false ничего не делает, но завершается всегда с ошибкой. Как правило, используется при написании Bash-скриптов.
Более человеческий пример:
set -e ; Паравозблять
И снова выкинуло. Потому что вернулась ошибка -
Паравозблять: command not found.
Что еще упустили… Упустили команду exec. Подвешиваем на стандартный ввод устройство
/dev/null.
exec </dev/null
При чтении этого устройства оболочка получит признак конца файла и успешно завершится.
Ааа, еще же exit есть. Не буду его обижать, пусть тоже в этом посте присутствует.
Ну и как обычно, на закуску.
stty eof $'\t'
stty (Set Teletype) - Эта команда управляет настройками терминала и позволяет пользователю вносить изменения в терминал и отображать его характеристики.
Всё, стоп! После обеда покажу, как с помощью strace можно инжектить в системные вызовы процессов для отладки некоторых ёбнутых случаев. Увидимся!








Комментарии