[ vlax352 @ 16.12.2003. 02:37 ] @
imam jedan problem sa linuxom.....
bakcem se s njim duze vec vreme i dosta sam toga shvatio
ali ovo bih molio ako neko zna da pomogne

naime radi se o tome kad hocu nekom programu dam da radi u pozadini...
i za tu svrhu se koristi & simbol u komadnoj liniji
medjutim cesto mi se desi da umesto da program pokrene u pozadini meni pri bolo kakvom pokusaju izlaska iz programa samo ga stopira (+stopped) jel zna neko zasto se ovo desava.... inace sistem je redhat 9.1
hvala unapred

[ random @ 16.12.2003. 08:55 ] @
Moram da priznam da nisam najbolje razumeo pitanje, ali ajde da probam ovako, "generički"...

To [1]+ Stopped bi trebalo da dobiješ samo ako programu pošalješ STOP signal (^Z na tastaturi). Nakon toga možeš da prebaciš program u pozadinu (komandom `bg' recimo) ili da ga vratiš u prvi plan (npr. komandom `fg').

Ako želiš da prekineš rad (izađeš iz) interaktivnog programa, najlakše je da mu pošalješ INT signal (^C na tastaturi).

Pogledaj u bash(1) manualu sekciju JOB CONTROL.
[ caiser @ 16.12.2003. 09:04 ] @
Takodje, korisna stvarcica moze da bude kill %broj_job-a. Time ubijas neki program koji je stopiran ili radi u pozadini. Broja job-a mozes da vidis u zagradama. A job-ove mozes da izlistas sa komandom jobs.
[ random @ 16.12.2003. 09:38 ] @
Sad mi pade na pamet još nešto. U slučaju da program koji si startovao u pozadini zapravo treba da čita sa standardnog ulaza (stdin), onda će biti stopiran. Na primer:

Code:
random@avalon random $ cat &
[1] 3584

[1]+  Stopped                 cat
random@avalon random $


Drugim rečima, proces čeka da pročita input sa stdin, a pošto da bi ga bacio u pozadinu moraš da otkačiš njegov stdin fajl deskriptor sa terminala u kome radiš, shell ga prvo stopira da on ne bi izašao kad mu se zatvori fajl deskriptor iz koga čita.
[ vlax352 @ 16.12.2003. 14:38 ] @

evo jednog primera pokusao sam da njega stavim u background
ali nesto nestima mada ovo nije jedini primer ali je trenutno aktuelan
:)))

[braveheart@bheart overnet]$ ./overnet0.51.2 - &
[1] 20328
[braveheart@bheart overnet]$ Welcome to Overnet command line client 0.51.2
Enter commands at any time (type '?' for help)
> q
bash: q: command not found

[1]+ Stopped ./overnet0.51.2 -
[braveheart@bheart overnet]$


[ filmil @ 16.12.2003. 14:48 ] @
Citat:
"vlax352" wrote:
[braveheart@bheart overnet]$ ./overnet0.51.2 - &
[1] 20328
[braveheart@bheart overnet]$ Welcome to Overnet command line client 0.51.2
Enter commands at any time (type '?' for help)

q

bash: q: command not found


Evo šta se dešava. Ampersandom si postavio program u pozadinu; a ti si
se vratio u komandnu liniju. Međutim, program kog si pokrenuo je
interaktivan, dakle očekuje komande sa standardnog ulaza, što se može
videti po upitu Enter commands at any time. Ako sada otkucaš q
kao što si uradio, ta komanda q međutim ide shellu, a ne overnetu
(overnet je otišao u pozadinu, sećaš se?).

Jedno rešenje ti je da u datoteku, npr komande.txt otkucaš spisak
komandi sa tastature koje bi trebalo da daš overnetu, pa da ga pokreneš sa

../overnet0.51.2 < komande.txt &

Drugo rešenje ti je da ga pokreneš normalno (dakle bez ampersanda),
uneseš komande koje te zanimaju i ostaviš da radi. Zatim suspenduješ
proces sa ^Z i zatim ga komandom bg baciš u pozadinu. Komandom fg ga
uvek možeš vratiti u prvi plan (vidi: man bash).

Takođe je pametno ovakve programe startovati sa:

nice nohup ./overnet0.51.2 < komande.txt &

što sprečava da prekidanje veze sa računarom (nohup), odnosno izlazak iz
trenutnog šela ubije program, i nalaže mu da se prijateljski odnosi
prema ostalim programima na sistemu (nice).

Zaista treba da pročitaš man bash.

f
[ vlax352 @ 16.12.2003. 16:02 ] @
ok, hvala podrsci... prosao sam man bash onako ovlas ali moram uzeti vremena da ga ljudski prostudiram ... inace linux mi se mnogo svidja i dosta se dobro snalazim...
ali jos uvek ima mnogo toga da se nauci..... hvala svima na savetima
[ Milos Sreckovic @ 29.08.2006. 13:00 ] @
Citat:

Code:
random@avalon random $ cat &
[1] 3584

[1]+  Stopped                 cat
random@avalon random $

čita.


Ovo se i meni desava samo sa nekim moji mojim programom, ali kad ga pokrenem bez & on radi normalno.
Znaci samo kad stavim & on pokaze Stopped i nece da radi.
Moj program je pisan u c++ i poziva funkciju system() da bi pokrenuo drugi program, kada otkucam "ps aux" vidim da su i taj moj program i program koji on pokrece stopirani odnosno pored njih stoji "STAT TN". ako neko zna sta se desava... Mozda je zbog procedure system() ali sa drugim programima mi normalno radi..
[ VRider @ 29.08.2006. 13:05 ] @
Za interaktivne programe, ubedljivo najbolje resenje koje sam ja nasao je da ih startujes u screen-u, od koga se posle otkacis. rTorrent, wget i kompanija + screen i nema ga bolje.
[ random @ 29.08.2006. 14:10 ] @
Citat:
konj: Ovo se i meni desava samo sa nekim moji mojim programom, ali kad ga pokrenem bez & on radi normalno.
Znaci samo kad stavim & on pokaze Stopped i nece da radi.
Moj program je pisan u c++ i poziva funkciju system() da bi pokrenuo drugi program, kada otkucam "ps aux" vidim da su i taj moj program i program koji on pokrece stopirani odnosno pored njih stoji "STAT TN". ako neko zna sta se desava... Mozda je zbog procedure system() ali sa drugim programima mi normalno radi..


Da li taj tvoj program, ili taj drugi program pozvan preko system() poziva čitaju neke podatke sa stdin?
[ Milos Sreckovic @ 29.08.2006. 19:51 ] @
Citat:
random: Da li taj tvoj program, ili taj drugi program pozvan preko system() poziva čitaju neke podatke sa stdin?


NE, u tome i jeste fora.. Cita jedino iz fajla. Najgore od svega je sto ako ga pustim bez & onda radi normalno, a ako stavim & onda se stopira... A meni treba da ga pustam preko CRON-a svaki dan u 3am i pokusao sam i tako i nocas nije nista uradio samo su ostali stopirani procesi... Inace je to program za backup koji se izvrsava na serveru u firmi..
[ Milos Sreckovic @ 29.08.2006. 20:01 ] @
OK, izolovao sam problem na program zvani DAR. Znaci on hoce (sa bilo kojim parametrima) da radi bez & a nece sa &... Da li se neko susretao sa tim..
[ VRider @ 29.08.2006. 20:02 ] @
Jel to program ili skript? Mozes ovde da bacis skript da ga pogledamo.
A i sto bi ga preko cron-a pustao u pozadini, kada se on i ovako izvrsava u pozadini?

Znaci:
40 4 * * * /putanja/do/skripta/skript 2>&1 > /var/log/izlaz.log

Nikakvo eksplicitno bacanje u pozadinu.

EDIT: Postoji li neki odredjen razlog zasto koristis dar, a ne tar, koji je malko standardniji?
[ Milos Sreckovic @ 29.08.2006. 20:26 ] @
pokrenem komandu
Code:

dar -c aaa -X "aaa.*.dar" &


i on pi prebaci to u stopped i nece da zavrsi, a samo da skinem & on radi...

Koristim dar jer mogu da pravip backup samo onih fajlova koji su se promenili u odnosu na juce i zato sto ima dar_manager koji mi kaze kad je koji fajl zapamcen i od kad nije diran...
[ Milos Sreckovic @ 29.08.2006. 20:43 ] @
Upravo sam pokusao i na drugom kompu i isto se desava!!! Najgrore od svega je sto je do pre par dana sasvim normalno radilo.
[ VRider @ 29.08.2006. 20:51 ] @
A ako se pokrece iz cron-a bez "&" na kraju?
[ Milos Sreckovic @ 29.08.2006. 20:59 ] @
Ja mislim da je 12 sati na kompu previse za mene!!!
Nikad u cronu(odnosno fcron-u) nije ni bilo &, ali ni u njemu nije htelo da radi a nije ni sa & pa sam ja to nekako poistovetio...
I dok sam trazio bug, izgleda asm ispeglao ono sto je smetalo cron-u pa sad u njemu radi, sto je meni dovoljno i hvala vam svima sto ste se cimali. Ali eto ostaje pitanje zasto "dar" nece da radi sa &. bio bih zahvalan ako bi neko instalirao kod sebe i video da li se i kod njega isto desava...
[ random @ 30.08.2006. 14:48 ] @
Sad sam pogledao man stranicu za dar. Jel si probao sa dar -Q ...?