Как сделать так, чтобы программа на с++, в Linux, исполняла утилито-подобное поведение?
То есть. Программа должна себя вести как например утилита gcc, утилита cmake, make, apt-get и тп вещи.
(1) То есть, как сделать так чтобы программа запускалась из любой папки Linux?
И дополнительно:
(2) Как сделать так чтобы программа запускалась со старта операционной системы Linux, и продолжала исполнение в виде некой сервисной службы(к примеру)?
Ответы (1 шт):
Если система построена на базе systemd (а это большинство современных систем), то сделать "свой сервис" очень легко. Заходим в каталог /etc/systemd/system/ и создаем текстовый файл с расширением .service.
Теперь открываем его и наполняем
[Unit]
Description="красивое имя"
After=network.target ; запускаемся после того, как сеть поднялась
After=nginx.service ; и например, nginx
[Service]
Type=exec
WorkingDirectory=<рабочий каталог, если нужен>
User=BBName ; имя пользователя, может быть важно
ExecStart=<собственно путь к бинарнику с параметрами>
[Install]
WantedBy=multi-user.target
все (в угловых скобках пропишите нужное, сами уголовые скобки не нужны). теперь сервис будет перезапускаться ( systemctl start имя.service), его статус можно посмотреть через systemctl status имя.service ( с логами!). Его система даже перезапускать будет.
В том же каталоге можно найти много других файлов для других "сервисов". Их можно смело открывать и смотреть, изучать.
p.s. инструкции утверждают, что свои скрипты лучше размещать в каталоге /etc/systemd/user/ Но у меня на убунтах оно лежит в /etc/systemd/system, возможно это и неверно, но оно работает.