[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Script bash se cierra al intentar ejecutarse



El lunes, 27 abr 2015, a las 00:45 UTC+2 horas,
Frederit Mogollon escribió:

>Buenas tardes listeros...
>
> Primero el contexto para esta consulta:
>
> Ando en un sistema Debian 7 Wheezy + IceWM, con 512 MB de RAM, 476 MB
> de swap y un HD de 10 GB, con la home en una partición separada.
> Aun lo estoy terminando de configurar... :)  y se que estoy rompiendo
> la regla de que la swap debe ser el doble de la RAM.

Todavía me pregunto por qué se ha hecho tan famosa esa regla.

> Antes de todo, aviso que no se nada de programación, pero estoy
> intentando aprender modificando scripts existentes y observando el
> resultado de su ejecución.
>
> Tengo 2 scripts llamados por mi como "gxmessage-memfree" y  "memfree",
> pero inicialmente tomados desde
>https://debianfacil.wordpress.com/2010/03/19/gxmessage/     y
>http://geekland.eu/limpiar-nuestro-sistema/, respectivamente.
>
> Ambos tienen permisos de ejecución y sus contenidos, modificados por
> mi persona, son:
>
> gxmessage-memfree
>
> ############################################################################
> #!/bin/bash
>
> gxmessage -center -geometry 280x200 -title "Memfree" -buttons
> "Ok:1","Exit:2" -default "Exit" -font "Sans
> bold 12" -wrap "Cuidado: Usar sólo si la cantidad de memoria SWAP
> USADA es menor a la RAM USABLE.
> Si lo es, presione Ok.
> Si no lo es, presione Exit."
>
> case $? in
>
> 1) x-terminal-emulator  -T \"memfree\" -e sh -c \"su-to-root -c
> '/usr/bin/memfree.sh'\";;
> 2) ;;
>
> esac
> ############################################################################
>
>
>
> memfree.sh
>
> ############################################################################
> #!/bin/bash
>
> echo “Limpiando la caché~ “;
>
> sync ; echo 2 > /proc/sys/vm/drop_caches
>
> echo “Limpiando Swap~ “;
>
> swapoff -a && swapon -a
> ############################################################################
>
> Estoy asignando una entrada en el menú de aplicaciones de IceWM al
> script gxmessage-memfree, de forma que al dar clic sobre la misma, le
> de la opción al usuario de ejecutar el script memfree, solamente si la
> cantidad de swap usada es menor a la cantidad de RAM libre.
>
> La entrada en el menú esta escrita así:
>
> menu "Mantenimiento" folder {
> prog    "Memfree: Liberar memoria cache y swap"
> "/usr/share/pixmaps/memfree.xpm"
> /bin/sh -c "/home/tesistas/Descargas/scripts/gxmessage-memfree"
> }
>
> donde obviamente mi usuario es "tesistas".
>
>
> Bien, ahora el problema:
>
> Al hacer clic en la entrada del menú, aparece el mensaje en el
> escritorio, pero al dar clic en el "botón Ok", aparece una ventana de
> xterm y se cierra al segundo, sin que se ejecute el script memfree.

Fíjate que en la primera entrada de menú (gxmessage-memfree) pides al
terminal que ejecute un script, por lo que este permanece hasta que tú
lo cierras. En el segundo sin embargo ejecutas sh que, a su vez,
ejecuta el script bash memfree.sh. Cuando este termina se cierra. ¿Por
qué no lo haces de manera similar al primero si quieres que el terminal
permanezca abierto?

> Aunque sigo leyendo sobre bash y sh, aun no llego a comprender porque
> no se ejecuta el segundo script, cuando usando directamente desde
> menú, el script memfree si lo hace.
>
> Imagino que sera algo sencillo de resolver y tontería mía que no logro
> verlo. Así que acudo a vuestra sapiencia y paciencia para que me
> ayuden a dar con la solución.
>
> Saludos
>
> fdm

Saludos.
-- 
Manolo Díaz


Reply to: