Qualcosa come Cron?
Nota il @reboot ingresso
Questo è l'approccio più flessibile e quello più simile alle "Attività pianificate" di Windows (meglio in realtà).
Avvio automatico di Xorg
Oltre agli script di avvio a livello di sistema, il tuo ambiente desktop potrebbe avere il proprio modo di eseguire automaticamente i programmi. La cartella .config/autostart dovrebbe essere un modo indipendente dal desktop per definire le voci di esecuzione automatica. /etc/xdg/autostart è per la configurazione a livello di sistema. Dettagli sulle specifiche su http://developer.gnome.org/autostart-spec/.
Per LXDE le voci di avvio automatico possono anche essere impostate in ~/.config/lxsession/LXDE/autostart .
È un po' diverso se devi eseguire i tuoi script dopo la rete è attiva e funzionante. In tal caso dovresti controllare gli speciali script post-connessione che possono essere definiti per il tuo gestore di rete. Entrambi NetworkManager e wicd hanno i propri modi per specificare le voci di esecuzione automatica post-connessione. Se la rete è configurata tramite ifupdown , quindi gli script post-up possono essere inseriti nel /etc/network/if-up.d/ cartella. Ma un approccio migliore all'esecuzione di script post-connessione potrebbe essere systemd (per i sistemi che lo supportano, che è la maggior parte delle distribuzioni moderne).
Avvio automatico come servizio systemd
Se la cosa che desideri avviare automaticamente non è un'app grafica che richiede un desktop, allora è meglio evitare di utilizzare le funzionalità di avvio automatico fornite da xorg o dal tuo attuale ambiente desktop.
systemd è diventato onnipresente in molte distribuzioni moderne e offre molto controllo e flessibilità in termini di come i tuoi servizi vengono avviati e come vengono eseguiti.
Riassumerò alcuni vantaggi (systemd può fare molto di più ):
- Esegui come root o come utente specifico:ad es.
User=myuser - Riavvia i servizi in caso di errore con timeout configurabili:
Restart=on-failure|on-watchdog|on-abnormal|always - Impostazione del tipo di servizio:
Type=simple|forking|oneshot|notify|dbus - Stabilisci le precondizioni e le dipendenze di avvio, ovvero puoi impostare il tuo servizio in modo che si avvii dopo che la rete è attiva (
Wants=network-online.targetnel[Unit]sezione).
Un servizio di esempio che avvia un demone telegram-cli. Inseriscilo in /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
Ora puoi abilitare l'avvio automatico del servizio:
sudo systemctl enable tg
Avvia il servizio:
sudo systemctl start tg
Arresta il servizio:
sudo systemctl stop tg
Controlla lo stato:
systemctl status tg
Disattiva il servizio:
sudo systemctl disable tg
Per risparmiare ulteriore digitazione puoi aggiungere il tuo ~/.bashrc la riga alias sc='sudo systemctl $*' quindi sarai in grado di abbreviare i comandi sopra ad es. sc start tg .
Ulteriori informazioni:
- Capire systemd
- servizi systemd
- unità di sistema
Sì, è possibile eseguire programmi all'avvio su Linux definendo i percorsi degli eseguibili in rc.local che risiede nel /etc o /etc/rc.d directory, ad esempio:
#!/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
Nota:non dimenticare di assegnare i diritti eseguibili come descritto nella documentazione del file, ovvero Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure that this script will be executed during boot.