Portál AbcLinuxu, 17. července 2025 18:39


Dotaz: Monitoring procesů

18.5.2009 14:41 kubig
Monitoring procesů
Přečteno: 549×
Odpovědět | Admin

Ahoj všem,

potřeboval bych pomoct s napsánim skriptu,který bude monitorovat vytíženost CPU a pokud najde proces který má,řekněme více jako 20% CPU,tak provede nějakou akci(tu už si nadefinuji sám).Jedná se o OS Solaris.

 

předem děkuji za hinty

 

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

18.5.2009 18:15 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: Monitoring procesů
Odpovědět | | Sbalit | Link | Blokovat | Admin
Momentálně na žádný Solaris přístup nemám, ale nějaké vhodné údaje by snad měly být v /proc.

V nejhorším případě můžeš najít nějakou existující utilitu, která něco podobného už provádí, a zjistit, jak (třeba pomocí strace).
Fuky avatar 18.5.2009 23:51 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Monitoring procesů
Odpovědět | | Sbalit | Link | Blokovat | Admin

Zkoušel jsi ps?

Vypíše proces, který nejvíce vytěžuje procesor, první sloupeček je vytížení, druhý PID procesu:

$ ps ax -o pcpu,pid --sort pcpu |tac |head -n 1
11.4  3885

-- RÁMO: psí tábor , ETriatlon: Výuka plavání
19.5.2009 07:55 kubig
Rozbalit Rozbalit vše Re: Monitoring procesů
Odpovědět | | Sbalit | Link | Blokovat | Admin

Díky za hinty. vyřešil jsem první část problému.. napsal jsem skript:

if top | grep "xxx" ;then

      ....

else

     .....

fi

 

což funguje.Ted ale ve spojitosti s tím řeším další věc.Potřbuji v jedné větvi udělat toto:

Zkopírovat naposledvy vytvořený soubor(log) ve složce..v té složce je těch souborů desítky,takže jak udělat aby se zkoppíroval jen jeden?A jak udělat aby při další kontrole tímto skriptem,se už daný log zbytečně nekopíroval..tz.jak udělat kontrolu že daný log je už zkoppírován?

 

díky

Fuky avatar 19.5.2009 09:57 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: Monitoring procesů
Příloha:

Nalezení souboru dle času posledního přístupu/modifikace/změny práv můžeš vyřešit pomocí stat:

#!/bin/bash

newest_time=0
newest_file=""

for file in *.log; do
    modification_time=$(stat --format='%Y' $file)

    if [ "$modification_time" -gt "$newest_time" ]; then
        newest_time=$modification_time
        newest_file="$file"
    fi
done

echo "Newest file = $newest_file"

Aby jsi log znovu nekopíroval, tak buď zkontroluj pokud to lze zda-li již v cíli neexistuje. Případně si někam ulož informaci o tom, že jsi soubor již zkopíroval např. touch název_logu.copy.

19.5.2009 10:29 kubig
Rozbalit Rozbalit vše Re: Monitoring procesů

díky za pomoc..kontrolu jestli je daný log už zkopírovaný jsem udělal..možná trochu složitěji než je potřeba,ale funguje to...ten skript co jsi napsal mám dát do větve(true)??

19.5.2009 10:38 kubig
Rozbalit Rozbalit vše Re: Monitoring procesů

zatim ten skript vypadá takhle

 

zkr.verze :))

if top | grep "..."; then

      if ls ./  | grep "..."; then

             exit

     else

            ....tady potřebuju udělat to kopírování naposled vytvořeného logu??

    fi

else

    exit

fi

 

asi to není nejhezčí,ale funguje to...což mi stačí..je to jen workarround

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.