У меня есть сценарий, который запрашивает числовой ввод от пользователя во время загрузки компьютера. Компьютер работает под управлением Fedora 16. Он используется работой, на Fedora 13, но после обновленияДоступ к stdin во время загрузки systemd
read INTEGER
возвращается немедленно, без ловли любого пользовательского ввода. Я попробовал
read INTEGER
wait $!
но (как ожидается) это тоже не работает. Сценарий запускается из служебного файла systemd (см. Комментарии ниже). Это должно быть должно выполняться как root, а должно быть начато до входа пользователя в систему. В настоящее время он вызывает bash в качестве интерпретатора, но с некоторыми усилиями, которые могут быть изменены. Может ли кто-нибудь помочь вернуть этот сценарий в норму?
Дополнительный кредит: в F13 он использовался для остановки загрузки для ввода пользователем (по желанию), но вход не отображался в качестве введенного пользователем. Есть ли способ добавить эту функциональность?
Я не знаю ответ на вашу конкретную проблему, но я знаю, где начать искать:. Изучить, как Systemd работ, что является новой инициализацией замещающей записи новый файл systemd на самом деле довольно прост, и выполнение вашего скрипта в нем также легко. Но проблема в том, что вам нужно systemd, чтобы вы могли получить доступ к stdin, и именно там я не уверен, есть ли волшебный конфиг, который позволит быстро это сделать. Быстрое чтение страницы systemd.unit не показывает ее мне быстро. –
Хм. Я поместил ее в файл systemd.service, который работает как ожидалось, но все равно не будет принимайте ввод с клавиатуры. Использую 'type = oneshot',' WantedBy = graphical.target', 'After = multiuser.target'. в ближайшее время попробуйте 'WantedBy = multiuser.target', чтобы узнать, помогает ли это. –
Ввод в очередь «multiuser.target» «(из-за лучшего слова» заставляет его начинать видимо, но не прерывает запуск для помощи. @WesHardaker, знаете ли вы, что запустит systemd? –