# Nach (erfolgreichem) Emerge Vorgang autom. herunterfahren

## Finswimmer

Hi!

Ich möchte, dass mein PC automatisch runterfährt, nachdem irgendein emerge Befehl durchgeführt wurde.

Im Moment mache ich das so:

emerge $irgendwas ; init 0

bzw.

emerge $irgendwas && echo "erfolgreich" > $file && init 0 || echo "nicht erfolgreich" > $file && init 0

Nun möchte ich aber, dass ich den Shutdown Befehl abbrechen kann.

Stoppe ich emerge, dann fährt er sofort runter.

Ich habe Folgendes im Sinn:

Ein Skript, welches alle 10 Sek. abfragt, ob emerge noch läuft. Falls ja, dann sleep.

Falls nein, dann 5 Min warten, ob wirklich kein Merge noch läuft.

Falls ja, dann wieder von vorne, wenn nein, dann shutdown.

Nun meine Frage, ob das irgendwie einfacher geht?

Danke

Tobi

----------

## franzf

Definier dir eine Datei (z.B. in /tmp) in die du einen Status schreibst:

shutdown={yes|no}

Dann schreibst du dir 2 scripte:

1) shutdown_after_merge

abfragen wie der wert in ${Status_File} ist und entsprechend runterfahren oder nicht.

2) set_shutdown_after_merge:

Übergebener Parameter setzt den Wert in ${Status_Datei}

Script 2) rufst du auf um den Wert auf "no" zu setzen wenn du nicht nach dem aktuellen merge runterfahren willst.

Dein emerge kann dann so ausschauen:

```
emerge foo bar; shutdown_after_merge
```

Aber vielleicht geht es ja noch leichter  :Wink: 

Grüße

Franz

----------

## Finswimmer

Inspiriert durch deine Idee:

```

tobi@dhcppc2 ~ $ cat /tmp/emerge-shutdown

#!/bin/bash

[ `cat /tmp/emergeshutdown` = yes ] && init 0

```

Jeder andere Inhalt führt zu nichts.

Danke

Tobi

----------

## Fabiolla

Hallo,

eine Variante wäre shutdown und sleep zu verwenden:

(mit dem sleep hat man zusätzlich nochmal die Möglichkeit das Herunterfahren zu unterbrechen)

```

emerge foo && sleep 120 && shutdown -t nn

```

Auszug aus shutdown --help

```

-t secs delay between warning and kill signal.

-c cancel a running shutdown.

```

Edit:

Im englischen Wiki gibt es dazu einige Tipps: http://gentoo-wiki.com/TIP_Shutdown_after_emerge

lg

----------

## Finswimmer

 *Fabiolla wrote:*   

> Hallo,
> 
> eine Variante wäre shutdown zu verwenden:
> 
> ```
> ...

 

Dazu müsste ich aber da sein, bzw. es bemerken, dass heruntergefahren werden soll.

Anwendungsbeispiel:

Ich starte einen langen Updatebefehl mit emerge $befehl ; init 0

Komme nach 5 Stunden wieder, der Rechner läuft noch. Ich setze mich dran und arbeite.

Dann plötzlich fährt er runter, da emerge fertig ist.

Dadurch hilft mir deine Hilfe leider nicht weiter.

Aber danke für diesen Tipp mit -c.

Tobi

----------

## schachti

```

#!/bin/bash

if emerge "$1"; then

  echo success

  sleep 300s

  poweroff

else

  echo failed

fi

```

Speichern in emerge_and_die.sh, Aufruf mit zum Beispiel emerge_and_die.sh -Du world.

----------

## Carlo

 *Finswimmer wrote:*   

> Ich möchte, dass mein PC automatisch runterfährt, nachdem irgendein emerge Befehl durchgeführt wurde.

 

Da würde ich aber sicherstellen wollen, daß sys-apps/baselayout und evtl. das eine oder andere weitere Paket nicht dabei ist, sonst fährt die Kiste mit ein bißchen "Glück" nicht wieder hoch.

----------

## think4urs11

 *Finswimmer wrote:*   

> Ich möchte, dass mein PC automatisch runterfährt, nachdem irgendein emerge Befehl durchgeführt wurde.

 

Ohne etc-update, ggf. revdep-rebuild und Co.? Mutig ...  :Wink: 

----------

## 69719

Man kann auch einfach

```

emerge categorie/package && init 0

```

eingeben.

Wenn du nun das "init 0" verhindern willst ohne emerge abzubrechen, so unterbreche es einfach durch "STRG+Z" und anschließend gibst du "fg" ein.

Damit führt er nur noch den emerge Befehl aus.

----------

## Finswimmer

 *escor wrote:*   

> Man kann auch einfach
> 
> ```
> 
> emerge categorie/package && init 0
> ...

 

Das ist gut zu wissen. Aber mein Script steht ja schon  :Wink: 

@Carlo, Think4UrS11:

Meistens geht es nur um langwierige KDE4 Kompilileraktionen. Aber danke für die Warnung/Hinweis.

Habe da nicht dran gedacht...

Tobi

----------

## Hellstorm

Also ich mach das immer so:

emerge paket && poweroff

Ich hoffe, ich mach da nicht irgendeinen großen Fehler?  :Very Happy:  Aber wieso braucht man da denn irgendein Skript?

Und poweroff geht dann nur los, wenn emerge den Status 0 zurücksendet, udn das tut es ja nicht, wenn ich einfach emerge beende oder es nicht richtig durchläuft. Von daher fährt der wirklich nur runter, wenn emerge ordentlich durchläuft.

Aber bis jetzt hat es noch immer geklappt?

----------

## schachti

 *Hellstorm wrote:*   

> Also ich mach das immer so:
> 
> emerge paket && poweroff
> 
> Ich hoffe, ich mach da nicht irgendeinen großen Fehler? 

 

Doch, machst Du - es kann Dir nämlich passieren, dass Du Dir auf diese Art das System zerschießt. Schau mal in  diesen Thread, dort hat sich jemand genau dadurch sein System zerschossen...

Man sollte sich angewöhnen, nach einem emerge immer ein revdep-rebuild und ein etc-update folgen zu lassen - bei mir sieht daher jedes world-Update so aus:

```
emerge -Du world && revdep-rebuild && dispatch-conf
```

----------

## Finswimmer

 *Hellstorm wrote:*   

> Also ich mach das immer so:
> 
> emerge paket && poweroff
> 
> Ich hoffe, ich mach da nicht irgendeinen großen Fehler?  Aber wieso braucht man da denn irgendein Skript?
> ...

 

Zum dritten Mal  :Wink: 

Wenn ich das so mache wie du und ich arbeite nebenbei, vergesse ich oft, dass emerge läuft und dann ist der PC plötzlich aus.

Mit dem Skript muss ich nur einmal zu einem beliebigen Zeitpunkt entscheidenm was ich möchte.

Außerdem soll mein Rechner immer runterfahren, wenn ich das möchte, und nicht nur, wenn emerge erfolgreich durchläuft.

Tobi

----------

## think4urs11

 *Finswimmer wrote:*   

> Wenn ich das so mache wie du und ich arbeite nebenbei, vergesse ich oft, dass emerge läuft und dann ist der PC plötzlich aus.

 

Na wenn das das einzige Problem ist - einfach emerge mit nice-Value -19 laufen lassen dann merkst du mit ziemlicher Sicherheit das ein emerge läuft  :Wink: 

back beeing serious... ein paar Möglichkeiten

Um den Emerge nicht zu vergessen:

a) Hintergrundbild ändern nach (rot auf schwarz) 'we are updating right now'

b) Screensaver mit Passwortschutz+Laufschrift, gleicher Text

c) via wall in alle geöffneten Konsolen schreiben, gleicher Text

d) via pyosd/xosd eine Meldung Schriftgröße 60 einblenden

e) /etc/motd+/etc/issue mit einer entsprechend passenden Meldung versehen (für remote logins)

Um das Ende mitzubekommen:

a) Hintergrundbild ändern auf 'feddich Meister'

b) Screensaver ändern auf 'feddich Meister'

c) via wall 'feddich Meister' in alle offenen Konsolen schicken

d) via pyosd/xosd 'feddich Meister' in Schriftgröße 60 einblenden

e) via logger eine Meldung an syslog schicken mit sev critical; wenn dann z.B. eine Überwachung auf dein /var/log/messages läuft einfach bei critical ein 'wildes Gepiepe' starten lassen

f) einen snmp-trap an deine Netzwerküberwachung schicken

g) ein geeignetes mp3 file abspielen

h) eine Mail an einen vordefinierten Account

i) /etc/motd+/etc/issue ändern

Das sollte eigentlich ziemlich jede Möglichkeit der Benachrichtigung abdecken  :Wink: 

Wenn dann innerhalb einer vordefinierten Zeitspanne nicht reagiert wird runterfahren

----------

## Finswimmer

Ja cool, dann bedanke ich mich mal für die vielen Lösungsvorschläge  :Smile: 

Tobi

----------

## franzf

 *Think4UrS11 wrote:*   

>  *Finswimmer wrote:*   Wenn ich das so mache wie du und ich arbeite nebenbei, vergesse ich oft, dass emerge läuft und dann ist der PC plötzlich aus. 
> 
> [viel Text]
> 
> 

 

Schließt aber einige Möglichkeiten nicht mit ein:

Ich konnte mich nochmal aufraffen, letzte Fehlerkorrekturen an meiner Doktorarbeit zu machen, nächster Tag ist Abgabe, entsprechend locker aus Nervosität ist die Darmperestaltik. Ich begebe mich in das (aus gutem Grund) gut schallisolierte Kämmerchen. Ich verpasse da das "wilde gepiepe" und das laute mp3-file. Dummerweise war der Drang so stark dass ich vergessen habe zu speichern...

 :Arrow:  vor dem Gang aufs Örtchen schnell echo "no" > /tmp/emergeshutdown und gut is...

Oder: Ich will nach Anwerfen von emerge wirklich schon ins Bett. Bin grad am wegpennen (am nächsten Tag sind sowieso Prüfungen und ich hab Einschlafstörungen) und genau jetzt ist emerge fertig...

Das waren jetzt 2 recht blumig (weniger duftig) umschriebene Extremfälle.

Eine gemixte Lösung wäre mit Sicherheit die beste. Die Möglichkeit der (temporären) Konfiguration der Aktionen nach dem (erfolgereichen) Beenden auch recht nützlich.

Ich hab (eigentlich bis jetzt) daran gedacht, mir nightmerge anzuschauen und gegebenenfalls für mich mal testweise oben erwähnte zusätzliche Funktionen einzubauen. Aber eigentlich ist so ein warn/shutdown_after_finished-script sicherlich auch für andere Zwecke interessant  :Smile:  Mal schaun...

Aber trotzdem find ich es geil mal zu sehen was es hier auf meinem Desktop noch alles für unentdeckte Möglichkeiten gibt  :Smile: 

Danke Think4myself für die recht ausführliche Liste!!

Grüße

Franz

----------

## schachti

 *franzf wrote:*   

> entsprechend locker aus Nervosität ist die Darmperestaltik. Ich begebe mich in das (aus gutem Grund) gut schallisolierte Kämmerchen. Ich verpasse da das "wilde gepiepe" und das laute mp3-file.

 

ROTFL, Du hast meinen Sonntag gerettet.   :Laughing: 

----------

## think4urs11

 *franzf wrote:*   

> Ich begebe mich in das (aus gutem Grund) gut schallisolierte Kämmerchen. Ich verpasse da das "wilde gepiepe" und das laute mp3-file. Dummerweise war der Drang so stark dass ich vergessen habe zu speichern...

 

Ja wie - du hast *keinen* Touchscreen direkt neben der Papierausgabe in der Keramikabteilung?? Ändere das

(abgesehen davon sollte man nicht an seinem System herumupdaten wenn man es dringend braucht. Alte Adminregel - niemals updaten wenn gerade der Monatsabschluß der Buchhaltung läuft usw. - schimpft sich bei uns 'frozen time' aka 'Updaten verboten')

 *franzf wrote:*   

> Oder: Ich will nach Anwerfen von emerge wirklich schon ins Bett. Bin grad am wegpennen (am nächsten Tag sind sowieso Prüfungen und ich hab Einschlafstörungen) und genau jetzt ist emerge fertig...

 

Soundausgabe ist erstens optional und zweitens kann man Lautsprecher auch ausschalten bevor man ins Bett geht (so der Rechner überhaupt -wie bei jedem echten Geek- in Hörweite steht)

 *franzf wrote:*   

> Danke Think4UrS11 für die recht ausführliche Liste!!

 

bitte bitte

es gibt sicher noch ein paar ausgefallenere Möglichkeiten aber ich dachte mir für den Hausgebrauch genügt die Liste erstmal.

Man könnte sie evtl. noch erweitern um einen SMS-Versand. Kommt dann innerhalb 'Zeit' keine SMS 'neeeee' zurück dann wird heruntergefahren.

----------

