Einrichten von Prozessprofilen unter Ubuntu

Einrichten von Prozessprofilen unter Ubuntu

Ich habe mich gefragt, ob es möglich ist, Profile für mein Ubuntu-Laptop so einzurichten, dass:

  • Deaktivieren Sie Apache/MySQL/PostgreSQL, wenn Sie im Batteriemodus arbeiten
  • Deaktivieren Sie alle Prozesse, die versuchen, eine Verbindung zum Internet herzustellen, wenn die drahtlose Verbindung deaktiviert ist.

Antwort1

Das Konzept eines solchen Profils ist mir in Ubuntu noch nie begegnet, daher nehme ich an, dass dies nicht auf Anhieb möglich ist.

Ich könnte mich in dieser Annahme irren, was schön wäre. Angenommen, es gibt jedoch keine App dafür und ich hätte den starken Wunsch, dies einzurichten, würde ich es folgendermaßen angehen.

Ich gehe davon aus, dass Sie Gnome verwenden, da ich diese Umgebung am besten kenne. Der zugrunde liegende Prozessablauf sollte auch dann gültig sein, wenn Sie sich in einer anderen Desktop- oder Konsolenumgebung befinden.

Mit Gnome können Sie einige Aspekte des Systemverhaltens konfigurieren überSystem > Einstellungen > EnergieverwaltungDies erfordertGnome-Power-Einstellungen, und es wird durchgesetzt durch dieGnome-EnergiemanagerDaemon-Prozess. Von der Gnome-Projektseite wissen wir, dassGnome-Energiemanagerhängt von HAL ab, um zu wissen, ob der Laptop im Batteriebetrieb läuft.

Gnome-Energiemanager

Also, Feuer freiGnome-Gerätemanagerum zu sehen, was HAL weiß. Finden Sie den Eintrag fürBatterie. Wenn Sie nur eine Übersichtsregisterkarte sehen, aktivieren SieAnsicht > Geräteeigenschaften. Jupp, hier sind die beiden Schlüssel, die wir brauchen:wiederaufladbare Batterie wird entladenUndwiederaufladbare Batterie wird aufgeladen

Gnome-Gerätemanager

Jetzt wissen wir, was wir brauchen. Wir müssen herausfinden, wie wir über die Kommandozeile darauf zugreifen können. Hilfreicherweise verfügt HAL über Kommandozeilentools, um auf diese Informationen zuzugreifen. Wir führen zuerst aus

Hal-Gerät | weniger

und suchen Sie nach demwiederaufladbare Batterie wird entladenSchlüssel. Sichern Sie, damit Sie den Block mit den detaillierten Informationen zu Ihrer Batterie erhalten:

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)

Beachten Sie dasudides Gerätes. Fragen Sie nun die gewünschte Eigenschaft ab mit demHal-Get-EigenschaftBefehl:

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

Jetzt wissen wir, wie wir auf den Batteriestatus zugreifen können. Fügen wir dies in ein Daemon-ähnliches Skript ein. Unten sehen Sie eine einfache Vorlage, die das Abfrageintervall als ersten Parameter verwendet. Sie können es nach Belieben mit Fehlerprüfungen und anderen nützlichen Konstrukten aufpeppen:

#!/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);

Innerhalb des Skripts sollten Sie die Startskripte verwenden, um MySQL usw. sauber herunterzufahren

sudo /etc/init.d/mysqld stoppen

Wie können wir das verbessern? Wenn Sie dies eine Weile ausgeführt und alle Probleme behoben haben, machen Sie daraus einen Dienst, der beim Booten gestartet wird. Lesen Sie diese AntwortHierAnweisungen zum Hinzufügen eines Skripts, das beim Hochfahren automatisch gestartet wird.

Wenn Sie sich dazu entschließen, dies nicht zu tun, überprüfen Sie diesFragefür Anweisungen, wie Sie mit diesem Skript Befehle ausführen können, die Root-Berechtigungen erfordern.

Mir ist klar, dass ich nur einen Teil Ihrer Frage beantwortet habe, aber Sie sollten in der Lage sein, den Abschnitt über drahtlose Verbindungen auf ähnliche Weise einzubinden. Verwenden Sie HAL, um zu verstehen, wann drahtlose Verbindungen deaktiviert sind.

