Ejecutar un script al apagar el SO y otro al iniciar

Iniciado por Gambinoh, 4 Abril 2011, 13:17 PM

0 Miembros y 2 Visitantes están viendo este tema.

Gambinoh

Hola, intenté que se ejecutara al apagar mi sistema operativo Ubuntu un script (de Leo) para borrar los documentos recientes.

Este es el contenido del fichero al que llamé Borrar.sh:

Citar#!/bin/bash
# Pequeño script para remover "Documentos recientes" en Ubuntu, a lo rapido.
cat "$HOME/.recently-used.xbel" | grep -vi "file:" > "temporal.txt"
mv "temporal.txt" "$HOME/.recently-used.xbel"
exit 0;

Funciona correctamente al invocarlo desde cualquier usuario (sin sudo).

Este es el mismo código añadido a /home/user/.bash_logout:

Citar# ~/.bash_logout: executed by bash(1) when login shell exits.

#!/bin/bash
# Pequeño script para remover "Documentos recientes" en Ubuntu, a lo rapido.
cat "$HOME/.recently-used.xbel" | grep -vi "file:" > "temporal.txt"
mv "temporal.txt" "$HOME/.recently-used.xbel"
exit 0;

# when leaving the console clear the screen to increase privacy
if [ "$SHLVL" = 1 ]; then
   [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
fi

Pongo el mensaje aquí, porque entiendo que la temática de este foro es la más adecuada para tratarlo.

Mis dudas son si me pasé algo por alto... ¿tengo que darle permisos de ejecución a /home/user/.bash_logout? ¿Dónde falla el código que he puesto?

Resulta que casualmente también he creado otro script, que establece reglas para iptables y necesito que se ejecute al iniciarse el equipo para cualquier usuario... ¿Cuál de estos archivos sería necesario editar "a imagen del ejemplo anterior" (con .bash_logout) para que se ejecute al inicio?

Citar/etc/profile: común a todos los usuarios que se ejecuta durante el login.
/etc/bash.bashrc: común a todos los usuarios ejecutado durante la invocación de un subshell.
~/.bash_profile, ~/.bash_login o ~/.profile: particular del usuario y se ejecuta durante el login.
~/.bash_logout: particular del usuario y se ejecuta cuando finaliza la sesión.
~/.bashrc: particular del usuario y se ejecuta durante la invocación de un subshell.

leogtz

Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Gambinoh

#2
Cita de: Leo Gutiérrez. en  4 Abril 2011, 14:32 PM
Lee esto:
http://www.jmarior.net/modules/news/article.php?storyid=161

Saludos.

Gracias por la info, lo he leído y al parecer explican muy bien cómo ejecutar un programa "script" al inicio del sistema, de una sesión X de GNOME y al inicio de una sesión Bash... sin embargo no logro ejecutar el script al apagar el equipo. Es decir, añadiendo el script al archivo $HOME/.bash_logout no consigo que se ejecute.

He mirado por Internet otros manuales (un poco por encima), pero simplemente señalan que para que el script se ejecute en el apagado, basta con añadirlo en ~/.bash_logout.

He encontrado esto:

Citarhttp://docs.google.com/viewer?a=v&q=cache:0Svk35BygsUJ:www.ucm.es/info/aulasun/archivos/SCRIPTS.pdf+script+se+ejecute+al+apagar+el+equipo+bash&hl=es&gl=es&pid=bl&srcid=ADGEEShFi913fW9psLjkI4NjNDj9FehLp2CDhMQMSbe5Md7eXaZGmFrOxYVuG1pjGKnDVVPekYlHF6n7PEMAT9r36IDegLSbxCXb2vqqIIckOZ8o-o08a16bZBtT32wV7q0ReH9Z9GB6&sig=AHIEtbTQQmsW0PJno2u76VLFo1CX3q9QEQ

RyogiShiki



Gambinoh

Cita de: gankutsuo en  5 Abril 2011, 01:30 AM
Algo más de info, esto es interesante:
http://ubuntuforums.org/archive/index.php/t-1053946.html

Ok, muchas gracias gankutsuo, le echo un vistazo y mañana respondo a ver que tal.

Gambinoh

Vale, he cambiado de estrategia, lo mismo me da que se ejecute el script al apagar el sistema que al iniciarse, así que he eliminado el código del script de $HOME/.bash_logout.

A continuación he creado el archivo /etc/init.d/Borrar.sh con el código siguiente:

Citar#!/bin/bash
# Pequeño script para remover "Documentos recientes" en Ubuntu, a lo rapido.
cat "$HOME/.recently-used.xbel" | grep -vi "file:" > "temporal.txt"
mv "temporal.txt" "$HOME/.recently-used.xbel"
exit 0;

Y le doy permisos de lectura y ejecución:

Citarsudo chmod -R u+rx,g+rx,o+rx /etc/init.d/Borrar.sh

Ahora creo los enlaces simbólicos en los diferentes niveles de ejecución:

Citarcd /etc/init.d/
sudo update-rc.d Borrar.sh defaults

Compruebo con ls que el número correspondiente a la prioridad es único:

Citarls /etc/rc2.d/
ls /etc/rc3.d/
...

Se muestra como resultado S21Borrar.sh, S21Borrar.sh, etc...

Reinicio el equipo y no se ejecuta el script :(