
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.
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
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-tools
pode 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