Ich bin nicht ganz sicher, wie Sie alle Prozesse prüfen und deaktivieren, die versuchen, eine Verbindung zum Internet herzustellen, aber die folgenden Befehle könnten Ihnen dabei helfen:

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

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

Antwort2

laptop-mode-toolskann tun, was Sie verlangen.

   /etc/laptop-mode/conf.d/start-stop-programs.conf
       Mit dem Modul Start-Stopp-Programme können Sie Programme starten oder stoppen
       wenn der Computer in einen anderen Energiezustand wechselt.

       STEUERUNG_START_STOP
                 Wenn diese Option aktiviert ist, werden die Tools im Laptop-Modus automatisch
                 Daemons oder andere Programme automatisch für Sie starten und stoppen.
                 tatsächliche Konfiguration der zu verwendenden Daemons
                 Gestoppt/gestartet wird durch das Setzen von Links zu den Init-Dateien der Daemons
                 Skripte in den folgenden Verzeichnissen:

                    /etc/Laptop-Modus/Batt-Start

                    /etc/Laptop-Modus/Batt-Stop

                    /etc/Laptop-Modus/lm-ac-start

                    /etc/Laptop-Modus/lm-ac-stop

                    /etc/Laptop-Modus/nolm-ac-start

                    /etc/Laptop-Modus/nolm-ac-stop
                 Wie Sie wahrscheinlich schon erraten haben, sind die Verzeichnisse der Form "X-
                 stop-daemons" sollte Init-Skripte von Daemons enthalten, die Sie
                 wollen im Modus X gestoppt, während die Verzeichnisse der Form "X-
                 start-daemons" sollte Init-Skripte von Daemons enthalten, die
                 Sie möchten im Modus X starten. Natürlich ist es möglich,
                 auch im eigenen Umgang mit Modi: die einzige Voraussetzung
                 an den Skripten in den Verzeichnissen ist, dass sie die
                 „Start“- und „Stop“-Befehle, wie es Init-Skripte normalerweise tun.

                 Die Reihenfolge der Skriptbehandlung ist wie folgt. Wenn ein
                 Modus wird aufgerufen, die Aktionen des vorherigen Modus werden rückgängig gemacht,
                 in umgekehrter Reihenfolge. Das bedeutet, wenn der vorherige Modus
                 erledigt "daemon1 stop", "daemon2 stop" und "daemon3 start", dann
                 Die rückgängig zu machenden Aktionen sind "daemon3 stop", "daemon2 start",
                 "daemon1 start". Danach werden die Stop-Skripte für den neuen
                 Der Modus wird aufgerufen und anschließend werden die Startskripte aufgerufen.
                 Bitte beachten Sie, dass es keine Erkennung von Gemeinsamkeiten gibt
                 zwischen den Modi an dieser Stelle, d. h. wenn der Modus, in dem Sie kommen
                 von und der Modus, in dem Sie einen Daemon verwenden möchten, geben beide an, dass
                 "X" sollte gestoppt werden, dann wird der Daemon wieder gestartet
                 (das heißt, gestartet) beim Verlassen des vorherigen Modus, und dann
                 wieder angehalten.

       BATT_STOP

       BATT_START

       LM_AC_STOP

       LM_AC_START

       NOLM_AC_STOP

       NOLM_AC_START

                 Mit diesen Optionen können Sie Dienste stoppen (über ihre Init
                 Skripte) in bestimmten Energiezuständen. Geben Sie ein durch Leerzeichen getrenntes
                 Liste der Dienstnamen in diesen Optionen. Diese Dienste sind
                 gestartet/gestoppt zusammen mit den Dateien aus den Verzeichnissen
                 oben erwähnt.

Es ist möglich, die Hauptfunktion (Herunterfahren der Festplatte) über die Konfigurationsdatei zu deaktivieren. Andere Aktionen werden jedoch weiterhin ausgeführt.

Antwort3

Mit diesem Befehl können Sie Dienste stoppen oder starten:

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

verwandte Informationen