1

У меня есть скрипт bash (назовем его script.sh), который выглядит так

while true; do
  if [ $someFile -eq = "1" ]
  then
    # make laptop LED blink here
  fi
done

Поэтому, когда какой-то файл имеет какое-то значение (в моем случае этот файл изменяется при поступлении сообщений), скрипт заставляет светодиод мигать. Как вы можете догадаться, этот сценарий никогда не останавливается.

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

Сегодня я сказал себе: давайте поместим это в .bash_profile, чтобы скрипт запускался при входе в систему.

Но когда я пытаюсь войти, увы экран зависает.

Как я могу сказать bash: выполнить это, но не блокирующим образом?

Или: есть другое решение, чтобы запустить это при запуске, не замораживая машину?

3 ответа3

3

Хорошая мысль. Но вы остановили последовательность входа в свой бесконечный цикл :-)
Итак, попробуйте запустить ваш скрипт с помощью команды, как,

nohup ~/script.sh &

Таким образом, оно будет отправлено в фоновом режиме, и ваш логин будет продолжен.

А еще лучше, почитай про cron и sleep ...

0

Вместо того, чтобы запускать это через cron с явным циклом, прочтите inotify, «подсистему ядра Linux, которая расширяет файловые системы, чтобы замечать изменения в файловой системе и сообщать об этих изменениях приложениям».

Документация по инструментам inotify-tools показывает, как установить и дает примеры использования.

0

Лучше всего добавить это в cron . Создайте crontab со следующей строкой:

@reboot ~/script.sh &

Могут также возникнуть осложнения от того, как вы заставляете светодиод мигать. Вы можете получить лучшие ответы, если включите весь сценарий, чтобы мы могли видеть, что происходит.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .