Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Lukáš Vlček 20 Února 2013, 18:59:29
-
Ahoj,
Chtěl bych poprosit o radu.
Potřebuji jak dlouho trval nějaký proces a dále kolik si vzdal procesorového času. Dá se to nějak zjistit?
Děkuji za každou radu/připomínku.
-
man time
-
Díky =) To mě nenapadlo... :D Ještě bych se chtěl zeptat jestli jde nějak ověřit jestli proces(job) stále běží nebo už skončil.
Dělám jednu úlohu a potřebuji jí volat znovu s vyšším parametrem poté co ta původní skončí... Nevíte jak to ověřit?
Moje myšlenka je že do nějaké proměnné ukládat daného ID procesu(jobu) a pak se pomocí cronu ověřovat zda běží nebo už skončil...
-
Kouknout - vidět (a případně uložit...)
ps -A | grep <program>
Co kdyby ta úloha na konci forknula (spustila v jiném procesu) sama sebe s jiným parametrem?
Pokud je ten řetěz krátký, tak stačí napsat script který je sekvenčně zavolá...hledej základy příkazového řádku...
-
Ještě bych se chtěl zeptat jestli jde nějak ověřit jestli proces(job) stále běží nebo už skončil
no já bych ten program spouštěl pomocí scriptu, kde bych napsal něco jako ps -e | cut -c -5 > $PWD/ps.log
to by mi mělo vytáhnout ID procesu a uložit do logu. Taky se chráníš před sledováním nesprávného programu (pokud by jich běželo víc současně). Pak bych si ho vytáhl ze všech běžících programů podle názvu #ps | grep program | cut -c -5 > $PWD/psall.log
a pak porovnáváním jen čekal, kdy zmizí. Ale je to střeleno jen narychlo od pasu ::)
-
Asi takhle mám napsaný program který spouštím na clusteru kde se vytvoří x paralelních jobů (záleží kolik je vstupních souborů - pro každý soubor jeden job) tady ten program počítá průchodnosti elektrických obvodů pomocí log. hradel přes vektory(který jsou ve vstupním souboru) a pak následně generuje reporty...
Vesměs všechno mám(teď už i ten CPU time + real time :D)
Jen toto musím ještě dodělat:
Ten program má udělaný tak že se nastavuje hodnota do které testuje vektor... Tak a když je hodnota 1 tak vyhodí hromadu vektorů který nejdou vyřešit... tak se zvedne hodnota např 100* teď už job trvá delší dobu(testuje více do hloubky) a už vyhodí méně vektorů které nejdou vyřešit a pořád se to opakuje dokud nezbudou jen opravdu neřešitelné vektory + chybné vektory.
Dělá se to proto že je to rychlejší než nastavit hodnotu na 100.000 a čekat protože by se testoval každý vektor do hloubky 100.000 což by bylo náročnější i na výpočetní výkon.
Měl jsem myšlenku(jako jsem psal nahoře v příspěvku... třeba po 5 min kontrolovat ID jobu) a když už není tak spustit znovu s větší hodnotou
Kouknout - vidět (a případně uložit...)
ps -A | grep <program>
Co kdyby ta úloha na konci forknula (spustila v jiném procesu) sama sebe s jiným parametrem?
Pokud je ten řetěz krátký, tak stačí napsat script který je sekvenčně zavolá...hledej základy příkazového řádku...
To co píšete zní velmi zajímavě určitě vyzkouším
Vesměs to spouštím tímto jednoduchým sh
for fname in `ls ~/projekt/BENCH/`
do
fn=`basename "$fname" .bench`
echo "Job pro: $fname = $fn"
qsub -cwd -b y -j y ./ATALANTA -N -b 1 -B 0 -Z -W 2 -X -n ~/BENCH/$fname -F ~/projekt/PROCESSED/$fn".processed" -t ~/projekt/TEST/$fn".test" -U ~/projekt/ABORTED/$fn".aborted" -P ~/projekt/REPORT/$fn".report"
done