Qual è l'equivalente Linux di Windows Startup?


16

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.



se è Ubuntu basta usare $ gnome-session-properties
user3804598

Risposte:


11

Qualcosa come Cron ?

Nota la @rebootvoce

Questo è l'approccio più flessibile e quello più simile alle "Attività pianificate" di Windows (meglio effettivamente).


è possibile aggiungere un lavoro in CRON senza l'intenzione dell'utente?
Sourav,

sì. basta scrivere /etc/cron.do chiamare crontab dal programma senza che lo sappiano.

Cosa intendi? Se intendi aggiungerne uno manualmente, quindi sì. I crontab sono solo file di testo.

10

Avvio automatico Xorg

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).

Avvio automatico come servizio systemd

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ù ):

  • 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 i presupposti e le dipendenze all'avvio, ovvero puoi impostare il servizio affinché inizi dopo che la rete è attiva ( Wants=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 per systemd: usa sempre percorsi assoluti e non fare ipotesi sulle variabili che vengono definite. Imposta esplicitamente qualsiasi variabile da cui dipendono i tuoi script. systemd non utilizzerà il tuo utente .bashrce $PATH.

Ulteriori informazioni:


7

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.


l'aggiunta della voce nel file avvierà il programma ogni volta?
Sourav,

2
Ad ogni riavvio, sì. Se desideri lavori programmati regolarmente (ogni giorno, ora, settimana o qualsiasi combinazione dispari), lo cronscheduler è tuo amico.

3
  1. Cerca Startup applicationsutilizzando il pulsante Home
  2. Clic Add
  3. Inserisci un nome per chiamare l'applicazione (qualsiasi nome farà)
  4. Nel Startup command boximmettere il comando
  5. Fai clic su OK(dovresti vedere il tuo nuovo comando nell'elenco)
  6. Clic Close

Test riavviando o disconnettendosi e rientrando.

Fonte: https://help.ubuntu.com/community/AddingProgramToSessionStartup


1

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.


0

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.


3
Sono contento che tu abbia trovato una soluzione, potresti includere un riepilogo dei passaggi nella tua risposta, solo così questa risposta è più utile di un semplice link. Grazie!
slm

Stavo cercando un modo per automatizzare e spegnere il mio trackpad all'avvio. Il comando che ho inserito nel Terminale era 'sudo modprobe -r psmouse'. Questo avrebbe spento il trackpad durante la sessione corrente. Volevo automatizzare questo all'avvio. Ho fatto qualche ricerca e ho scritto uno script modificando il file /etc/rc.local, aggiungendo 'sudo modprobe -r psmouse. Quindi emettendo i seguenti comandi dal Terminale: 'sudo mv / nomefile /etc/init.d/' 'sudo chmod + x /etc/init.d/filename' 'sudo update-rc.d nome file predefinito' Ora il touchpad è spento all'avvio.
CatGuyTX
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.