Miernik podziękowań 0%
09-09-2022, 07:55
(Ten post był ostatnio modyfikowany: 09-09-2022, 13:18 przez dedito.)
0 Witam jestem nowym członkiem forum. Ma palący problem muszę napisać taki skrypt w bash.
Skrypt ma wyświetlać wszystkie procesy OS (poza tymi uruchomionymi na użytkowniku root), które są uruchomione dłużej niż 1h.
Skrypt powinien wyświetlić na ekran taki komunikat np.:
Proces - "użytkownik, na którym proces został uruchomiony" "pid procesu" "komenda procesu" - wykonuje sie 1h:7m:39s
Jeśli znajdzie więcej niż jeden, komunikaty mają się wyświetlić, jeden pod drugim:
Proces - "użytkownik, na którym proces 1 został uruchomiony" "pid procesu 1" "komenda procesu 1" - wykonuje sie 1h:7m:39s
Kod: #!/bin/bash
echo Proces "$USR" "$PID" "$KOM" wykonuje się: $CZAS
for i in `ps -fe | awk '($1 !="root") {print $1 $2 $3 $4 $5 $6 $7}'`;
do
echo $i;
done
Proszę o szybką odpowiedź.
Pozdrawiam
Liczba postów: 4 210
Liczba wątków: 76
Dołączył: Dec 2018
Reputacja:
System: Inny
Środowisko graficzne: Xfce
Architektura CPU: 64bit
Inny System: Debian testing/sid
Miernik podziękowań 39%
0 No i teraz wykonaj ten skrypt i zaprezentuj jakie daje wyniki bo ja już na pierwszy rzut oka widzę, że komenda echo znajduje się w nieodpowiednim miejscu, bo przed pętlą, która szuka odpowiednich danych..
Dodatkowo nie widzę definicji zmiennych $USR $PID $KOM $CZAS.
Miernik podziękowań 0%
0 (09-09-2022, 08:07)dedito napisał(a): No i teraz wykonaj ten skrypt i zaprezentuj jakie daje wyniki bo ja już na pierwszy rzut oka widzę, że komenda echo znajduje się w nieodpowiednim miejscu, bo przed pętlą, która szuka odpowiednich danych..
Dodatkowo nie widzę definicji zmiennych $USR $PID $KOM $CZAS. To jest wynik, ale jeszcze nie wypisuje się jak powinno i nie mam separatorów między USER PID itd
Kod: Proces wykonuje się:
USERPPIDCOMMANDELAPSED
Proces wykonuje się:
polkitd1/usr/lib/polkit-1/polkitd-27-21:29:05
Proces wykonuje się:
libstor+1/usr/bin/lsmd-d27-21:29:05
Proces wykonuje się:
dbus1/usr/bin/dbus-daemon--syst27-21:29:05
Proces wykonuje się:
chrony1/usr/sbin/chronyd27-21:29:05
Proces wykonuje się:
clamscan1/usr/sbin/clamd-c/etc/cla27-21:29:02
Proces wykonuje się:
mysql1/usr/libexec/mysqld--based27-21:29:01
Proces wykonuje się:
clamupd+1/usr/bin/freshclam-d--for27-21:28:02
Proces wykonuje się:
apache40988php-fpm:poolwww23-20:18:44
Proces wykonuje się:
apache40988php-fpm:poolwww23-20:18:44
Proces wykonuje się:
apache40988php-fpm:poolwww23-20:18:44
Proces wykonuje się:
apache40988php-fpm:poolwww23-20:18:44
Proces wykonuje się:
apache40988php-fpm:poolwww23-20:18:44
Proces wykonuje się:
nrpe1/usr/sbin/nrpe-c/etc/nagi20-21:19:22
Proces wykonuje się:
exim1/usr/sbin/exim-bd-q1h8-03:42:58
Proces wykonuje się:
apache450953/usr/sbin/httpd-DFOREGROUN5-08:41:09
Proces wykonuje się:
apache450953/usr/sbin/httpd-DFOREGROUN5-08:41:09
Proces wykonuje się:
apache450953/usr/sbin/httpd-DFOREGROUN5-08:41:09
Proces wykonuje się:
apache450953/usr/sbin/httpd-DFOREGROUN5-08:41:09
Proces wykonuje się:
apache450953/usr/sbin/httpd-DFOREGROUN5-08:41:09
Proces wykonuje się:
opph748141012php-fpm:poolopt_ext_ph7485-08:41:09
Proces wykonuje się:
opph748141012php-fpm:poolopt_ext_ph7485-08:41:09
Proces wykonuje się:
opph748141012php-fpm:poolopt_ext_ph7485-08:41:09
Proces wykonuje się:
opph748141012php-fpm:poolopt_ext_ph7485-08:41:09
Proces wykonuje się:
opph748141012php-fpm:poolopt_ext_ph7485-08:41:09
Proces wykonuje się:
opph748141012php-fpm:poolopt_ext_ph7485-08:41:09
Proces wykonuje się:
apache450953/usr/sbin/httpd-DFOREGROUN4-03:58:56
Proces wykonuje się:
apache510631/usr/sbin/httpd-DFOREGROU1-22:01:48
Proces wykonuje się:
apache510631/usr/sbin/httpd-DFOREGROU1-22:01:48
Proces wykonuje się:
apache510631/usr/sbin/httpd-DFOREGROU1-22:01:48
Proces wykonuje się:
apache510631/usr/sbin/httpd-DFOREGROU1-22:01:48
Proces wykonuje się:
apache547135/usr/sbin/httpd-DFOREGROU02:59:48
Proces wykonuje się:
apache547135/usr/sbin/httpd-DFOREGROU02:59:48
Proces wykonuje się:
apache547135/usr/sbin/httpd-DFOREGROU02:59:48
Proces wykonuje się:
apache547135/usr/sbin/httpd-DFOREGROU02:59:48
Proces wykonuje się:
kod:
#!/bin/bash
#echo Proces "$USR" "$PID" "$KOM" wykonuje się: $CZAS
USER=$1
PID=$2
KOM=$3
CZAS=$5
IFS=$'\n'
for i in `ps -eo "%U %P %a %t " | awk '($1 !="root") {print $1 $2 $3 $4 $5 $6}'`;
do
echo $i
echo Proces "$USR" "$PID" "$KOM" wykonuje się: $CZAS
done
Liczba postów: 4 210
Liczba wątków: 76
Dołączył: Dec 2018
Reputacja:
System: Inny
Środowisko graficzne: Xfce
Architektura CPU: 64bit
Inny System: Debian testing/sid
Miernik podziękowań 39%
0 To w ogóle nie działa tak jak powinno z powodów, które już podałem.
Ja bym zaczął od testów tej pętli w terminalu, bez pisania skryptu.
Jak wyjdzie właściwy wynik do dalszej obróbki, to można zacząć się bawić skryptem.
Miernik podziękowań 0%
0 (09-09-2022, 12:10)dedito napisał(a): To w ogóle nie działa tak jak powinno z powodów, które już podałem.
Ja bym zaczął od testów tej pętli w terminalu, bez pisania skryptu.
Jak wyjdzie właściwy wynik do dalszej obróbki, to można zacząć się bawić skryptem. A może jakaś podpowiedź bo mi się pomysły się kończą?
Liczba postów: 4 210
Liczba wątków: 76
Dołączył: Dec 2018
Reputacja:
System: Inny
Środowisko graficzne: Xfce
Architektura CPU: 64bit
Inny System: Debian testing/sid
Miernik podziękowań 39%
09-09-2022, 12:44
(Ten post był ostatnio modyfikowany: 09-09-2022, 12:47 przez dedito.)
0 Przykład:
Kod: ps -fe
UID PID PPID C STIME TTY TIME CMD
webmast+ 1 0 0 06:19 ? 00:00:00 /dev/init -- node /var/www/html/
...
Czyli interesują nas kolumny danych nr 1, 2, 7
No to dalej, korzystając z Twojego przykładu:
Kod: ps -fe | awk '($1 !="root") {print $1 $2 $7}'
UIDPIDTIME
webmast+100:00:00p
Widać, że dane wyszły ale bez separatorów.
No to trzeba w tego pogooglać za przykładami i przykładowo zmodyfikować to tak:
Kod: ps -fe | awk '($1 !="root") {print $1 " " $2 " " $7}'
UID PID TIME
webmast+ 1 00:00:00webmast+ 8 00:18:02
...
idąc tym tokiem można to jeszcze zmodyfikować tak:
Kod: ps -fe | awk '($1 !="root") {print "Proc. " $1 " " $2 " wyk. " $7}'
Proc. UID PID wyk. TIME
Proc. webmast+ 1 wyk. 00:00:00
...
czyli jak widać można odrazu uzyskać porządzane wyniki bez definiowania zmiennych.
Miernik podziękowań 0%
09-09-2022, 13:22
(Ten post był ostatnio modyfikowany: 09-09-2022, 13:26 przez dedito.)
0 (09-09-2022, 12:44)dedito napisał(a): Przykład:
Kod: ps -fe
UID PID PPID C STIME TTY TIME CMD
webmast+ 1 0 0 06:19 ? 00:00:00 /dev/init -- node /var/www/html/
...
Czyli interesują nas kolumny danych nr 1, 2, 7
No to dalej, korzystając z Twojego przykładu:
Kod: ps -fe | awk '($1 !="root") {print $1 $2 $7}'
UIDPIDTIME
webmast+100:00:00p
Widać, że dane wyszły ale bez separatorów.
No to trzeba w tego pogooglać za przykładami i przykładowo zmodyfikować to tak:
Kod: ps -fe | awk '($1 !="root") {print $1 " " $2 " " $7}'
UID PID TIME
webmast+ 1 00:00:00webmast+ 8 00:18:02
...
idąc tym tokiem można to jeszcze zmodyfikować tak:
Kod: ps -fe | awk '($1 !="root") {print "Proc. " $1 " " $2 " wyk. " $7}'
Proc. UID PID wyk. TIME
Proc. webmast+ 1 wyk. 00:00:00
...
czyli jak widać można odrazu uzyskać porządzane wyniki bez definiowania zmiennych.
Teraz mam coś takiego kod:
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 $1 " " $2 " " $3 " " $6 " " $7}'`;
do
echo $i
# echo Proces "$USR" "$PID" "$KOM" wykonuje się: $CZAS
USER=$1
PID=$2
KOM=$3
CZAS=$5
echo $USER
echo $PID
done
wynik:
Kod: USER PPID COMMAND
polkitd 1 /usr/lib/polkit-1/polkitd
libstor+ 1 /usr/bin/lsmd
dbus 1 /usr/bin/dbus-daemon
chrony 1 /usr/sbin/chronyd
clamscan 1 /usr/sbin/clamd 27-22:48:09
mysql 1 /usr/libexec/mysqld
clamupd+ 1 /usr/bin/freshclam 27-22:47:09
apache 40988 php-fpm: 23-21:37:51
apache 40988 php-fpm: 23-21:37:51
apache 40988 php-fpm: 23-21:37:51
apache 40988 php-fpm: 23-21:37:51
apache 40988 php-fpm: 23-21:37:51
nrpe 1 /usr/sbin/nrpe 20-22:38:29
exim 1 /usr/sbin/exim 8-05:02:05
apache 450953 /usr/sbin/httpd
apache 450953 /usr/sbin/httpd
apache 450953 /usr/sbin/httpd
apache 450953 /usr/sbin/httpd
apache 450953 /usr/sbin/httpd
opph7481 41012 php-fpm: 5-10:00:16
opph7481 41012 php-fpm: 5-10:00:16
opph7481 41012 php-fpm: 5-10:00:16
opph7481 41012 php-fpm: 5-10:00:16
opph7481 41012 php-fpm: 5-10:00:16
opph7481 41012 php-fpm: 5-10:00:16
apache 450953 /usr/sbin/httpd
apache 510631 /usr/sbin/httpd 1-23:20:55
apache 510631 /usr/sbin/httpd 1-23:20:55
apache 510631 /usr/sbin/httpd 1-23:20:55
apache 510631 /usr/sbin/httpd 1-23:20:55
apache 547135 /usr/sbin/httpd 04:18:55
apache 547135 /usr/sbin/httpd 04:18:55
apache 547135 /usr/sbin/httpd 04:18:55
apache 547135 /usr/sbin/httpd 04:18:55
Testowo dałem te zmienne czy w ogóle coś jest w nich jak widać nie ma nic.. Nie wiem w jaki sposób te kolumny przekierować do zmiennych , a później na echo..
Liczba postów: 4 210
Liczba wątków: 76
Dołączył: Dec 2018
Reputacja:
System: Inny
Środowisko graficzne: Xfce
Architektura CPU: 64bit
Inny System: Debian testing/sid
Miernik podziękowań 39%
09-09-2022, 13:24
(Ten post był ostatnio modyfikowany: 09-09-2022, 13:25 przez dedito.)
0 Stosuj znaczniki kodu, zgodnie z zasadami forum.
Nie ma potrzeby przekierowywać do zmiennych i do echa bo podałem przykład, który tego nie wymaga.
Miernik podziękowań 0%
0 (09-09-2022, 13:22)[email protected] napisał(a): (09-09-2022, 12:44)dedito napisał(a): Przykład:
Kod: ps -fe
UID PID PPID C STIME TTY TIME CMD
webmast+ 1 0 0 06:19 ? 00:00:00 /dev/init -- node /var/www/html/
...
Czyli interesują nas kolumny danych nr 1, 2, 7
No to dalej, korzystając z Twojego przykładu:
Kod: ps -fe | awk '($1 !="root") {print $1 $2 $7}'
UIDPIDTIME
webmast+100:00:00p
Widać, że dane wyszły ale bez separatorów.
No to trzeba w tego pogooglać za przykładami i przykładowo zmodyfikować to tak:
Kod: ps -fe | awk '($1 !="root") {print $1 " " $2 " " $7}'
UID PID TIME
webmast+ 1 00:00:00webmast+ 8 00:18:02
...
idąc tym tokiem można to jeszcze zmodyfikować tak:
Kod: ps -fe | awk '($1 !="root") {print "Proc. " $1 " " $2 " wyk. " $7}'
Proc. UID PID wyk. TIME
Proc. webmast+ 1 wyk. 00:00:00
...
czyli jak widać można odrazu uzyskać porządzane wyniki bez definiowania zmiennych.
Teraz mam coś takiego kod:
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 $1 " " $2 " " $3 " " $6 " " $7}'`;
do
echo $i
# echo Proces "$USR" "$PID" "$KOM" wykonuje się: $CZAS
USER=$1
PID=$2
KOM=$3
CZAS=$5
echo $USER
echo $PID
done
wynik:
Kod: USER PPID COMMAND
polkitd 1 /usr/lib/polkit-1/polkitd
libstor+ 1 /usr/bin/lsmd
dbus 1 /usr/bin/dbus-daemon
chrony 1 /usr/sbin/chronyd
clamscan 1 /usr/sbin/clamd 27-22:48:09
mysql 1 /usr/libexec/mysqld
clamupd+ 1 /usr/bin/freshclam 27-22:47:09
apache 40988 php-fpm: 23-21:37:51
apache 40988 php-fpm: 23-21:37:51
apache 40988 php-fpm: 23-21:37:51
apache 40988 php-fpm: 23-21:37:51
apache 40988 php-fpm: 23-21:37:51
nrpe 1 /usr/sbin/nrpe 20-22:38:29
exim 1 /usr/sbin/exim 8-05:02:05
apache 450953 /usr/sbin/httpd
apache 450953 /usr/sbin/httpd
apache 450953 /usr/sbin/httpd
apache 450953 /usr/sbin/httpd
apache 450953 /usr/sbin/httpd
opph7481 41012 php-fpm: 5-10:00:16
opph7481 41012 php-fpm: 5-10:00:16
opph7481 41012 php-fpm: 5-10:00:16
opph7481 41012 php-fpm: 5-10:00:16
opph7481 41012 php-fpm: 5-10:00:16
opph7481 41012 php-fpm: 5-10:00:16
apache 450953 /usr/sbin/httpd
apache 510631 /usr/sbin/httpd 1-23:20:55
apache 510631 /usr/sbin/httpd 1-23:20:55
apache 510631 /usr/sbin/httpd 1-23:20:55
apache 510631 /usr/sbin/httpd 1-23:20:55
apache 547135 /usr/sbin/httpd 04:18:55
apache 547135 /usr/sbin/httpd 04:18:55
apache 547135 /usr/sbin/httpd 04:18:55
apache 547135 /usr/sbin/httpd 04:18:55
Testowo dałem te zmienne czy w ogóle coś jest w nich jak widać nie ma nic.. Nie wiem w jaki sposób te kolumny przekierować do zmiennych , a później na echo..
OK..Co do znaczników (zapomniałem).. A i wczytałem się w tą ostatnią wiadomość już modyfikuję.
Dodano po pewnym czasie:
Teraz mam taki wynik:
Proces USER PPID COMMAND Wykonuje się:
Proces wykonuje się:
Proces polkitd 1 /usr/lib/polkit-1/polkitd Wykonuje się:
Proces wykonuje się:
Proces libstor+ 1 /usr/bin/lsmd Wykonuje się:
Proces wykonuje się:
Proces dbus 1 /usr/bin/dbus-daemon Wykonuje się:
Proces wykonuje się:
Proces chrony 1 /usr/sbin/chronyd Wykonuje się:
Proces wykonuje się:
Proces clamscan 1 /usr/sbin/clamd Wykonuje się: 27-23:03:47
Proces wykonuje się:
Proces mysql 1 /usr/libexec/mysqld Wykonuje się:
Proces wykonuje się:
Proces clamupd+ 1 /usr/bin/freshclam Wykonuje się: 27-23:02:47
Proces wykonuje się:
Proces apache 40988 php-fpm: Wykonuje się: 23-21:53:29
Proces wykonuje się:
Proces apache 40988 php-fpm: Wykonuje się: 23-21:53:29
Proces wykonuje się:
Proces apache 40988 php-fpm: Wykonuje się: 23-21:53:29
Proces wykonuje się:
Proces apache 40988 php-fpm: Wykonuje się: 23-21:53:29
Teraz najgorsze jak przefiltrować po kolumnie czas i wyświetlać tylko starsze niż 1h? --sort w poleceniu ps?
Liczba postów: 4 210
Liczba wątków: 76
Dołączył: Dec 2018
Reputacja:
System: Inny
Środowisko graficzne: Xfce
Architektura CPU: 64bit
Inny System: Debian testing/sid
Miernik podziękowań 39%
|