Problema con script en bash

Iniciado por Gambinoh, 15 Diciembre 2014, 23:59 PM

0 Miembros y 1 Visitante están viendo este tema.

Gambinoh

El caso es que siempre pense en automatizar ciertas tareas, pero dado que no me he molestado en leer un mísero tutorial de Batch scripting no se como hacerlo.

Este es el script que ejecuto al inicio (está en /etc/init.d/):
#!/bin/sh

rm -rf ~/.local/share/Trash/*/** &> /dev/null
rm -rf ~/.macromedia/ &> /dev/null

exit 0


Quisiera añadir tambien una orden para ejecutar sqlitebrowser y eliminar las tablas messages y chats del archivo ~/.Skype/user.name/main.db. También quisiera sustituir la ejecución de rm por srm del paquete secure-delete, pero hace falta ejecutarla como superusuario. Por ultimo hacer que todas estas ordenes se ejecuten al apagar o reiniciar el sistema ¿Es posible?

Eleкtro

Cita de: Gambinoh en 15 Diciembre 2014, 23:59 PMEl caso es que siempre pense en automatizar ciertas tareas, pero dado que no me he molestado en leer un mísero tutorial de Batch scripting no se como hacerlo.

Pues vas mal encaminado si te da por leer un tutorial de Batch, ya que lo que estás utilizando es Bash, la diferencia es que el primero es para Windows, y el segundo para Linux.

Saludos








Gambinoh

Ya, tienes razón, ha sido una errata.

Pero creo que has entendido el sentido de las ordenes que quiero ejecutar.

¿Algún consejo menos sarcástico?




Eleкtro

Cita de: Gambinoh en 16 Diciembre 2014, 00:07 AM
Ya, tienes razón, ha sido una errata.

Pero creo que has entendido el sentido de las ordenes que quiero ejecutar.

¿Algún consejo menos sarcástico?


No era sarcasmo, solo pretendía evitar que por error leyeras algo que no te serviría, yo no sabia si era una simple errata.

Sobre Bash, no puedo ayudarte, esperemos que alguien te pueda servir de más ayuda.

Saludos!








daryo

#4
no esta siendo sarcastico , a veces hay gente que copia y pega scripts sin saber que diablos son , tu pregunta tendria mas respuestas en linux.

si se puede el metodo depende si es en systemd y systemv cual distribucion usas?


edito
ok lei y segun tu comentario y con ese directorio que mencionas  es systemv  entonces pon tu script en el directorio para cuando se apaga
/etc/rc6.d
cuando se reinicia:
/etc/rc0.d

y dale permisos de ejecucion
chmod +x tu script.sh

todos esos scripts se ejecutaran como root
buenas

Gambinoh

#5
Gracias por la ayuda daryo, lamentablemente no se ejecuta.

Renombré el script en /etc/init.d/ a K99Script.sh, le di permisos de ejecución y creé enlaces simbólicos en /etc/rc0.d/ y /etc/rc6.d/.

Citarsudo mv /etc/init.d/K99Script /etc/init.d/K99Script.sh
sudo chmod +x /etc/init.d/K99Script.sh
sudo ln -s /etc/init.d/K99Script.sh /etc/rc0.d/K99Script.sh
...

¿Qué puede estar fallando?

Mi actual distribución es Ubuntu 12.04.

daryo

#6
pues acabo de probar hacer un script y el proceso es el siguiente
lo voy a nombrar bos
el script tiene esta estructura:

Código (bash) [Seleccionar]
#! /bin/sh
### BEGIN INIT INFO
# Provides:          scriptname
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

# siempre se ejecuta
touch /var/lock/blah
touch /home/rain/blah

# Carry out specific functions when asked to by the system
case "$1" in
 start)
   echo "Starting script blah "
   echo "Could do more here"
   ;;
 stop)
   echo "Stopping script blah"
   echo "Could do more here"
   ;;
 *)
   echo "Usage: " $0 " {start|stop}"
   exit 1
   ;;
esac

exit 0

lo que esta dentro de start se ejecuta al inicio stop cuando se apaga o reinicia  (los comentarios del inicio son importantes hasta donde dice ### END INIT INFO)

luego ponemos este script en la ubicacion:
Código (bash) [Seleccionar]
/etc/init.d/bos
le doy los permisos necesarios
Código (bash) [Seleccionar]
cd /etc/init.d/
sudo chmod 755  bos

luego para crear automaticamente los enlaces simbolicos en los directorios  rc#.d.
Código (bash) [Seleccionar]
sudo update-rc.d bos defaults

y listo
buenas

Gambinoh

Vale, he seguido los pasos exactos que indicas en tu último mensaje, pero sigue sin ejecutarse al reinicio o apagado. Esta vez no incluí extensión "sh" al nombre del script.

No lo entiendo mi script se ejecutaba antes al inicio, no tenia extensión sh, solo el contenido que indico en el primer post ¿Qué puede estar fallando?

daryo

#8
lo que quieres borrar esta en el directorio de root porque
cuando pones
Código (bash) [Seleccionar]
rm -rf ~/.local/share/Trash/*/** &> /dev/null
lo hace en el directorio de usuario del root y no tu usuario.incluso si es root prueba usando el directorio completo

si es otro ponlo
Código (bash) [Seleccionar]
rm -rf /home/miusiario/.local/share/Trash/*/** &> /dev/null

tambien
no le pongas K99 sino K01 o usa el comando
update-rc.d

no se no tengo mas ideas xD
buenas

MinusFour

Esos comandos los puedes poner en tu .xsession en tu home (~/.xsession). No hace falta crear un sysvinit script para eso. Encima, creo que el init lo corre root asi que... estaria borrando en el directorio home de root y no de tu usuario.