Автозапуск программ и автозапуск при краше

Автор wazor, 09 января 2022, 01:33:15

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

wazor

Здравствуйте, уважаемые знатоки ;) я новичок в работе с debian.
Вкратце:
Арендовал VPS сервер. Выбрал систему debian. Сквозь нервы, маты и разбитые об стену кружки вроде более менее с ним подружился. ;D , но остался так и не решённый вопрос: Как поставить программу в автозапуск при перезагрузке сервера например и можно ли как то так же сделать автозапуск при её падении/закрытие (в самой программе такой функции нет) ? Программа не установлена, запускается в ручную через ранее распакованный архив. Буду очень благодарен за помощь  ;) Заранее всем спасибо  :)

qupl

Если предположить что debian один из последних, то изучайте systemd, это все в нем .

wazor

#2
Сложновато мне он поддаётся. Может кто-то на пальцах на примере добавления любой программы показать, как это сделать ? Для кого то это как открыть пачку сигарет, а для кого то этого как купить пачку сигарет когда тебе лет 15 ))) Возможно, но очень сложно  ;D для меня всякие эти юниты и т.д. в дикость.

ChubaDuba

Цитата: wazor от 09 января 2022, 09:53:11Может кто-то на пальцах на примере добавления любой программы показать, как это сделать ?
На примере no-ip
После установки программа запускается ручками командой:

# /usr/local/bin/noip2


Создаём в /etc/systemd/system сервис с именем noip2.service:

[Unit]
Description=No-ip.com dynamic IP address updater
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target
Alias=noip.service

[Service]
# Start main service
ExecStart=/usr/local/bin/noip2
Restart=always
Type=forking


Обновляем сервисы, ставим новый сервис в автозагрузку, запускаем сервис:

$ sudo systemctl daemon-reload
$ sudo systemctl enable noip2
$ sudo systemctl start noip2

wazor

#4
Цитата: ChubaDuba от 09 января 2022, 12:49:28
Цитата: wazor от 09 января 2022, 09:53:11Может кто-то на пальцах на примере добавления любой программы показать, как это сделать ?
На примере no-ip
После установки программа запускается ручками командой:

# /usr/local/bin/noip2


Создаём в /etc/systemd/system сервис с именем noip2.service:

[Unit]
Description=No-ip.com dynamic IP address updater
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target
Alias=noip.service

[Service]
# Start main service
ExecStart=/usr/local/bin/noip2
Restart=always
Type=forking


Обновляем сервисы, ставим новый сервис в автозагрузку, запускаем сервис:

$ sudo systemctl daemon-reload
$ sudo systemctl enable noip2
$ sudo systemctl start noip2


Спасибо большое за помощь, последовал Вашему совету, правда немного подругому сделал юнит, служба есть, но не работает как я понимаю.


[Unit]

Description=9hits

After=network.target

[Install]

WantedBy=multi-user.target

[Service]

# Start main service

ExecStart=/home/wazor/Desktop/9hits-linux-x64/9hits_viewer_launcher

Restart=always

Type=forking

Это мой косяк ?) Нужно точь в точь по Вашему примеру делать ? Или чего то нехватает на самом сервере

ferum

Тут надо определиться, если вы хотите автозапуск средствами systemd то исполняемый файл должен находиться в корневом разделе . В вашем случае могут требоваться какие то локальные библиотеки конфигурационные файлы. Логично всё это поместить в /usr/local и /etc. Иначе, просто команда с длинным ключем в юните не будет перезапускать сервис после падения. Если перезапуск для вас не критичен , а программа должна стартовать после загрузки графической оболочки, проще реализовать как вы хотели через примитивный файл.desktop пместив вего в папку~./autostart вашего de.
Русские дебианщики против цифрового слабоумия !

ChubaDuba

Цитата: wazor от 09 января 2022, 19:34:05Нужно точь в точь по Вашему примеру делать ? Или чего то нехватает на самом сервере
Вы же просили:
Цитата: wazor от 09 января 2022, 09:53:11на примере добавления любой программы показать, как это сделать
я показал...
В моём случае программа запускается от пользователя root до старта графического сервера и логина пользователя.
Что вы хотите автоматизировать и как (когда) оно должно запускаться я не знаю.
Если в общем, вам qupl ответил:
Цитата: qupl от 09 января 2022, 09:02:18изучайте systemd, это все в нем

Aalexeey

Возможно если закольцевать подобный скрипт. У меня была необходимость что-бы simple-scan перезапускался после краша, если я забыл включить сканер.
#!/bin/bash

/usr/share/simple-scan/simple-scan

if [ $? -ne 0 ]; then
/usr/share/simple-scan/simple-scan
exit 0
fi

exit 0
https://debianforum.ru/index.php?topic=6879 100% защиты от "Ааааа у меня всё поломалось"

Gamliel

Цитата: wazor от 09 января 2022, 01:33:15
Как поставить программу в автозапуск при перезагрузке сервера
Записать в системный crontab строчку, начинающуюся с @reboot.

Цитата: wazor от 09 января 2022, 01:33:15
можно ли как то так же сделать автозапуск при её падении/закрытие
По идее, можно записать в системный crontab ежеминутный запуск команды вида
systemctl status foo.service >/dev/null 2>/dev/null || systemctl start foo.service
(foo приведён для примера, в действительности такого не существует).

Так что читайте
man crontab
(там всего 88 строк, в которых всего 5587 знаков).