configurando perfis de processo no Ubuntu

configurando perfis de processo no Ubuntu

Eu queria saber se é possível configurar perfis para meu laptop Ubuntu de forma que:

  • Desative Apache/mysql/postgresql se estiver executando em modo de bateria
  • Desative todos os processos que estão tentando se conectar à Internet, se a conexão sem fio estiver desativada.

Responder1

Eu nunca me deparei com o conceito de tal perfil no Ubuntu antes, então acho que você não pode fazer isso imediatamente.

Posso estar errado ao assumir isso, o que seria bom. No entanto, supondo que não exista um aplicativo para fazer isso e eu tenha um forte desejo de configurá-lo, agora vou fazer isso.

Vou escrever isso presumindo que você esteja executando o Gnome, já que esse é o ambiente que conheço melhor. O fluxo do processo subjacente ainda deverá ser válido se você estiver em algum outro ambiente de área de trabalho ou console.

O Gnome permite configurar alguns aspectos do comportamento do sistema viaSistema > Preferências > Gerenciamento de energia. Isso chamapreferências de poder do gnome, e é aplicado pelogerenciador de energia gnomeprocesso daemon. Na página do projeto gnome sabemos quegerenciador de energia gnomedepende do HAL para saber se o laptop está operando com bateria.

gerenciador de energia gnome

Então, acendagerenciador de dispositivos gnomepara ver o que HAL sabe. Encontre a entrada parabateria. Se você vir apenas uma guia de resumo, ativeExibir > Propriedades do dispositivo. Sim, existem as duas chaves que precisamos:bateria.recarregável.está_descarregandoebateria.recarregável.está_carregando

gerenciador de dispositivos gnome

Agora que sabemos o que precisamos, temos que descobrir como acessar isso através da linha de comando. Felizmente, o HAL vem com ferramentas de linha de comando para acessar essas informações. Nós primeiro corremos

dispositivo hal | menos

e procure obateria.rechareable.is_dischargingchave. Faça backup para obter o bloco que detalha as informações da bateria:

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)

Note oudido dispositivo. Agora, consulte a propriedade que você deseja usando ohal-get-propriedadecomando:

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

Agora que sabemos como acessar o status da bateria, coloque isso em um script semelhante ao daemon. Abaixo está um modelo básico que considera o intervalo de pesquisa como o primeiro parâmetro. Você pode imaginar a verificação de erros e outras construções interessantes à vontade:

#!/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 do script, você deve usar os scripts de inicialização para desligar o mysql etc.

sudo /etc/init.d/mysqld parar

Como podemos melhorar isso? Depois de executar isso por um tempo e resolver todos os problemas, torne-o um serviço que inicia na inicialização. Verifique esta respostaaquipara obter instruções sobre como adicionar um script para iniciar automaticamente na inicialização.

Se você decidir não fazer isso, verifique istoperguntapara obter instruções sobre como permitir que este script execute comandos que requerem permissões de root.

Sei que respondi apenas uma parte da sua pergunta, mas você poderá incorporar a seção sem fio de maneira semelhante. Use HAL para entender quando a conexão sem fio está desativada.

Não sei exatamente como você verifica e desabilita todos os processos que tentam se conectar à rede, mas os comandos a seguir podem ajudá-lo nessa tarefa:

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

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

Responder2

laptop-mode-toolspode fazer o que você está pedindo.

   /etc/laptop-mode/conf.d/start-stop-programs.conf
       O módulo start-stop-programs permite iniciar ou parar programas
       quando o computador muda para um estado de energia diferente.

       CONTROL_START_STOP
                 Se esta opção estiver habilitada, as ferramentas do modo laptop irão automaticamente
                 iniciar e parar daemons ou outros programas para você. O
                 configuração real de quais daemons devem ser
                 parado/iniciado é feito colocando links para o init dos daemons
                 scripts nos seguintes diretórios:

                    /etc/laptop-mode/batt-start

                    /etc/laptop-mode/batt-stop

                    /etc/laptop-mode/lm-ac-start

                    /etc/laptop-mode/lm-ac-stop

                    /etc/laptop-mode/nolm-ac-start

                    /etc/laptop-mode/nolm-ac-stop
                 Como você provavelmente já deve ter adivinhado, os diretórios no formato "X-
                 stop-daemons" deve conter scripts de inicialização de daemons que você
                 deseja parar no modo X, enquanto os diretórios do formato "X-
                 start-daemons" deve conter scripts de inicialização de daemons que
                 você deseja iniciar no modo X. Claro, é possível colocar
                 também no seu próprio manejo dos modos: o único requisito
                 nos scripts nos diretórios é que eles lidam com o
                 Comandos "start" e "stop", como os scripts de inicialização costumam fazer.

                 A ordem do manuseio do script é a seguinte. Quando um
                 entra no modo, as ações do modo anterior são desfeitas,
                 Em ordem inversa. Isto significa que se o modo anterior tivesse
                 feito "daemon1 stop", "daemon2 stop" e "daemon3 start", então
                 as ações de desfazer serão "daemon3 stop", "daemon2 start",
                 "daemon1 iniciar". Depois disso, os scripts de parada para o novo
                 mode são chamados e, em seguida, os scripts iniciais são chamados.
                 Observe que não há detecção de pontos em comum
                 entre os modos neste ponto, ou seja, se o modo que você está vindo
                 de e o modo em que vocês especificarão que um daemon
                 "X" deve ser parado, então o daemon será reiniciado
                 (ou seja, iniciado) ao sair do modo anterior e, em seguida,
                 parou novamente.

       BATT_STOP

       BATT_START

       LM_AC_STOP

       LM_AC_START

       NOLM_AC_STOP

       NOLM_AC_START

                 Estas opções permitem parar serviços (através de seu init
                 scripts) em certos estados de energia. Especifique um espaço separado
                 lista de nomes de serviços nessas opções. Esses serviços são
                 iniciado/parado junto com os arquivos dos diretórios
                 Mencionado acima.

É possível desabilitar sua função principal (desativar o HDD) no arquivo de configuração, ele ainda executará outras ações.

Responder3

Você pode usar este comando para parar ou iniciar serviços:

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

informação relacionada