Něco jako Cron?
Všimněte si @reboot
vstup
Toto je nejflexibilnější přístup a nejvíce se podobá „Naplánovaným úlohám“ systému Windows (ve skutečnosti je lepší).
Automatické spuštění Xorg
Kromě spouštěcích skriptů na úrovni systému může mít vaše desktopové prostředí svůj vlastní způsob automatického spouštění programů. Složka .config/autostart
má být desktopově neutrální způsob definování položek automatického spouštění. /etc/xdg/autostart
je pro konfiguraci celého systému. Podrobnosti o specifikaci na http://developer.gnome.org/autostart-spec/.
Pro LXDE lze položky automatického spuštění nastavit také v ~/.config/lxsession/LXDE/autostart
.
Je to trochu jiné, pokud potřebujete spouštět skripty po síť je v provozu. V takovém případě byste měli zkontrolovat speciální skripty po připojení, které lze definovat pro vašeho správce sítě. Oba NetworkManager a wicd mají své vlastní způsoby zadávání položek automatického spuštění po připojení. Pokud je síť nakonfigurována pomocí ifupdown
, pak lze post-up skripty umístit do /etc/network/if-up.d/
složku. Ale lepší přístup ke spouštění skriptů po připojení by mohl být systemd (pro systémy, které to podporují, což je většina moderních distribucí).
Automatické spuštění jako systémová služba
Pokud věc, kterou chcete automaticky spustit, není grafická aplikace, která vyžaduje plochu, pak je nejlepší vyhnout se používání jakýchkoli funkcí automatického spouštění, které poskytuje xorg nebo vaše aktuální desktopové prostředí.
systemd
se stal všudypřítomným v mnoha moderních distribucích a nabízí hodně kontroly a flexibility, pokud jde o to, jak jsou vaše služby spuštěny a jak běží.
Shrnu některé výhody (systemd toho umí mnohem víc ):
- Spustit jako root nebo jako konkrétní uživatel:např.
User=myuser
- Restartujte služby při selhání s konfigurovatelnými časovými limity:
Restart=on-failure|on-watchdog|on-abnormal|always
- Nastavení typu služby:
Type=simple|forking|oneshot|notify|dbus
- Stanovte předpoklady pro spuštění a závislosti, tj. můžete nastavit, aby se služba spustila po připojení sítě (
Wants=network-online.target
v[Unit]
sekce).
Příklad služby, která spouští démona telegram-cli. Umístěte jej do /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
Nyní můžete povolit automatické spouštění služby:
sudo systemctl enable tg
Spusťte službu:
sudo systemctl start tg
Zastavte službu:
sudo systemctl stop tg
Zkontrolujte stav:
systemctl status tg
Zakázat službu:
sudo systemctl disable tg
Chcete-li si ušetřit další psaní, můžete přidat ~/.bashrc
řádek alias sc='sudo systemctl $*'
pak budete moci zkrátit výše uvedené příkazy např. sc start tg
.
Více informací:
- Porozumění systemd
- systémové služby
- systémové jednotky
Ano, na Linuxu je možné spouštět programy při startu definováním cest ke spustitelným souborům v rc.local
který buď sídlí v /etc
nebo /etc/rc.d
adresář, např.:
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
/path/to/executable
Poznámka:nezapomeňte přiřadit spustitelná práva, jak je popsáno v dokumentaci souboru, tj. Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure that this script will be executed during boot.