В отличие от предыдущих версий Ubuntu 15.04 теперь использует systemd
вместо upstart
. Для запуска программ при начальной загрузке, я всегда создавал conf-файлы в /etc/init/
. Они были бы похожи на это:
start on login-session-start
script
/usr/bin/x11vnc -auth /var/run/lightdm/root/:0 -display :0 -rfbauth /etc/x11vnc.pass -rfbport 5900 -noxrecord -noxfixes -noxdamage -forever -bg -o /var/log/x11vnc.log
end script
К сожалению, это больше не работает в Ubuntu 15.04, и я пытался найти эквивалент этому conf-файлу, который работает с systemd. Хотя Интернет еще не был вполне так находчив.
Что необходимо для запуска вышеупомянутого conf-файла при начальной загрузке? Есть ли переводчики между выскочкой и systemd?
Если Вы хотите, можно вместо этого сделать systemd .service
файл, который делает то же самое. Основной systemd .service
файл для вышеупомянутой команды мог бы быть похожим на следующее:
[Unit]
Description=Start VNC server
Requires=lightdm.service
After=lightdm.service
[Service]
ExecStart=/usr/bin/x11vnc -auth /var/run/lightdm/root/:0 -display :0 -rfbauth /etc/x11vnc.pass -rfbport 5900 -noxrecord -noxfixes -noxdamage -forever
[Install]
WantedBy=graphical.target
Информация на заметку:
Requires=lightdm.service
. Это означает это, если этот сервис требуют запуститься, то lightdm.service
также попросится запуститься, но если lightdm.service
сбои для запуска затем этот сервис не попросят запуститься. Кроме того, After=lightdm.service
необходим так, чтобы этот сервис запустился, после 'lightdm.service закончил запускаться.-bg
указанный. В systemd предпочтено, что сервисы остаются на переднем плане, так, чтобы systemd знал, что они работают. Обратите внимание, что возможно указать файл PID для сервиса, который входит в фон.WantedBy=graphical.target
указывает, что, как часть запуска Вашего GUI, это должно также начать.Для установки этого файла так, чтобы сервис был выполнен как корень добавьте этот файл в /etc/systemd/system
. Затем выполненный sudo systemctl enable <filename>
(где <filename>
название сервисного файла в /etc/systemd/system
). Символьная ссылка должна быть создана в /etc/systemd/system/graphical.target.wants/
. После перезагрузки, когда Вы работаете systemctl status <filename>
, необходимо видеть, что сервис распознан и еще не запущен.
Отметьте это /etc/systemd/system/
предназначен для сервисов в масштабе всей системы, которые системного администратора (Вы) добавляете. /lib/systemd/system/
предназначен для сервисов в масштабе всей системы, установленных пакетами. Вы не должны делать символьную ссылку на /lib/systemd/system/
чтобы сервис загрузился. Ниже таблицы (взятый от systemd.unit
страница справочника), описывает то, для чего каждое местоположение относительно системных служб (существуют отдельные тракты для пользовательских сервисов):
┌────────────────────┬─────────────────────────────┐
│Path │ Description │
├────────────────────┼─────────────────────────────┤
│/etc/systemd/system │ Local configuration │
├────────────────────┼─────────────────────────────┤
│/run/systemd/system │ Runtime units │
├────────────────────┼─────────────────────────────┤
│/lib/systemd/system │ Units of installed packages │
└────────────────────┴─────────────────────────────┘