Bash – сделать бесконечную работу, ожидая нажатия определенной клавиши – возможно?

У меня есть следующий бесконечный цикл в bash, выполняющий do_some_simple_job каждые 10 минут:

 while true do do_some_simple_job sleep 600 done 

Я бы хотел, чтобы сценарий принимал некоторые нажатия клавиш во время выполнения этой задачи, например, для отмены задания, но не для завершения скрипта, возможно ли это?

  • Расстояние команды от shebang?
  • файл хвоста с удаленного сервера и nslookup на локальном
  • перебирать два списка переменных и назначать соответствующий порядок командам
  • make `find` return с ненулевым кодом выхода, если произошла ошибка
  • Как добавить папку на удаленный хост PATH с помощью сценария оболочки?
  • Как скрипт оболочки может выполнять действия, если время создания файла прошло 5 минут?
  • dash: строка синтаксического анализа на две переменные
  • Получить PID создания файла
  • One Solution collect form web for “Bash – сделать бесконечную работу, ожидая нажатия определенной клавиши – возможно?”

    Да, это возможно.

     #!/bin/sh sigint_handler () { echo "Killing the job ($job_pid)" kill $job_pid } while true; do some_simple_job & job_pid=$! trap 'sigint_handler' INT echo "Job started ($job_pid)" wait trap - INT echo "Job finished, waiting 10 minutes..." sleep 600 done 

    Этот скрипт sh (также работает в bash , ksh93 и других совместимых оболочках) содержит ваш бесконечный цикл. После запуска задания в фоновом режиме он устанавливает обработчик сигналов , небольшую подпрограмму, которая должна запускаться всякий раз, когда скрипт ловит определенный сигнал. Сигналом, который он ловит, является сигнал INT (прерывание), который вы посылаете, нажав Ctrl + C.

    Сценарий ожидает завершения задания, затем он спит в течение 10 минут (как это делает ваш скрипт). Перед тем, как он спит, он удалит обработчик сигнала, чтобы вы могли прервать скрипт с помощью Ctrl + C.

    Если во время выполнения задания поступает сигнал INT , обработчик сигнала убьет задание с помощью идентификатора процесса. Затем скрипт будет выполнен для удаления обработчика и сна.

    Если вы не выходите из сценария в течение 10 минут сна, цикл продолжается с запуском задания и установкой обработчика снова.

    Interesting Posts

    Выполнение команды bash внутри функции рыбы

    Удаление символов в виде слов

    Клиент Mutt не может войти на почтовый сервер с расшифрованной парольной фразой

    Как перезагрузить xserver после изменения раскладки клавиатуры?

    Подстановка команды в псевдониме разрешена в профиле bash?

    Установите диспетчер пакетов во FreeBSD 10

    Чтение многострочного текста внутри сценария bash

    Как я могу контролировать расширение скобки bash, чтобы делать правильную вещь (что zsh делает автоматически)?

    Деактивировать CLI-карту графической карты Nvidia

    Как настроить разрешения для доступа к файлу?

    Как я «unbook» pdf

    Почему кавычки необходимы для аргумента файлов при вызове этого сценария Bash?

    Индивидуальный дистрибутив для live-USB

    Почему ядро ​​Linux сообщает «из дискового пространства», когда на самом деле оно выходит из i-узлов

    Как войти в удаленную учетную запись пользователя с помощью пароля и выполнить набор команд?

    Linux и Unix - лучшая ОС в мире.