Reply to topic

script bash inicio (resuelto)

mayko
Registered Member
Posts
3
Karma
0

script bash inicio (resuelto)

Tue Jun 16, 2020 12:47 pm
Buenas tardes.

Tengo una duda sobre poner scripts de inicios de sesión.
He creado un script bash con el siguiente código:
watch -n 600 sysctl -w vm.drop_caches=3:

La idea de este código es que cada 10 minutos se libere memoria ram eliminando el cache.
El tema está en que cuando lo pongo en [[ Preferencias del sistema > Aspecto > Arranque y Apagado > Autoarranque. ]]
y meto el script para que se ejecute nada más iniciar sesión.
dicho script no llega a iniciarse.

He probado a cambiar el documento de sudoers....con sudo visudo... y añadi en el documento la siguiente linea
mayko localhost=NOPASSWD: /home/mayko/scripts/liberarram.sh.
Y tampoco funciona. El script no se ejecuta nada más iniciar sesión.

He estado buscando por internet como poder ejecutar scripts como root sin poner la contraseña para poder realizar justamente esta tarea: Que se ejecute el script anteriormente mencionado nada más iniciar sesión. Y no lo consigo. Espero que se entienda bien.

Con este otro script he comprobado una cosa:
kdialog --error "Hola"
watch -n 600 sysctl -w vm.drop_caches=3:

Al poner en la terminal ./liberarram he comprobado que se ejecuta la notificación pero no el segundo comando.

Con este otro script he comprobado una cosa:
kdialog --error "Hola"
sudo watch -n 600 sysctl -w vm.drop_caches=3:

Al poner en la terminal ./liberarram he comprobado que se ejecuta la notificación y me pide la contraseña para ejecutar el segundo comando.
Pero yo tengo entendido (Nunca lo he conseguido) que cambiando el archivo sudoers
y añadiendo la linea localhost=NOPASSWD: /home/mayko/scripts/liberarram.sh.
puedes concretar que scripts se pueden ejecutar sin necesidad de ponerle contraseña.

Gracias por la atencion

Last edited by mayko on Fri Jun 19, 2020 2:41 pm, edited 4 times in total.
soyprogramador
Registered Member
Posts
5
Karma
0

Re: script bash inicio

Wed Jun 17, 2020 12:10 am
Hola acabo de intentar utilizar un script simple para ver si podía ayudar.

script.sh
Code: Select all
chromium-browser --user-agent="Mozilla/5.0 (X11; CrOS armv7l 6946.86.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36" & disown


Al inicio pensé que quizás debía colocar el archivo como "ejecutable", no funcionó 🙄.

Buscando en la documentación:
Code: Select all
https://docs.kde.org/trunk5/es/kde-workspace/kcontrol/autostart/index.html#current


Dice "Plasma™ solo puede leer scripts que tienen la extensión .sh para los modos Antes de iniciar la sesión y Apagar."

Además en la misma documentación dice que los archivos de escritorios y scripts son copiados a:
Code: Select all
$HOME/.config/autostart

pero en realidad fueron copiados a:
Code: Select all
$HOME/.config/autostart-scripts


Supongo que será la versión de Plasma.

Así que, solo he cambiado en "Settings" -> "Startup & Shutdown" -> "Autostart" -> "Script File" (Su script) [Before session startup] (Antes de iniciar la sesión), luego reinicié y funcionó sin problema. Por lo que supongo que tienes esa opción o cambiar a otro sistema de script que no sea bash?. No tengo idea si habrá otro modo, supongo que si.

Espero le haya servido de ayuda.

Adios 😎.
mayko
Registered Member
Posts
3
Karma
0

Re: script bash inicio

