configurar perfiles de proceso en ubuntu

configurar perfiles de proceso en ubuntu

Me preguntaba si es posible configurar perfiles para mi computadora portátil Ubuntu de modo que:

  • Deshabilite apache/mysql/postgresql si se ejecuta en modo batería
  • Deshabilite todos los procesos que intentan conectarse a Internet, si la conexión inalámbrica está deshabilitada.

Respuesta1

No me había encontrado antes con el concepto de un perfil de este tipo en Ubuntu, así que supongo que no se puede hacer esto de inmediato.

Podría equivocarme al suponer esto, lo cual sería bueno. Sin embargo, suponiendo que no haya una aplicación para hacer esto y que tuviera un fuerte deseo de configurarlo, ahora lo haría.

Voy a escribir esto asumiendo que estás ejecutando Gnome, ya que ese es el entorno que mejor conozco. El flujo de proceso subyacente aún debería ser válido si se encuentra en algún otro entorno de escritorio o consola.

Gnome le permite configurar algunos aspectos del comportamiento del sistema a través deSistema > Preferencias > Administración de energía. esto llamapreferencias-de-poder-de-gnome, y es ejecutado por eladministrador-de-energía-gnomeproceso demonio. Desde la página del proyecto gnome sabemos queadministrador-de-energía-gnomeDepende de HAL saber si la computadora portátil está funcionando con batería.

administrador-de-energía-gnome

Entonces, enciendeadministrador-de-dispositivos-gnomepara ver qué sabe HAL. Encuentra la entrada parabatería. Si solo ve una pestaña de resumen, habilítelaVer > Propiedades del dispositivo. Sí, existen las dos claves que necesitamos:batería.recargable.está_descargandoybatería.recargable.está_cargando

administrador-de-dispositivos-gnome

Ahora que sabemos lo que necesitamos, tenemos que descubrir cómo acceder a él a través de la línea de comando. Afortunadamente, HAL viene con herramientas de línea de comandos para acceder a esta información. primero corremos

hal-dispositivo | menos

y buscar elbatería.recargable.está_descargandollave. Haga una copia de seguridad para obtener el bloque que detalla la información de su batería:

56: udi = '/org/freedesktop/Hal/devices/computer_power_supply_battery_BAT0'
  linux.subsystem = 'power_supply'  (string)
  info.capabilities = { 'battery' } (string list)
  info.subsystem = 'power_supply'  (string)
  info.product = 'DELL CC1546'  (string)
  info.udi = '/org/freedesktop/Hal/devices/computer_power_supply_battery_BAT0'  (string)
  battery.type = 'primary'  (string)
  battery.reporting.technology = 'Li-ion'  (string)
  battery.technology = 'lithium-ion'  (string)
  battery.model = 'DELL CC1546'  (string)
  battery.vendor = 'Panasonic'  (string)
  battery.voltage.design = 11100  (0x2b5c)  (int)
  battery.voltage.unit = 'mV'  (string)
  battery.reporting.design = 4700  (0x125c)  (int)
  battery.reporting.unit = 'mAh'  (string)
  battery.serial = '1076'  (string)
  battery.present = true  (bool)
  battery.voltage.current = 12712  (0x31a8)  (int)
  battery.reporting.rate = 2765  (0xacd)  (int)
  battery.is_rechargeable = true  (bool)
  battery.rechargeable.is_charging = true  (bool)
  battery.rechargeable.is_discharging = false  (bool)
  battery.reporting.current = 3407  (0xd4f)  (int)
  battery.reporting.last_full = 3963  (0xf7b)  (int)
  battery.charge_level.current = 37817  (0x93b9)  (int)
  info.parent = '/org/freedesktop/Hal/devices/computer'  (string)
  linux.sysfs_path = '/sys/devices/LNXSYSTM:00/device:00/PNP0C0A:00/power_supply/BAT0'  (string)
  battery.charge_level.design = 52170  (0xcbca)  (int)
  battery.charge_level.percentage = 85  (0x55)  (int)
  battery.remaining_time = 723  (0x2d3)  (int)
  battery.charge_level.rate = 30691  (0x77e3)  (int)
  battery.charge_level.last_full = 43989  (0xabd5)  (int)
  info.category = 'battery'  (string)
  linux.hotplug_type = 2  (0x2)  (int)

Nota laudidel dispositivo. Ahora, consulta la propiedad que deseas usando elhal-get-propiedaddominio:

$ hal-get-property --udi /org/freedesktop/Hal/devices/computer_power_supply_battery_BAT0 --key "battery.rechargeable.is_discharging"
true

Ahora que sabemos cómo acceder al estado de la batería, inserte esto en un script tipo demonio. A continuación se muestra una plantilla básica que toma el intervalo de sondeo como primer parámetro. Puedes imaginarlo con la verificación de errores y otras construcciones interesantes en tu tiempo libre:

