Automatyczne uruchomienie Xorg
Oprócz skryptów uruchamiania na poziomie systemu, środowisko pulpitu może mieć własny sposób na automatyczne uruchamianie programów. Folder .config/autostart
powinien być neutralnym dla komputera sposobem definiowania wpisów autorun. /etc/xdg/autostart
jest przeznaczony do konfiguracji ogólnosystemowej. Szczegółowe informacje na temat specyfikacji znajdują się na stronie http://developer.gnome.org/autostart-spec/ .
W przypadku LXDE można również ustawić wpisy autostartu ~/.config/lxsession/LXDE/autostart
.
Trochę inaczej jest, jeśli trzeba uruchamiać skrypty po uruchomieniu sieci. W takim przypadku należy sprawdzić specjalne skrypty po połączeniu, które można zdefiniować dla menedżera sieci. Zarówno NetworkManager, jak i wicd mają własne sposoby określania wpisów autorun po podłączeniu. Jeśli sieć jest skonfigurowana za pośrednictwem ifupdown
, skrypty post-up można umieścić w/etc/network/if-up.d/
folderze. Lepszym podejściem do uruchamiania skryptów po połączeniu może być systemd (dla systemów, które go obsługują, co stanowi większość współczesnych dystrybucji).
Autostart jako usługa systemowa
Jeśli rzecz, którą chcesz uruchomić automatycznie, nie jest aplikacją graficzną, która wymaga komputera stacjonarnego, najlepiej unikać korzystania z funkcji autostartu udostępnianych przez xorg lub obecne środowisko pulpitu.
systemd
stał się wszechobecny w wielu nowoczesnych dystrybucjach i oferuje dużą kontrolę i elastyczność w zakresie uruchamiania usług i ich działania.
Podsumuję niektóre korzyści ( systemd może zrobić znacznie więcej ):
- Uruchom jako root lub jako określony użytkownik: np
User=myuser
- Uruchom ponownie usługi w przypadku awarii z konfigurowalnymi limitami czasu:
Restart=on-failure|on-watchdog|on-abnormal|always
- Ustawianie rodzaju usługi:
Type=simple|forking|oneshot|notify|dbus
- Określ warunki i zależności związane z uruchomieniem, tzn. Możesz ustawić, aby usługa była uruchamiana po uruchomieniu sieci (
Wants=network-online.target
w [Unit]
sekcji).
Przykładowa usługa uruchamiająca demona telegram-cli. Umieść to w /etc/systemd/system/tg.service
.
[Unit]
Description=MyDaemon
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/local/bin/telegram-cli -k /etc/telegram-cli/tg-server.pub -W -P 1234 -d -vvvRC
ExecStop=/usr/bin/pkill -f telegram-cli
User=jicu
[Install]
WantedBy=multi-user.target
Teraz możesz włączyć usługę automatycznego uruchamiania:
sudo systemctl enable tg
Uruchom usługę:
sudo systemctl start tg
Zatrzymaj usługę:
sudo systemctl stop tg
Sprawdzić stan:
systemctl status tg
Wyłącz usługę:
sudo systemctl disable tg
Aby zaoszczędzić dodatkowego pisania, możesz dodać w ~/.bashrc
wierszu, alias sc='sudo systemctl $*'
a następnie będziesz mógł skrócić powyższe polecenia do np sc start tg
.
UWAGA: Jeśli cron
używałeś, pamiętaj, że wpisy crontab są uruchamiane w ograniczonym środowisku - to samo dotyczy systemd
: zawsze używaj ścieżek bezwzględnych i nie przyjmuj żadnych założeń dotyczących zmiennych definiowanych. Jawnie ustaw dowolne zmienne, od których zależą twoje skrypty. systemd
nie będzie używać twojego użytkownika .bashrc
i $PATH
.
Więcej informacji: