Сценарий Bash :Cat несколько строк в файле, содержащем символы «$»

Во-первых, убедитесь, что 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(или скрипт-оболочку, который делает то же самое.)

Тем не менее, это довольно хакерский подход. Поэтому я бы порекомендовал вам на самом деле попытаться решить реальную проблему, найдя основную причину, а не вкладывать средства в такой неуклюжий обходной путь.

3
19.05.2021, 22:14
1 ответ

Если вы не хотите, чтобы какая-либо замена внутри документа здесь (вводила конструкцию <<EOL), используйте кавычки в спецификации разделителя. Сойдет любое цитирование :можно написать<<'EOL'(рекомендуемое ), <<\EOL, <<E''OLи т.д., даже (путано)<<"EOL".

$ cat <<'EOL'
> $foo
> EOL
$foo

Если вы хотите иногда расширять подстановки переменных и команд, оставьте <<EOLи поставьте обратную косую черту перед каждым специальным символом, который вы не хотите расширять. Специальные символы, которые необходимо экранировать, это $\`.

См. руководство bash о здесь, документы . Это применимо и к обычному sh.

5
28.07.2021, 11:30

Теги

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