BSDForen.de  

Zurück   BSDForen.de > Geekstuff > Programmieren

Antwort
 
Themen-Optionen Thema bewerten Ansicht
Alt 27.03.2012, 11:47   #1
emha
Registered User
 
Registrierungsdatum: Jan 2012
Ort: CCAA
Beiträge: 44
Prozess Status

Hallo Forum,

FreeBSD läuft hier auf einem sehr betagtem Rechner und wenn ich z.B. Firefox neu bauen will bremst es mein komplettes System aus (swap...)

Z.z. stoppe ich 'make' bzw. 'ld' mit 'kill -STOP xxxx' wenn ich relativ flüssig arbeiten will und lasse es anschließend mit 'kill -CONT xxxx' wieder weiter bauen.

Ich würde gern ein Script schreiben mit dem ein einfaches Umschalten möglich ist.
Etwa so:
ppause --stop build
Auslesen aller Prozesse (make, gmake, ld, etc.) und ein -STOP Signal senden.
ppause --cont build
Auslesen aller gestoppten Prozesse und diese mit 'kill -CONT' wieder anlaufen lassen.

Ersters klappt soweit mit 'pgrep', aber wie lese ich die gestoppten Prozese aus?

Gruß,
emha
emha ist offline   Mit Zitat antworten
Alt 27.03.2012, 12:53   #2
unull
Nervensäge
 
Benutzerbild von unull
 
Registrierungsdatum: Feb 2005
Ort: ::1
Beiträge: 146
Zitat:
Zitat von emha Beitrag anzeigen
Ersters klappt soweit mit 'pgrep', aber wie lese ich die gestoppten Prozese aus?
"ps" zeigt den Prozessstatus an, da kannst Du dir die PID's sicherlich rausfummeln.
Einfacher wäre jedoch sicherlich, dass dein Stop-Skript die PID's auf STDOUT rauswirft, die es mit "kill -STOP" bearbeitet.

Also in etwa so:
Code:
ppause --stop build > pids ppause --cont build < pids
unull ist offline   Mit Zitat antworten
Alt 27.03.2012, 13:27   #3
emha
Registered User
 
Registrierungsdatum: Jan 2012
Ort: CCAA
Beiträge: 44
Hi unull,

mit 'ps' war ich wenig erfolgreich. 'top -b | grep STOP' ist zur Zeit mein Ansatz.
emha ist offline   Mit Zitat antworten
Alt 27.03.2012, 13:33   #4
unull
Nervensäge
 
Benutzerbild von unull
 
Registrierungsdatum: Feb 2005
Ort: ::1
Beiträge: 146
Zitat:
Zitat von emha Beitrag anzeigen
Hi unull,

mit 'ps' war ich wenig erfolgreich. 'top -b | grep STOP' ist zur Zeit mein Ansatz.
Code:
ps ax -o pid,stat | grep 'Ts' | cut -d " " -f 2
Das geht hier z.B. Aber wie schon gesagt, die PID's hast Du sowieso schon beim Stoppen rausgesucht. Ich würde einfach diese dann wiederverwenden.
unull ist offline   Mit Zitat antworten
Alt 27.03.2012, 14:16   #5
emha
Registered User
 
Registrierungsdatum: Jan 2012
Ort: CCAA
Beiträge: 44
Hi nuull,

'ps ax -o pid,stat | grep 'Ts' | cut -d " " -f 2'

zeigt werder unter meinem Benutzer noch unter Root ein Ergebnis...

Lass mir hier bitte Zeit bis morgen, da ich heute - jetzt - noch in mein normales Leben abtauche: Es ist Zeit Tomaten, Gurken etc. ins 'Freie' zu bringen ... ;-)

LG,
emha

Geändert von emha (28.03.2012 um 04:17 Uhr).
emha ist offline   Mit Zitat antworten
Alt 27.03.2012, 14:44   #6
unull
Nervensäge
 
Benutzerbild von unull
 
Registrierungsdatum: Feb 2005
Ort: ::1
Beiträge: 146
Zitat:
Zitat von emha Beitrag anzeigen
Hi nuull,

'ps ax -o pid,stat | grep 'Ts' | cut -d " " -f 2'

zeigt werder unter meinem Benutzer noch unter Root ein Ergebnis...
Hast Du vorher einen Prozess gestoppt?

Zitat:
Es ist Zeit Tomaten, Gurken etc. ins 'Freie' zu bringen ... ;-)
Ins 'Freie'? Mit der offenen Kernfusion an der Decke?
unull ist offline   Mit Zitat antworten
Alt 27.03.2012, 14:55   #7
emha
Registered User
 
Registrierungsdatum: Jan 2012
Ort: CCAA
Beiträge: 44
Zitat:
Zitat von unull Beitrag anzeigen
Hast Du vorher einen Prozess gestoppt?
Ja, 'ld' (firefox 10) wartet...

Zitat:
Zitat von unull Beitrag anzeigen
Ins 'Freie'? Mit der offenen Kernfusion an der Decke?
http://www.youtube.com/watch?v=jr4uB-nRY9I ;-)

Bis morgen und Danke für die Antwort!

LG,
emha

