Автозапуск програм xorg
Якщо сценарій, який ви хочете запустити, вимагає сесії xorg, ви можете спробувати дотримуватися специфікації автоматичного запуску freedesktop, яка може працювати або не працювати, залежно від того, яке середовище робочого столу ви використовуєте.
Крім того, ви можете орієнтуватися на певне середовище робочого столу, як описано на веб-сторінці https://wiki.archlinux.org/index.php/autostarting .
Запуск сценарію як системна служба
Якщо ваш скрипт відповідає опису демона або "послуги", а у вашій системі працює systemd, що стосується raspbian та найсучасніших ліній, то ви можете налаштувати свій сценарій як запуск системної служби - це забезпечує детальний контроль над середовище життєвого циклу та виконання, а також передумови для (повторного) запуску сценарію, такі як мережа, що працює і працює. Також можливо налаштувати перезапуск служби в разі відмови ( Restart=always
і затримки між перезапуском, наприклад RestartSec=10
).
Для загальносистемного використання створіть файл системного блоку під /etc/systemd/system
, наприклад, за допомогою vim /etc/systemd/system/autossh.service
:
[Unit]
Description=Autossh keepalive daemon
## make sure we only start the service after network is up
Wants=network-online.target
After=network.target
[Service]
## use 'Type=forking' if the service backgrounds itself
## other values are Type=simple (default) and Type=oneshot
Type=forking
## here we can set custom environment variables
Environment=AUTOSSH_GATETIME=0
Environment=AUTOSSH_PORT=0
ExecStart=/usr/local/bin/ssh-keep-alive.sh
ExecStop=/usr/bin/killall -9 autossh
### NOTE: you can have multiple `ExecStop` lines
ExecStop=/usr/bin/killall ssh
# don't use 'nobody' if your script needs to access user files
# (if User is not set the service will run as root)
#User=nobody
# Useful during debugging; remove it once the service is working
StandardOutput=console
[Install]
WantedBy=multi-user.target
Дивитися також:
Тепер ми готові перевірити послугу:
systemctl start autossh
Перевірка статусу послуги:
systemctl status autossh
Припинення послуги:
systemctl stop autossh
Після того, як ви переконалися, що сервіс працює так, як очікувалося, включіть його за допомогою:
systemctl enable autossh
ПРИМІТКА. У цілях безпеки systemd
сценарій буде запускатися в обмеженому середовищі, подібно до того, як crontab
виконуються сценарії, тому не робіть жодних припущень щодо існуючих системних змінних. Використовуйте Environment
клавіші, якщо ваш сценарій потребує визначення конкретних змінних. Додавання set -x
вгорі вашого скрипта bash та його запуску systemctl status my_service
може допомогти визначити, чому ваш сценарій не працює. Як правило tumb, завжди використовувати абсолютні шляхи для все , включаючи echo
і cat
, або явно визначити ваш $ PATH.
.xinitrc
чи.xsession
файл.