#!/usr/bin/env perl

my ($sleep_duration) = @ARGV;
print "Sleep:$sleep_duration\n";

do{
        my $status = qx(hal-get-property --udi /org/freedesktop/Hal/devices/computer_power_supply_battery_BAT0 --key "battery.rechargeable.is_discharging");
        if ($status =~ /true/)
        {
                print "On battery power\n";
                # shut down apache
                # shut down mysql
                # shut down postgresql

        }
        sleep $sleep_duration;
} while (true);

Dentro del script, debes usar los scripts de inicio para cerrar mysql limpiamente, etc.

sudo /etc/init.d/mysqld detener

¿Cómo podemos mejorar esto? Una vez que haya ejecutado esto por un tiempo y haya solucionado todos los problemas, conviértalo en un servicio que se inicie en el arranque. revisa esta respuestaaquípara obtener instrucciones sobre cómo agregar un script para que se inicie automáticamente durante el arranque.

Si decides no hacer esto, marca estopreguntapara obtener instrucciones sobre cómo permitir que este script ejecute comandos que requieren permisos de root.

Me doy cuenta de que solo respondí una parte de tu pregunta, pero deberías poder incorporar la sección inalámbrica de manera similar. Utilice HAL para saber cuándo la conexión inalámbrica está desactivada.

No estoy exactamente seguro de cómo verificar y deshabilitar todos los procesos que intentan conectarse a la red, pero los siguientes comandos pueden ayudarlo con esa tarea:

# list all processes using port 80
lsof -i tcp:80

#list programs connected via tcp 
#include -u to include udp connections
sudo netstat -ntp

Respuesta2

laptop-mode-toolspuede hacer lo que estás pidiendo.

   /etc/laptop-mode/conf.d/start-stop-programs.conf
       El módulo start-stop-programs le permite iniciar o detener programas
       cuando la computadora cambia a un estado de energía diferente.

       CONTROL_START_STOP
                 Si esta opción está habilitada, las herramientas del modo portátil se activarán automáticamente.
                 iniciar y detener automáticamente demonios u otros programas por usted. El
                 configuración real de qué demonios se van a utilizar
                 detenido/iniciado se realiza colocando enlaces al inicio de los demonios
                 scripts en los siguientes directorios:

                    /etc/modo-portátil/batt-start

                    /etc/modo-portátil/batt-stop

                    /etc/modo-portátil/lm-ac-start

                    /etc/modo-portátil/lm-ac-stop

                    /etc/modo-portátil/nolm-ac-start

                    /etc/laptop-mode/nolm-ac-stop
                 Como probablemente habrás adivinado, los directorios del formulario "X-
                 stop-daemons" debe contener scripts de inicio de demonios que
                 desea detenerse en modo X, mientras que los directorios de la forma "X-
                 start-daemons" debe contener scripts de inicio de demonios que
                 desea iniciar en el modo X. Por supuesto, es posible poner
                 también en su propio manejo de modos: el único requisito
                 sobre los scripts en los directorios es que manejan el
                 Comandos "iniciar" y "detener", como suelen hacer los scripts de inicio.

                 El orden del manejo del script es el siguiente. Cuando un
                 Se ingresa al modo, las acciones del modo anterior se deshacen,
                 en orden inverso. Esto significa que si el modo anterior tuviera
                 hecho "daemon1 stop", "daemon2 stop" y "daemon3 start", luego
                 las acciones para deshacer serán "daemon3 stop", "daemon2 start",
                 "inicio daemon1". Después de eso, los scripts de parada para el nuevo
                 Se llama al modo y luego se llama a los scripts de inicio.
                 Tenga en cuenta que no se detectan puntos en común
                 entre modos en este punto, es decir, si el modo al que vienes
                 desde y el modo en el que vas a especificar que un demonio
                 "X" debe detenerse, entonces el demonio se reactivará
                 (es decir, iniciado) mientras salía del modo anterior, y luego
                 se detuvo de nuevo.

       BATT_STOP

       BATT_START

       LM_AC_STOP

       LM_AC_START

       NOLM_AC_STOP

       NOLM_AC_START

                 Estas opciones le permiten detener servicios (a través de su inicio
                 scripts) en ciertos estados de poder. Especifique un espacio separado
                 lista de nombres de servicios en estas opciones. Estos servicios son
                 iniciado/detenido junto con los archivos de los directorios
                 mencionado anteriormente.

Es posible desactivar su función principal (desactivar el disco duro) desde el archivo de configuración, pero seguirá ejecutando otras acciones.

Respuesta3

Puede utilizar este comando para detener o iniciar servicios:

sudo /etc/init.d/'preferred services' stop|start|restart

información relacionada