Geändert von emha (28.03.2012 um 04:17 Uhr).
emha ist offline   Mit Zitat antworten
Alt 27.03.2012, 20:34   #8
emha
Registered User
 
Registrierungsdatum: Jan 2012
Ort: CCAA
Beiträge: 44
Zitat:
Zitat von unull Beitrag anzeigen
Hast Du vorher einen Prozess gestoppt?
Wie gesagt, 'ld' ist gestoppt.
Ein 'grep' nach dem gestopptem Prozess (bzw der pid)
ps ax -o pid,stat | grep 97296
97296 TN

Hilft das?
emha ist offline   Mit Zitat antworten
Alt 28.03.2012, 06:52   #9
unull
Nervensäge
 
Benutzerbild von unull
 
Registrierungsdatum: Feb 2005
Ort: ::1
Beiträge: 146
Zitat:
Zitat von emha Beitrag anzeigen
Wie gesagt, 'ld' ist gestoppt.
Ein 'grep' nach dem gestopptem Prozess (bzw der pid)
ps ax -o pid,stat | grep 97296
97296 TN

Hilft das?
Aye, mein grep war zu unpraezise. Kuck mal in ps(1), dort steht der Status weiter unten erklaert, den ps anzeigt. Interessant ist das erste 'T'.
unull ist offline   Mit Zitat antworten
Alt 28.03.2012, 07:26   #10
emha
Registered User
 
Registrierungsdatum: Jan 2012
Ort: CCAA
Beiträge: 44
Zitat:
Zitat von unull Beitrag anzeigen
Aye, mein grep war zu unpraezise. Kuck mal in ps(1), dort steht der Status weiter unten erklaert, den ps anzeigt. Interessant ist das erste 'T'.
Morgen Krüme... Unull,

'ps' scheint ja Dein Liebling zu sein und auch ich freunde mich immer mehr damit an (anstatt es nur als Anzeige zu nutzen). Z.Z. kämpfe ich aber mit 'pgrep', da mein 'ppause - p ld' auch den hald-* stoppt...

Nebenher: 'ls Univers | grep sun' und ein entsprechendes 'kill -STOP sun' klappt auch nicht...

LG,
emha
emha ist offline   Mit Zitat antworten
Alt 31.03.2012, 16:40   #11
emha
Registered User
 
Registrierungsdatum: Jan 2012
Ort: CCAA
Beiträge: 44
Ich gehe z.Z. einen (Um)Weg über:

Code:
stop() { ... top -b | grep -o '\<ld\>' >> test.tmp top -b | grep -o '\<javac\>' >> test.tmp ... for item in `cat test.tmp | awk '{ print $1 }'`; do kill -STOP $item; done ... }
bzw.

Code:
cont() { ... top -b | grep 'STOP' >> test.tmp ... for item in `cat test.tmp | awk '{ print $1 }'`; do kill -CONT $item; done }
Ist nicht schön und bei cont() kann mehr gestartet werden, als vorher mit stop() angehalten wurde, aber erstmal geht's.
Das Stoppen einzelner Prozesse ist rausgeflogen, es geht mir ja darum Rechenzeit für mich zu bekommen und 'make', 'ld', 'cc1*', etc anzuhalten.
Ausserdem lerne ich dadurch ja erst...

LG,
emha
__________________
"Did you ever play tic-tac-toe?"
('Stephen Falken')
emha ist offline   Mit Zitat antworten
Alt 27.03.2012, 20:46   #12
emha
Registered User
 
Registrierungsdatum: Jan 2012
Ort: CCAA
Beiträge: 44
Ich dachte an sowas...

Code:
#!/bin/sh pname="" pid="" switch() { # todo # # top -b | grep $pid # compare STAT # kill -CONT or -STOP # } getname() { echo "pname:" $pname pid=`pgrep $pname` echo "pid: "$pid } pause() { getname kill -STOP `echo $pid` } cont() { getname kill -CONT `echo $pid` } help() { exit; } case "$1" in -p) pname=$2 pause ;; -c) pname=$2 cont ;; *) # ToDo # pname=$1 #switch # ;; esac
LG,
emha

Geändert von emha (28.03.2012 um 04:16 Uhr).
emha ist offline   Mit Zitat antworten
Antwort


Dieses Thema betrachten zurzeit 1 Personen. (0 registrierte Benutzer und 1 Gäste)
 
Themen-Optionen
Ansicht Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An
[IMG] Code ist An
HTML-Code ist Aus
Gehe zu

Ähnliche Themen
Thema Erstellt von Forum Antworten Letzter Beitrag
sftp + root DemonLord FreeBSD - Allgemein 14 28.10.2011 09:39
FTP Wie große Datei übertragen HaraldLangner FreeBSD - Allgemein 16 10.07.2008 14:34
"gnome_enable" , USB mount und der ganze Rest ( klappt nicht ) ypswes FreeBSD - Installation 6 17.08.2007 14:44
FreeBSD ruckelt in bestimmten Abständen für kurze Zeit MorLipf FreeBSD - Allgemein 14 02.10.2005 12:54
freebsd & hp-streamer macropode Hardware 34 12.09.2005 17:52


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 Uhr.


Powered by vBulletin (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.