Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Skrypt bash pokazujący uruchomione procesy dłużej niż 1h
#11
0
Właśnie próbowałem tak , ale wywala mi błędem lub dopisuje mi ten sort na końcu Sad.
Kod:
#!/bin/bash

#echo Proces "$USR" "$PID" "$KOM" wykonuje się: $CZAS


IFS=$'\n'
for i in `ps -eo "%U %P %a %t" | awk '($1 !="root") {print "Proces " $1 " " $2 " " $3 " Wykonuje się: " $6 " " $7}'`;

  do
      echo $i


done
Tego --sort "nazwa kolumny"daję w "" lub przed -eo i tak wywala błąd. error: TTY could not be found

Usage:
ps [options]

Try 'ps --help <simple|list|output|threads|misc|all>'
  or 'ps --help <s|l|o|t|m|a>'
for additional help text.

Dodano po pewnym czasie:
(09-09-2022, 14:40)[email protected] napisał(a): Właśnie próbowałem tak , ale wywala mi błędem lub dopisuje mi ten sort na końcu Sad.
Kod:
#!/bin/bash

#echo Proces "$USR" "$PID" "$KOM" wykonuje się: $CZAS


IFS=$'\n'
for i in `ps -eo "%U %P %a %t" | awk '($1 !="root") {print "Proces " $1 " " $2 " " $3 " Wykonuje się: " $6 " " $7}'`;

  do
      echo $i


done

tak zadziałało:

Kod:
#!/bin/bash

#echo Proces "$USR" "$PID" "$KOM" wykonuje się: $CZAS


IFS=$'\n'
for i in `ps -eo "%U %P %a %t" --sort etime | awk '($1 !="root") {print "Proces " $1 " " $2 " " $3 " Wykonuje się: " $6 " " $7}'`;

  do
      echo $i


done

Dodano po pewnym czasie:
Kod:
#echo Proces "$USR" "$PID" "$KOM" wykonuje się: $CZAS


IFS=$'\n'
for i in `ps ax -o uname,pid,etimes,command | egrep -v ^root`
#ps ax -o uname,pid,etimes,command --sort etime | awk '($1 !="root") {print "Proces " $1 " " $2 " " $4 " Wykonuje się: " $6 " " $3}'`;
do
    if [   ]
    echo $i


done
W tej chwili muszę jeszcze dorobić pętlę if sprawdzającą warunek kolumna etime 3600 -eq $[kolumna z etime wyrażona w sekundach]?
Odpowiedz
#12
0
Po prostu sprawdź, będziesz widział po wynikach.
Odpowiedz
#13
0
W tej chwili  próbuje coś takiego, ale mam błąd:
Kod:
#!/bin/bash

#echo Proces "$USR" "$PID" "$KOM" wykonuje się: $CZAS


IFS=$'\n'
for i in `ps ax -o uname,pid,etimes,command --sort etimes
#| awk '($1 !="root") {print "Proces " $1 " " $2 " " $4 " Wykonuje się: " $6 " " $3}'`;

  do
        if [ $etimes -eq 3600 ]
        then
                        echo $i
        fi

done
Kod:
Błąd?

./skryptos: line 11: [: -eq: unary operator expected
Odpowiedz
#14
0
if [[ $etimes -eq 3600 ]]
Odpowiedz
#15
0
Kod:
#!/bin/bash

#echo Proces "$USR" "$PID" "$KOM" wykonuje się: $CZAS


IFS=$'\n'
for i in `ps ax -o uname,pid,etimes,command --sort etimes | awk '($1 !="root" && $3 >="3600") {print "Proces " $1 " " $2 "     "    $4 "      Wykonuje się:"  $3}'`;

  do
                        echo $i

done

Teraz już mam lepiej pokazuje bez błędów, ale nie pokazuje wszystkich procesów i ucina kolumnę COMMAND.
Wynik:
Proces USER PID COMMAND Wykonuje się:ELAPSED
Proces exim 434152 /usr/sbin/exim Wykonuje się:956648

Dodano po pewnym czasie:
Kod:
#!/bin/bash

#echo Proces "$USR" "$PID" "$KOM" wykonuje się: $CZAS


IFS=$'\n'
for i in `ps ax -o uname,pid,etimes,command | awk '($1 !="root" && $3 <="3600") {print "Proces " $1 " " " " $2 "  " "  " $4 " " $5 " " $6 " " $7 " Wykonuje się:" " " $3 }'`;

  do
                        echo $i

done
Teraz wyświetla się, ale musi być bardziej elastyczny tak , aby zawsze pokazywał całą komendę i żeby zwracał z powrotem czas w godzinach.
Jakaś podpowiedź?
Odpowiedz
#16
0
Nie widzę tego ucięcia, ani braku czasu.
Odpowiedz
#17
0
(12-09-2022, 12:24)dedito napisał(a): Nie widzę tego ucięcia, ani braku czasu.
Przy wyświetlaniu dłuższych komend ucina, a czas musiałby z powrotem pokazywać w godzinach.
Odpowiedz
#18
0
Przekieruj wynik do cat.
ps ax -o uname,pid,etimes,command | cat | awk .... lub użyj opcji -auxww
Odpowiedz
#19
0
(12-09-2022, 13:22)dedito napisał(a): Przekieruj wynik do cat.
ps ax -o uname,pid,etimes,command | cat | awk .... lub użyj opcji -auxww


Tą opcję to gdzie użyć? Potrzebuję trochę więcej wskazuwek, żeby to ogarnąćSmile
Odpowiedz
#20
0
To jest wycinek ze skryptu.
ps ax -o uname,pid,etimes,command | cat | awk .... lub ps -aouxww uname,pid,etimes,command | awk ....
Odpowiedz


Skocz do:




Użytkownicy przeglądający ten wątek: 11 gości