C'è un modo per aggiungere un'applicazione / script all'avvio di Linux in modo che ogni volta che il sistema si avvia verrà eseguito?
Sto cercando un modo automatizzato, cioè l'utente non dovrebbe aggiungerlo per cron job o qualcosa del genere.
C'è un modo per aggiungere un'applicazione / script all'avvio di Linux in modo che ogni volta che il sistema si avvia verrà eseguito?
Sto cercando un modo automatizzato, cioè l'utente non dovrebbe aggiungerlo per cron job o qualcosa del genere.
Risposte:
Oltre agli script di avvio a livello di sistema, l'ambiente desktop potrebbe avere il suo modo di eseguire automaticamente i programmi. La cartella .config/autostartdovrebbe essere un modo neutro per il desktop di definire le voci di esecuzione automatica. /etc/xdg/autostartè per la configurazione a livello di sistema. Dettagli sulla specifica su http://developer.gnome.org/autostart-spec/ .
Per le voci di avvio automatico LXDE è anche possibile impostare ~/.config/lxsession/LXDE/autostart.
È un po 'diverso se è necessario eseguire gli script dopo che la rete è attiva e funzionante. In tal caso, è necessario controllare gli speciali script post-connessione che è possibile definire per il proprio gestore di rete. Sia NetworkManager che Wicd hanno i loro modi per specificare le voci di esecuzione automatica post-connessione. Se la rete è configurata tramite ifupdown, gli script di post-up possono essere inseriti nella /etc/network/if-up.d/cartella. Ma un approccio migliore all'esecuzione degli script post-connessione potrebbe essere systemd (per i sistemi che lo supportano, che è la maggior parte delle distribuzioni moderne).
Se la cosa che si desidera avviare automaticamente non è un'app grafica che richiede un desktop, è meglio evitare di utilizzare qualsiasi funzione di avvio automatico fornita da xorg o dall'ambiente desktop corrente.
systemd è diventato onnipresente in molte distro moderne e offre molto controllo e flessibilità in termini di avvio dei servizi e di modalità di funzionamento.
Riassumo alcuni vantaggi ( systemd può fare molto di più ):
User=myuserRestart=on-failure|on-watchdog|on-abnormal|alwaysType=simple|forking|oneshot|notify|dbusWants=network-online.targetnella [Unit]sezione).Un servizio di esempio che avvia un demone telegram-cli. Mettilo dentro /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
Inizia il servizio:
sudo systemctl start tg
Interrompere il servizio:
sudo systemctl stop tg
Controlla lo stato:
systemctl status tg
Disabilita il servizio:
sudo systemctl disable tg
Per risparmiare la digitazione extra puoi aggiungere la tua ~/.bashrclinea, alias sc='sudo systemctl $*'quindi sarai in grado di abbreviare i comandi sopra ad es sc start tg.
NOTA: Se hai usato,
crontieni presente che le voci crontab vengono eseguite in un ambiente limitato - lo stesso vale persystemd: usa sempre percorsi assoluti e non fare ipotesi sulle variabili che vengono definite. Imposta esplicitamente qualsiasi variabile da cui dipendono i tuoi script.systemdnon utilizzerà il tuo utente.bashrce$PATH.
Ulteriori informazioni:
Sì, è possibile eseguire programmi all'avvio su Linux definendo i percorsi degli eseguibili rc.localche risiedono nella directory /etco /etc/rc.d, 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, ad es Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure that this script will be executed during boot.
Startup applicationsutilizzando il pulsante HomeAdd Startup command boximmettere il comandoOK(dovresti vedere il tuo nuovo comando nell'elenco)Close Test riavviando o disconnettendosi e rientrando.
Fonte: https://help.ubuntu.com/community/AddingProgramToSessionStartup
Ogni distribuzione utilizza la propria tecnica bootstrap, quindi è necessario esaminare i documenti per la distribuzione. /etc/rc.local è un luogo in cui puoi inserire alcuni script automatici, ma è davvero obsoleto. Ora la maggior parte dei sistemi basati su Linux utilizza runlevel o bootstrap di systemd, quindi la maggior parte dei lavori avviati automaticamente potrebbe essere controllata con precisione.
Ho trovato la mia risposta qui: /programming/7221757/run-automatically-program-on-startup-under-linux-ubuntu Sono stato in grado di creare un file / script per spegnere il mio trackpad mentre sono in la mia sessione Linux Ubuntu 12.10.