Come eseguire rc.local come utente normale?


8

Ho qualche encomio che desidero essere chiamato subito dopo il login, incluso 'startx', e ho pensato che rc.localsembra un bel posto per loro, ma il problema è che rc.localviene eseguito come root e non lo voglio, ovviamente posso farlo qualcosa come questo:

su username -c somecommend-here

Ma sto cercando un modo per eseguire l'intero 'rc.local' come utente normale, o forse c'è un posto migliore per inserire il mio codice?

PS. Sto usando Ubuntu-mini-remix 1104i386

Grazie


AFAIK rc.local viene eseguito in parallelo per accedere alla fine della sequenza di avvio. Voglio dire, verrà eseguito anche se non si accede, ma è possibile accedere e potrebbe essere in attesa di esecuzione.
Javier Rivera,

@JavierRivera Quindi quale sarebbe la soluzione?
omeid,

Risposte:


6

Il modo più semplice per avviare un comando quando un utente accede è quello di creare un .desktopfile per il comando e incollarlo nella ~/.config/autostartcartella. Che aspetto ha il file desktop? Ecco un esempio che recupera la home page Chiedi a Ubuntu wgetogni volta che l'utente accede:

[Desktop Entry] 
Name=Launch wget
Comment=Fetches the Ask Ubuntu home page.
Exec=wget http://askubuntu.com/

Non sembra una buona idea avviare startx(come richiesto dall'OP) dopo l' accesso grafico.
enzotib,

@enzotib: non si fa menzione di un accesso grafico.
Nathan Osman,

Forse ho capito male la domanda, ho creduto che l'utente avrebbe per iniziare startxda rc.local. Siamo spiacenti
enzotib il

1

Non conosco le differenze tra /etc/rc.local e un crontab, ma in genere creo un account di servizio e aggiungo il lavoro appropriato. Ad esempio: sudo crontab -u p4padmin -e

@reboot ~/bin/p4p -d -r ~/var/p4p/cache/foo -p 2020 -t depot:2020 -L ~/var/p4p/log/foo.log

Non è necessario effettuare l'accesso per eseguire il servizio.


0

Il modo di Linux è di aggiungere i tuoi comandi ~/.bashrcinvece di /etc/rc.local.

Ogni utente ha un .bashrcnella sua home directory. Questo file di script viene eseguito automaticamente subito dopo l'accesso dell'utente. Viene eseguito con le credenziali dell'utente, pertanto sunon è necessario un comando.

Mi sembra che sia esattamente quello che stai cercando.


Questo non è del tutto corretto, in quanto .bashrcnon viene letto quando un utente accede utilizzando il normale lightdm, ad esempio.

Ho concluso troppo in fretta che l'utente stava usando un login a riga di comando invece di un display manager a causa del comando startx "manuale", ha detto .... il mio male :-)
Thom
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.