Wed Jun 17, 2020 8:07 am
El script que has usado anteriormente de que se habra una pestaña de un navegador (Si es que solo hace eso porque no lo se)
No me pide contraseña ni nada por el estilo en la terminal. Si añado ese script, se va a ejecutar seguro porque no necesita permisos del usuario root para ejecutarse.
-
En cambio, el script ese que hice, el comando sysctl si que pide permisos de super usuario para poder ser usado. Ahí de que nunca llegue a ejecutarse.
Por eso intenté hacer lo de modificar el archivo sudoers para que no pidiera contraseña en ese script, pero no funcionó. De hecho nunca he conseguido que funcione pese a que en muchos blogs te dice que lo hagas así.
-
Al final no resuelvo mi problema: Pero muchas gracias por la ayuda y ese tipo de código para abrir el navegador. "Lo estudiaré para ver si consigo hacer que un antivirus solo analice las cosas que descargue como script personal.
soyprogramador
Registered Member
Posts
5
Karma
0

Re: script bash inicio

Wed Jun 17, 2020 1:29 pm
Hola, así es, el script solo abre el navegador cambiándole el "user agent".

En cuanto al script que intentas hacer correr al inicio, solo puedo comentar teóricamente. Yo intentaría cambiarle los permisos, hacerlo ejecutable con permiso... 755? e incluso cambiar su propiedad a "root"?.

Además agrego un enlace con más información.
Code: Select all
https://askubuntu.com/questions/290099/how-to-run-a-script-during-boot-as-root/713879


Espero logres encontrar una solución! Me has dejado con la duda, si lo consigues espero puedas compartirlo.


Adios 😎.
mayko
Registered Member
Posts
3
Karma
0

SOLUCIÓN ENCONTRADA: CRONTAB

Fri Jun 19, 2020 2:41 pm
Conseguí resolver el problema utilizando la herramienta de crontab siguiendo el siguiente manual:
https://www.redeszone.net/2017/01/09/ut ... ar-tareas/
-
Para comprobar que funcionaría esa herramienta, utilicé este script.:
#!/bin/bash

a=$(cat /proc/meminfo | grep MemFree| grep -Po "\d+")
# Acabamos de guardar en la variable a el valor de memoria ram libre que queda en el sistema


echo "VALOR INICIAL: $(($a/1024)) Mb" >> /home/mayko/Desktop/memoria_ram
# En un documento de texto llamado memoria_ram almaceno el valor inicial de memoria ram para
#Comprobar después que el script va a funcionar corréctamente


/sbin/sysctl -w vm.drop_caches=3
# Acabamos de liberar memoria ram eliminando la caché. (Si no me equivoco)



b=$(cat /proc/meminfo | grep MemFree| grep -Po "\d+")
# Vuelvo a guardar el valor de memoria ram libre pero ahora en otra variable llamada b.



echo "VALOR FINAL: $(($b/1024)) Mb" >> /home/mayko/Desktop/memoria_ram
echo "MEMORIA LIBERADA: $((($b-$a)/1024)) Mb" >> /home/mayko/Desktop/memoria_ram
# Con los comandos anteriores almaceno en ese archivo de texto los otros datos para comprobar que
# Que el script funcionará corréctamente.
# Fin del Script

Después de darle permisos de ejecución al script con sudo chmod u+x liberar.sh
En la terminal puse sudo crontab -e y añadí la siguiente linea al documento.
*/1 * * * * /home/mayko/scripts/liberar.sh.

Que significa que cada minuto se va a ejecutar dicho script.

En el escritorio se generó el documento memoria_ram y al abrirlo vemos que este método funciona pues crontab ejecuta el scripts sin ningún problema
y libera la memoria ram pasado el intervalo de tiempo de un minuto.

El script final que utilizaré para liberar la memoria ram cada 10 minutos será este:
#!/bin/bash
/sbin/sysctl -w vm.drop_caches=3

y en el documento crontab la siguiente linea
*/10 * * * * /home/mayko/scripts/liberar.sh.

Que significa que cada 10 minutos se ejecutará el script anteriormente mencionado

 
Reply to topic

Bookmarks



Who is online

Registered users: Baidu [Spider], Bing [Bot], farid, Google [Bot], jmacleod, rabi, robgriff444, Section_8, Sogou [Bot], WynterTheCat, Yahoo [Bot]