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
#21
0
(12-09-2022, 13:40)dedito napisał(a): To jest wycinek ze skryptu.
ps ax -o uname,pid,etimes,command | cat | awk .... lub ps -aouxww uname,pid,etimes,command | awk ....


OK, ale jak to zrobić żeby wyświetlało jedno pod drugim

Proces apache PID Commenda wykonywał się Czas?
Odpowiedz
#22
0
Sory, nie rozumiem co masz na myśli.
Odpowiedz
#23
0
(12-09-2022, 14:28)dedito napisał(a): Sory, nie rozumiem co masz na myśli.

Taki ma być wynik wykonania skryptu
Proces - "użytkownik, na którym proces 1 został uruchomiony" "pid procesu 1" "komenda procesu 1" - wykonuje sie 1h:7m:39s
Odpowiedz
#24
0
A jaki jest?
Odpowiedz
#25
0
(12-09-2022, 14:37)dedito napisał(a): A jaki jest?
Wynik

Proces opph7481  578817    php-fpm: pool opt_ext_ph7481  Wykonuje się: 12570


Tylko tu jeszcze trzeba zmodyfikować tak , aby kolumna Command przy dłuższych poleceniach się nie obcinała no i czas w godzinach.

Chyba musi być użyta inna pętla while?
Odpowiedz
#26
0
Na obcinanie command już dawałem sposób, a na wyświetlanie czasu to też kwestia odpowiedniej opcji ps. Zalecam zajrzeć do man ps (podpowiedź: etime vs etimes).
Cytat: etime ELAPSED elapsed time since the process was started,
in the form [[DD-]hh:]mmConfuseds.

etimes ELAPSED elapsed time since the process was started,
in seconds.
Odpowiedz
#27
0
Kod:
#!/bin/bash


ps ax -o uname,pid,etimes,command | grep -v root | while read -r username pid time com ;
do
# echo $username
# echo $pid
# echo $time
# echo $com
if [[ $time -eq "3600" ]];
then
    echo Proces $usr  $pid $com  -wykonuje sie: $time
fi

done
Gdzieś mam błąd nie wyświetla wyników. ?
Odpowiedz
#28
0
No bo nie przekazujesz żadnych zmiennych do while.
Odpowiedz
#29
0
Kod:
#!/bin/bash


ps ax -o uname,pid,etimes,command | grep -v root | while read -r username pid time com ;

do

if [[ $time -gt "3600" ]];
then
    echo Proces $username  $pid $com  -wykonuje sie: $time sekund to jest `date "+%j dni %H godzin %M minut %S sekund" -d @$time` | >&1
fi
done

if [ $1 !=" " ];
then
   exit 2
else
   exit 0
fi
Po wyżej chodzi o zaimplementowanie kodu błędu żeby jak znajdzie procesy wykonujące się po wyżej 1h to exit 2, a jak nie znajdzie to OK i exit 0. Jak to zaimplementować,żeby w przypadku znalezienia procesów wykonujących się powyżej godziny wyświetlił je plus exit cod 2. Bo jak go wprowadzam to wyświetla mi tylko jedno wykonanie. Chodzi o
Odpowiedz
#30
0
Czy ten wątek jest aktualny?
Odpowiedz


Skocz do:




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