Установка шрифтов для конкретной программы

как запущен в процессе init.d

Нет такой вещи, как «процесс init.d».

rc.local является частью системы rc, которая был заменен три раза. Эта система была заменена van Smoorenburg rc, upstart (десять лет назад) и (по версии Ubuntu версии 15) systemd. То, что вы используете, - это совместимость с обратной совместимостью с третьей итерацией.

В системных операционных системах, таких как Ubuntu версии 15 и более поздних версиях, прокладка является службой systemd с именем rc-local.service. Вы можете узнать его определение службы с помощью systemctl cat rc-local.service

Как вы можете видеть, это не определено как присоединение услуги к терминальному устройству. Сервисный процесс не запускается с управляющим терминалом, а его стандартный ввод и вывод не подключены к терминалу.

Этот код на питоне и сценарий оболочки не «подают звуковой сигнал о динамике ПК». Они записывают символ # 7 на свои стандартные выходы. Просто так происходит, когда вы запускаете их в интерактивном режиме в своем сеансе входа в систему, когда устройство, которое является их стандартным выходом, интерпретирует символ # 7 как инструкцию, чтобы сделать шум. Перенесите стандартный вывод интерактивной команды на /dev/null и наблюдайте за тем, как тихий код становится.

Именно поэтому важно, что прокладка rc.local (очень) обратной совместимости не имеет никакого подключения к терминальному устройству .

Вы можете решить эту проблему с помощью утилиты beep. Эта попытка (если она вызвана соответствующим образом) для явного открытия дескриптора файла к терминальному устройству и отправки символа № 7 (или использования консоли или evdev ioctl() s) этого устройства, а не просто предполагая, что стандартный вывод является терминальным устройством.

Но стоит подумать о том, чтобы не использовать rc.local тоже.

Дальнейшее чтение

https://unix.stackexchange.com/a/211927 / 5132
0
задан 8 January 2012 в 03:51

0 ответов

Другие вопросы по тегам:

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