Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Nezafungoval mi správě pgrep, ale nevím proč:(  (Přečteno 4149 krát)

timmynovak

  • Aktivní člen
  • *
  • Příspěvků: 300
Nezafungoval mi správě pgrep, ale nevím proč:(
« kdy: 13 Listopadu 2011, 19:59:14 »
Ahoj, mám následující skript spouštěný cca 1 za 5 vteřin a testující mi existenci procesu (je to navíc démon):
Kód: [Vybrat]
if [ `pgrep j1.out` ]; then
  exit
else
  /home/user1/j1.out
fi


dnes se mi ale stalo, že skript začal spouštět další a další j1.out, což o to, další bych chápal, ale proč, když běžel první a nedošlo k jeho pádu spustil nový? V lozích nic:( Díky za nakopnutí.

daysleeper

  • Stálý člen
  • **
  • Příspěvků: 1206
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #1 kdy: 13 Listopadu 2011, 20:32:40 »
Takže nakopnutí... OK.  ;)
Kód: [Vybrat]
~ $ pgrep sleep
14541
~ $ if [ `pgrep sleep` ]; then echo sleep běží; else echo neběží; fi
sleep běží
~ $ sleep 1m &
[1] 14562
~ $ if [ `pgrep sleep` ]; then echo sleep běží; else echo neběží; fi
bash: [: 14562: unary operator expected
neběží

RNA

  • Stálý člen
  • **
  • Příspěvků: 630
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #2 kdy: 13 Listopadu 2011, 21:05:36 »
Ještě bych doplnil:
rna@asrock-rna:~> pgrep http
3970
3975
3976
3978
3979
3980
9152
9153
9154

timmynovak

  • Aktivní člen
  • *
  • Příspěvků: 300
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #3 kdy: 13 Listopadu 2011, 21:42:48 »
když je tam vícekrát, tak chápu, že se to pak spouští dokola... ale on by měl běžet jen jednou, nic dalšího, vyjma tohoto skriptu ho spustit nemůže, ani není suspendován, nic takového:(

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #4 kdy: 13 Listopadu 2011, 22:32:03 »
Tohle by mělo být lepší:
Kód: [Vybrat]
if ! pgrep j1\.out; then /home/user1/j1.out; fi

daysleeper

  • Stálý člen
  • **
  • Příspěvků: 1206
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #5 kdy: 13 Listopadu 2011, 23:09:59 »
Tohle by mělo být lepší:
Kód: [Vybrat]
if ! pgrep j1\.out; then /home/user1/j1.out; fi
Na co to lomítko?  ;)

Kód: [Vybrat]
~ $ strace -e trace=execve pgrep j1\.out
execve("/usr/bin/pgrep", ["pgrep", "j1.out"], [/* 37 vars */]) = 0
~ $ strace -e trace=execve pgrep j1.out
execve("/usr/bin/pgrep", ["pgrep", "j1.out"], [/* 37 vars */]) = 0

daysleeper

  • Stálý člen
  • **
  • Příspěvků: 1206
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #6 kdy: 13 Listopadu 2011, 23:12:40 »
Osobně bych doporučoval:
1. Nepoužívat
Kód: [Vybrat]
if [ `prikaz` ]
ale
Kód: [Vybrat]
if prikaz

2. Používat plnou cestu
Kód: [Vybrat]
pgrep -f '/home/user1/j1\.out'
# nebo
pidof /home/user1/j1.out
« Poslední změna: 13 Listopadu 2011, 23:14:42 od daysleeper »

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #7 kdy: 13 Listopadu 2011, 23:32:03 »
Tohle by mělo být lepší:
Kód: [Vybrat]
if ! pgrep j1\.out; then /home/user1/j1.out; fi
Na co to lomítko?  ;)

Máš pravdu, mám tam chybu, mělo to být:
Kód: [Vybrat]
if ! pgrep 'j1\.out'; then /home/user1/j1.out; fi
Tečka značí libovolný znak přeci. Ale escapovat se dá pouze po uzavření do uvozovek.

Asi jsi to nepsal, že nevíš, ale zas to třeba neví někdo jiný :)

Mi to nedá ještě dovysvětlit.. Tak jak jsem to napsal lomítkem escapuju tečku pro interpret Bashe, který to projede, a pgrepu dodá stejně pouze řetězec j1.out, zatímco po uzavření do uvozovek, dostane pgrep regulární výraz v plném znění 'j1\.out', aby vyhledal řetězec s tečkou a né libovolným znakem na jejím místě.
« Poslední změna: 13 Listopadu 2011, 23:56:57 od GdH »

timmynovak

  • Aktivní člen
  • *
  • Příspěvků: 300
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #8 kdy: 14 Listopadu 2011, 09:44:57 »
díky všem, chápu různá řešení, ale nerozumím tomu, proč když proces prokazatelně běžel, tak můj skript zdetekoval, že neběží:(

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #9 kdy: 14 Listopadu 2011, 09:54:52 »
Ahoj, mám následující skript spouštěný cca 1 za 5 vteřin a testující mi existenci procesu (je to navíc démon):
Kód: [Vybrat]
if [ `pgrep j1.out` ]; then
  exit
else
  /home/user1/j1.out
fi


dnes se mi ale stalo, že skript začal spouštět další a další j1.out, což o to, další bych chápal, ale proč, když běžel první a nedošlo k jeho pádu spustil nový? V lozích nic:( Díky za nakopnutí.
protoze ten test je blbost ... blbe napsanej ...:D ..

Kód: [Vybrat]
test `pgrep $foo` je jednim slovem kravina ;)

dej tam:

Kód: [Vybrat]
pgrep j1.out || /home/user1/j1.out;
« Poslední změna: 14 Listopadu 2011, 09:57:02 od ntz_reloaded »
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

timmynovak

  • Aktivní člen
  • *
  • Příspěvků: 300
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #10 kdy: 14 Listopadu 2011, 10:59:21 »
OK, chápu, že když to nezafungovalo, je to rozbitý:) to vím taky. díky i za radu, jak z toho ven. učím se věci ale i proto, abych jim rozuměl, čili, můžeš mi, prosím, vysvětlit, zda:
pgrep `cokoli`

při výskytu cokoli pouze 1 x vrátit najednou něco jiného, než jindy? A pokud ano, proč? žil jsem v domění, že vypíše proces (PID). Děkuji.

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #11 kdy: 14 Listopadu 2011, 11:07:21 »
michas jablka s hruskama ..  precti si prosim v manualu a vyzkousej jak funguje test ,, nijak to nesouvisi s pgrepem a tim co vypise
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

timmynovak

  • Aktivní člen
  • *
  • Příspěvků: 300
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #12 kdy: 14 Listopadu 2011, 11:21:15 »
Kód: [Vybrat]
       test ( EXPRESSION )
              EXPRESSION is true

předpokládám, že jakékoli kladné číslo je se vyhodnotí jako TRUE. Nebo se pletu? A PID bylo k dispozici, tj. kladné číslo ve výrazu. A nebo to (což je velmi pravděpodobné) nechápu.

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #13 kdy: 14 Listopadu 2011, 11:33:05 »
Kód: [Vybrat]
# [ `false` ] || echo takhle to nefunguje
takhle to nefunguje

# [ false ] && echo takhle to funguje
takhle to funguje
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

timmynovak

  • Aktivní člen
  • *
  • Příspěvků: 300
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #14 kdy: 14 Listopadu 2011, 11:44:49 »
děkuji

daysleeper

  • Stálý člen
  • **
  • Příspěvků: 1206
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #15 kdy: 14 Listopadu 2011, 12:10:07 »
Nevysvětluje to ale, proč mu to někdy "fungovalo", a někdy ne.

Jinak jsem se koukal, že je to docela oblíbený způsob testování, např.  :)
Kód: [Vybrat]
http://www.google.com/codesearch#naIFDuIU500/trunk/devtools/ydoc/po-tools/po-insert&ct=rc&cd=8&q=if\%20\[\%20\%60[^=]*\%60\%20\]%20lang:^shell$
viz řádek if [ `grep fuzzy $i` ] ; then

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #16 kdy: 14 Listopadu 2011, 12:16:40 »
Řekl bych, že důvodem bylo to, co naznačil RNA - měl už tehdy omylem puštěno instancí více.

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #17 kdy: 14 Listopadu 2011, 12:17:45 »
ach jo .. to co odkazujes je **spatne .. to ze to je na internetu neznamena, ze to neni blbost

