Wie verhindere ich, dass GNOME angehalten wird, während ich einen Kompilierungsjob beende?

7

Ich versuche, einen benutzerdefinierten Kernel für meinen Computer zu erstellen, dessen Erstellung (wie erwartet) lange dauert. Ist es möglich, meinen GNOME-Desktop daran zu hindern, den Computer anzuhalten, bis die Kompilierung abgeschlossen ist, und ihn dann anzuhalten (vorausgesetzt, ich bin für die normalerweise 30 Minuten vom Computer entfernt).

Ich möchte Suspend nicht dauerhaft deaktivieren (was über das Systemeinstellungs-Kontrollfeld einfach zu bewerkstelligen ist, aber Strom verschwendet), sondern meinen Kompilierungsjob (über PID?) Angeben und den Computer nach Abschluss anhalten lassen.

Davefiddes
quelle
Haben Sie überprüft , dass es sich beim Kompilieren auszusetzen? Das wäre wirklich seltsam ... Es sollte nur angehalten werden, wenn der Computer für eine bestimmte Zeit im Leerlauf ist - was beim Kompilieren eines Kernels nicht der Fall ist.
Rozcietrzewiacz
1
Ja. Unterbricht die Kompilierung auf jeden Fall und wird dann fortgesetzt, wenn ich zur Tastatur zurückkehre und sie aufwecke. AFAIK GNOME verwendet nur meine Anwesenheit an der Tastatur / Maus, um festzustellen, ob der Computer verwendet wird oder nicht.
Davefiddes
Welches GNOME benutzt du? GNOME 2 oder 3?
fpmurphy
Gnome 3.2 auf F16
Davefiddes

Antworten:

8

Ich habe jetzt nicht die Zeit für alle Details, aber siehe die FAQ von GNOME Power Manager " Wie kann ich meine Anwendung dazu bringen, das automatische Anhalten des Computers zu stoppen ", die auf die Inhibit()und UnInhibit()DBus-Aufrufe verweist .

Eine Einschränkung : Wenn der Prozessaufruf beendet wird, Inhibit()wird die Sperrung beendet - dbus-sendin einem Shell-Skript ist dies also nicht der Fall , aber ein Wrapper-Skript (z. B. in Python) wird benötigt.

( Bearbeiten Dieser Blog-Beitrag enthält ein wenig mehr Informationen, auch einen Python-Stub, der nützlich sein könnte.)

sr_
quelle
Sieht so aus, als müsste ich ein bisschen Python schreiben, um den Build-Prozess zu unterbinden und zu überwachen. Hmm. Vielen Dank für das Ausgraben der Details.
Davefiddes
4

Sie können das Inaktivitätszeitlimit vollständig deaktivieren.

Führen Sie beispielsweise aus, um das Zeitlimit für die Unterbrechung nur für Wechselstrom zu deaktivieren

gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 0

Ich persönlich finde es völlig dumm, ein Zeitlimit für Inaktivität zu haben, um den Computer auszusetzen, während er standardmäßig mit Wechselstrom betrieben wird, und für normale Leute keine Option, dies zu deaktivieren.

Guss
quelle
0

Sie können den Befehl make in Ihre Shell einbinden, sodass die automatische Suspendierungsfunktion des Gnoms vorübergehend deaktiviert wird.

Zunächst müssen Sie herausfinden, wie Sie Autosuspend über eine Befehlszeile aktivieren / deaktivieren. Dies ist wahrscheinlich über gconftool-2 möglich. Ein wenig Recherche und Hacken mit gconf-editor sollten helfen (ich kann nicht wirklich helfen, ich benutze keinen Gnom).

Wickeln Sie dies dann in Funktionen in Ihrer Shell ein:

disable_autosuspend()
{
    ...
}

enable_autosuspend()
{
    ...
}

Verwenden Sie danach einfach den folgenden Wrapper:

test -z $MAKEPRG && export MAKEPRG=$(which make)
make()
{
    disable_autosuspend
    $MAKEPRG $@
    enable_autosuspend
}

Die Variable MAKEPRG dient dazu, den Pfad zum tatsächlichen Make zu speichern. Der Test ist hier für den Fall, dass Sie Ihre RC-Datei neu laden möchten.

Sie können auch unmittelbar nach dem Ende der Kompilierung über dbus anhalten:

dbus-send --print-reply --system --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend
user48678
quelle
2
Oh, nun, über den von sr_ bereitgestellten Link können Sie die Wrapper enable / disable_autosuspend schreiben ... Bearbeiten oh nein, der Prozess, der
inhibit