Во-первых, убедитесь, что acpid.service
действительно запускается во время загрузки. После перезагрузки хоста используйте эту команду, чтобы убедиться, что:
# systemctl status acpid.service
Следует сказать started
и enabled
. Если это не так, systemctl enable acpid.service
может решить проблему за вас, фактически запустив службу при перезагрузке.
Во-вторых, если служба действительно запускается во время загрузки, проверьте журналы, чтобы убедиться, что с ней что-то не так. Вы уже должны увидеть несколько строк из журналов в выводе systemctl status
, затем вы можете получить больше журналов из этой службы, используя:
# journalctl -u acpid.service
Вы также можете просмотреть все журналы с момента последней перезагрузки с помощью:
# journalctl -b
Это может показать другие проблемы, которые могут быть связаны с проблемой, с которой вы столкнулись.
Если выясняется, что acpid.service
на самом деле запускается во время загрузки, а поворот экрана не работает до его перезапуска, вполне возможно, что он запускается слишком рано в процессе загрузки, и именно поэтому он работает неправильно, пока не будет перезапущен. Надеюсь, если это так, журналы могут предоставить вам более подробную информацию, чтобы вы могли это исправить.
(Пожалуйста, опубликуйте обновления, если вы найдете что-то в этом предлагаемом устранении неполадок, я был бы рад дать больше указаний, если вы сможете более конкретно описать симптомы, которые вы видите.)
Наконец, использование cron для управления службами systemd, скорее всего, не будет работать должным образом.
Если вы хотите принудительно перезапустить службу через некоторое время после загрузки, лучше использовать модуль таймера systemd. Вы можете отключить службу при загрузке и использовать таймер, чтобы фактически запустить ее после того, как система какое-то время работала,или вы можете оставить его включенным при загрузке и использовать таймер для запуска отдельного сервисного модуля (restart-acpid.service
, возможно? ), который использует Type=oneshot
и выполняет команду /usr/bin/systemctl restart acpid.service
(или скрипт-оболочку, который делает то же самое.)
Тем не менее, это довольно хакерский подход. Поэтому я бы порекомендовал вам на самом деле попытаться решить реальную проблему, найдя основную причину, а не вкладывать средства в такой неуклюжий обходной путь.
Если вы не хотите, чтобы какая-либо замена внутри документа здесь (вводила конструкцию <<EOL
), используйте кавычки в спецификации разделителя. Сойдет любое цитирование :можно написать<<'EOL'
(рекомендуемое ), <<\EOL
, <<E''OL
и т.д., даже (путано)<<"EOL"
.
$ cat <<'EOL'
> $foo
> EOL
$foo
Если вы хотите иногда расширять подстановки переменных и команд, оставьте <<EOL
и поставьте обратную косую черту перед каждым специальным символом, который вы не хотите расширять. Специальные символы, которые необходимо экранировать, это $\`
.
См. руководство bash о здесь, документы . Это применимо и к обычному sh.