Befehlssequenz

W

Wetman75

Hallo zusammen,

Ich bin ein Anfänger der Unix-Sprache und versuche gerade eine Befehlssequenz zusammen zu schustern, welche mir alle laufenden Prozesse anzeigt welche zum Beispiel seit 9:00Uhr laufen.

Mein Ansatz:
#ps -A | grep 11:

Also, Abfrage aller laufenden Prozess und in die pipe legen und mit grep Zeilen mit dem Merkmal "11:" anzeigen.
Ist das so richtig?
Wenn ja, was ist aber wenn es nun 18:00 Uhr ist. So sehe ich ja nicht die Prozesse welche zum Beispiel um 14:00 gestartet wurden.

LG
 
Hab jetzt auch nicht richtig nachgesehen, vielleicht hat der Befehl ps auch so eine Funktion, die nur Prozesse ab einer bestimmten Uhrzeit herausfiltert.

Anleitungen, die dir bei solchen Befehlszeilen helfen können findest du mit

Code:
man Befehlsname
#also
man ps

Falls das bei dir alles in Englisch ist, es lassen sich auch deutsche Manualseiten installieren. Aber nicht alle sind in Deutsch verfügbar.

In der Shell kann man sich immer irgendwie helfen. Linux ist da sehr vielseitig, allein schon mit den vielen bereits installierten Programmen.

Lösungsmöglichkeiten gibt es einige, die einen sind länger, die anderen kürzer, je nach dem wie man es löst. Dazu lernt man immer. Vieles geht in einer Zeile.

Code:
seitUhr=9 ; for i in `seq $seitUhr 23` ; do ps -A -f | egrep "$i\:[0-5][0-9] " | grep -v egrep ; done
(Problem hier, wenn es auf 0 Uhr zugeht oder der Rechner mehrere Tage läuft...) Das soll nur ein Beispiel sein, deshalb ist es möglichst einfach gehalten.

Das erste Simikolon leitet den nächsten Befehl ein. Die nachfolgenden Simikolon gehören zur Schleife.

#Variablenzuweisung
seitUhr=9

#Für jeden Wert mache ... Eine übliche for-Schleife
for i in `9-23` ; do ... ; done

#solche `-Zeichen haben auch nochmal eine Bedeutung. Man kann auch $(aufgelöster Befehl) schreiben.
`aufgelöster Befehl`

#Zahlenreihe ausgeben
seq 9 23

#Variablen Abruf
$seitUhr

#Prozesse ausgeben mit Option -f (full Format -- volles Format)
ps -A -f |

#Filtern mit egrep, weil Bereiche mit angegeben sind ( [0-5] ) ... filtert nach z.B. "9:35Leerzeichen"
egrep "$i\:[0-5][0-9] "

#Filtert alles erneut, um die eigenen egrep-Prozesse auszublenden. -v = alles außer ...
| grep -v egrep


man ps zeigt dir auch, dass du dir das Format der Tabelle selbst definieren kannst, welches ps ausgibt. Das ginge dann z.B. so.
Code:
ps axo stat,pid,pcpu,comm,start_time

start_time ist hier dein Bezugswert.

Um so mehr man rumprobiert, umsomehr versteht man. Im internet ist auch vieles beschrieben. Die individuellen Lösungen lassen sich meistens daraus zusammensetzen. Viel Spass!
 
Hallo

Andere Möglichkeit, über journalctl, wenn systemd benutzt wird, damit ist das Filtern einfacher als per ps, | grep, sed und Konsorten

mfg
schwedenmann
 

Ähnliche Themen

AWK Tip gesucht

Maskiertes Suchen, Ersetzen und Rechnen in access.log vor weitere Bearbeitung

Last mit etc/passwd anzeigen lassen

OpenSUSE 12.1: Gnucash startet nicht mehr

HP PSC 2175 - CUPS druckt nicht

Zurück
Oben