¿Cómo ejecutar rc.local como usuario normal?

8

Tengo algunos elogios que deseo que me llamen inmediatamente después de iniciar sesión, incluido 'startx', y pensé que rc.localparece un buen lugar para ellos, pero el problema es que rc.localse ejecuta como root y no quiero eso, obviamente puedo hacerlo algo como esto:

su username -c somecommend-here

Pero estoy buscando una manera de ejecutar todo el 'rc.local' como usuario normal, ¿o tal vez hay un lugar mejor para poner mi código?

PD. Estoy usando Ubuntu-mini-remix 1104i386

Gracias

omeid
fuente
AFAIK rc.local se ejecuta en paralelo al inicio de sesión al final de la secuencia de arranque. Quiero decir, se ejecutará incluso si no inicias sesión, pero puedes iniciar sesión y podría estar pendiente de ejecución.
Javier Rivera
@JavierRivera Entonces, ¿cuál sería la solución?
omeid

Respuestas:

6

La forma más fácil de iniciar un comando cuando un usuario inicia sesión es crear un .desktoparchivo para el comando y pegarlo en la ~/.config/autostartcarpeta. ¿Cómo se ve el archivo de escritorio? Aquí hay un ejemplo que recupera la página de inicio de Ask Ubuntu wgetcada vez que el usuario inicia sesión:

[Desktop Entry] 
Name=Launch wget
Comment=Fetches the Ask Ubuntu home page.
Exec=wget http://askubuntu.com/
Nathan Osman
fuente
No parece una buena idea iniciar startx(como solicitó el OP) después del inicio de sesión gráfico.
enzotib
@enzotib: No se menciona un inicio de sesión gráfico.
Nathan Osman
Tal vez no he entendido bien la pregunta, yo creía que el usuario tendría que empezar startxdesde rc.local. Lo sentimos
enzotib
1

No sé las diferencias entre /etc/rc.local y un crontab, pero generalmente hago una cuenta de servicio y agrego el trabajo apropiado. Por ejemplo: 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

No tiene que iniciar sesión para que se ejecute el servicio.

Stephen Niedzielski
fuente
0

La forma de Linux es agregar sus comandos a en ~/.bashrclugar de /etc/rc.local.

Cada usuario tiene un .bashrcen su directorio de inicio. Este archivo de script se ejecuta automáticamente justo después de que un usuario inicia sesión. Se ejecuta con las credenciales del usuario, por sulo que no se necesita un comando.

Me parece que esto es exactamente lo que estás buscando.

thom
fuente
Esto no es del todo correcto, ya .bashrcque no se lee cuando un usuario inicia sesión usando lo normal lightdm, por ejemplo.
Llegué a la conclusión demasiado rápido que el usuario estaba utilizando un inicio de sesión de línea de comandos en lugar de un gestor de visualización debido a la orden startx "manual" mencionó .... mi mal :-)
Thom