Manjaro XFCE Edition
   2012

Как перезапустить службу через 10 секунд после загрузки?

Вводные:
1. Manjaro XFCE 21 у меня установлен в виртуалке VMWare.
2. При запуске не подхватывается разрешение экрана.
3. Я создал ярлык со следующей командой:
systemctl restart vmtoolsd
. И он работает. Но во-первых постоянно запрашивает пароль для этой операции. А во-вторых мне это приходится делать каждый раз вручную после очередной загрузки/перезагрузки.
4. Я вроде как зашёл в «автозагрузку» и прописал там «перезапуск службы». Но при очередной загрузке/перезагрузке это моё «добавление в автозагрузку» никак себя не проявляет. Возможно для этого нужно какие-то более специальные действия.

Вопрос:
Есть ли возможность каким-либо образом сделать автоматический перезапуск службы допустим через 10 секунд после загрузки системы? Естественно, под автоматическим перезапуском я подразумеваю, без ввода пароля.

p.s.
Более наглядно в видео. Залил на ютуб. Всего 3,5 минуты. (кликни это спойлер)

8 комментариев

avatar
Вам нужен монотонный таймер. И служба для него.
Либо можно службой дергать скрипт, в котором имеется команда sleep.

Также хотелось бы уточнить автостартует ли vmtoolsd?

По поводу безпарольного выполнения команд читайте про /etc/sudoers.
0
avatar
Загуглил и воспользовался вот этой командой:
systemctl list-units --type service

Вроде как служба запущена, да и это «ощущается» сразу, потому что работает буфер обмена между хостовой и гостевой (виртуалкой). Но при этом разрешение экрана 800 * 600.
Вот скрин:
Скрин службы vmtoolsd
Последний раз редактировалось
0
avatar
Почитал я про этот монотонный таймер, но совершенно не понял принцип работы. А есть просто в манжаро банальный планировщик, как в винде или на маке? Ну чтобы не лазить по дебрям? А то даже документация настолько жуткая.
Всегда удивляюсь, почему документация пишется как-то без конкретных примеров. Ну напишите вы просто пошаговую инструкцю. Например (этот пример как бы я писал инструкцию):
1. Зайдите по такому то пути и создайте файл. Особенности названия файла такие-то.
2. В файле задайте инструкции. Там всего столько то секций. В первой секции название и описание. Во-второй параметры запуска, в третьей название службы для перезапуска.

И всё. Зачем всё остальное, которое вообще не понятно. Я так и не смог найти ни одного примера где бы было написано как перезапустить службу при помощи таймера. Да я даже не смог найти пошагового примера, как хотя бы создать. Или хотя бы по аналогии где посмотреть пример «по умолчанию».

Читаю про таймер, тут внезапно появляются примеры с какими-то юнитами. Да зачем мне юниты? Мне нужно сервис перезапустить, а в примерах даже секции по типу [Start] или там [Launch] отсутствует. Зато есть секция [Install]. Т.е. создатели таймера подразумевали, что я не должен ничего стартовать и запускать, а вот инсталлировать по таймеру должен? И подобного рода документация (которой и воспользоваться нельзя и логически подобрать тоже нельзя) чудным образом пишется и некоторые даже считают её хорошей.
0
avatar
А есть просто в манжаро банальный планировщик
Есть cron и куча его вариаций. Проще уже некуда.
0
avatar
найди где лежит юнит этого сервиса, открой и отредактируй юнит на перезапуск, как, например, описано тут, также проверь, запускается ли у тебя служба сама, без твоего ярлыка.
зы. сейчас посмотрю сам юнит, а пока лежит он здесь usr/lib/systemd/system/vmtoolsd.service
ззы. может ты конечно и читал это тыц, но ссылку оставлю, особенно в части инсталяции тыц
зззы. в общем юнит простейший (+ отметил добавленные мной строки, при редактировании юнита + надо убрать):
[Unit]
Description=Open Virtual Machine Tools (VMware Tools)
ConditionVirtualization=vmware
After=display-manager.service

[Service]
+Restart=on-failure /или always , если ошибок при старте сервиса нет
+RestartSec=10s
ExecStart=/usr/bin/vmtoolsd

[Install]
WantedBy=multi-user.target


для надежности можно еще перед моими строками с плюсиком добавить следующее:
StartLimitIntervalSec=500 (тут указано время перезапуска в секундах, надо уточнить по твоей ситуации)
StartLimitBurst=5 (количество перезапусков, если служба не запустилась)
Последний раз редактировалось
?
Всегда есть быстрое простое неправильное решение.
быстрые простые правильные (иногда) ответы здесь t.me/ManjaroRu
0
avatar
+Restart=on-failure
+RestartSec=10s 

Что это даст топикстартеру? У него служба «loaded, active, running». То есть failure не происходит.
И лучше не править системный юнит (его перезапишет при обновлении), а либо создать сервис в /etc/systemd/system/ либо использовать drop-in файлы параметров в /etc/systemd/system/vmtoolsd.d/

Но что-то мне подсказывает, что вместо решения проблемы топикстартер пытается прикрутить костыль.
Последний раз редактировалось
0
avatar
согласен, все написано для проверки моей догадки, и далее я хотел объяснить как избежать перезаписи при обновлении. почему он достигает результата после перезапуска сервиса через ярлык руками? и, вангую, он не инсталировал до конца, а то что у него служба «loaded, active, running», то это показано, скорее всего, после запуска ярлыка (т.е. перезапуска сервиса)
Последний раз редактировалось
?
Всегда есть быстрое простое неправильное решение.
быстрые простые правильные (иногда) ответы здесь t.me/ManjaroRu
0
avatar
Перешёл на ядро постарше (не помню, как там, но в конце 15) и проблема прошла сама собой.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.