proc kluk tvrdi ze to predtim fungovalo a potom ne neresim .. je to zcela irelevantni
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

daysleeper

  • Stálý člen
  • **
  • Příspěvků: 1206
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #18 kdy: 14 Listopadu 2011, 12:32:22 »
ach jo .. to co odkazujes je **spatne .. to ze to je na internetu neznamena, ze to neni blbost

proc kluk tvrdi ze to predtim fungovalo a potom ne neresim .. je to zcela irelevantni
Se hned nerozčiluj, já nikde netvrdím, že je to správně   :)
A není to "někde z internetu", vzal jsem to z yast2-devtools ze stránek OpenSuSE Factory for noarch
http://rpmfind.net//linux/RPM/opensuse/factory/noarch/yast2-devtools-2.21.6-1.1.noarch.html

Jinak souhlas s GdH.

timmynovak

  • Aktivní člen
  • *
  • Příspěvků: 300
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #19 kdy: 14 Listopadu 2011, 12:39:41 »
Řekl bych, že důvodem bylo to, co naznačil RNA - měl už tehdy omylem puštěno instancí více.
Ne, neměl:)

timmynovak

  • Aktivní člen
  • *
  • Příspěvků: 300
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #20 kdy: 14 Listopadu 2011, 12:41:53 »
proc kluk tvrdi ze to predtim fungovalo a potom ne neresim .. je to zcela irelevantni
pro mne zcela relevantni, protoze se vzdy vse snazim pochopit. jestlize cca rok mi to funguje na dvou mistech k plne spokojenosti, tak se snazim pochopit, co zpusobilo to, ze to najednou bylo blbe. vim, ze vice instanci daneho procesu nebezelo. Najednou z niceho nic se test vyhodnotil spatne. Ja nepopiram a v tento moment ani neresim to, ze ten test je spatne jako takovy, jen bych chtel vedet, proc najednou selhal. Když budu místo sčítání používat násobení, tak sice dostávám špatný výsledek, ale vždy stejný. tady se to tak nestalo:(

daysleeper

  • Stálý člen
  • **
  • Příspěvků: 1206
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #21 kdy: 14 Listopadu 2011, 12:54:27 »
Další varianta je, že ti běžel proces, který vyhověl vzoru j1.out, čili např. můj12outsider.

Jasněji bude, když spustíš ten skript s přepínačem -x (debug)
Kód: [Vybrat]
#! /bin/bash -x
a jeho výstup zaznamenáš do logu.

timmynovak

  • Aktivní člen
  • *
  • Příspěvků: 300
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #22 kdy: 14 Listopadu 2011, 17:15:23 »
dík za tip na zaznamenávání, myslíms i, že se to už nestane (vzhledem k tomu, jak dlouho se to nestalo předtím), shoda masky je jistě vyloučitelná, já ten název jen zkrátil, ve skutečnosti je to jddrz2011tm.out

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #23 kdy: 15 Listopadu 2011, 10:02:13 »
me uz to stve .. nechapu na co se furt dokola ptas ... ja osobne neverim ze to bylo jak rikas - tim nemyslim ze bys nerikal pravdu, ale spis myslim ze v tom mas trocha bordel .. proste to nahrad ve skriptu za

if ! pgrep j1.out; then
    /home/user1/j1.out;
fi
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

timmynovak

  • Aktivní člen
  • *
  • Příspěvků: 300
Re:Nezafungoval mi správě pgrep, ale nevím proč:(
« Odpověď #24 kdy: 15 Listopadu 2011, 20:32:11 »
a víš co štve mne? tvoje neuvěřitelná nadutost a povyšování, nejsem jediný, kdo má ten názor. když neznáš odpověď, tak neodpovídej. a ne, nemám v tom bordel, vím, že prostě proces se stejným jménem se tam objevit znovu nemohl. OK, ten test je blbě a na to jsem neřekl ani ň. To ale nevysvětluje to, k čemu došlo. OK, chápu, odpověď nevíš nebo nechceš odpovědět - ale prosím už se konečně přestaň navážet do mne nebo do kohokoli jiného. Ano, mám tě osobně za nadutého a přechytralého hňupa. Ne nadarmo se o tobě říká, ten, jehož jménos enevyslovuje. máte ledasco společného. a klidně mi dej ban.

 

Provoz zaštiťuje spolek OpenAlt.