Üdv!
A köv problémát szeretném megoldani: egy parancsot kéne pár paraméterrel futtatni háttérben, úgy hogy indulás után daemonként fusson és végezze a dolgát.Az egyetlen probléma, hogy ennek a parancsnak van olyan paramétere, amit idézőjelek közé kell irogatni sőt még szóköz is van az idézőjelek között, és ezzel a screen sehogy sem tud kibékülni.
Így próbáltam:
#!/bin/bash
cd /ahol/a/progi/van
screen -dmS folyamat_neve ./ezt_futtatom -parameter "pontos ertek"
Amire ezt adja:
WARNING: unrecognized parameter 'ertek"'
próbálkoztam ezen kívül 1000 variációval, gúgliztam is, de most fogyott el a türelmem, ezért kérem a segítségeteket :)
Előre is köszi!
- 1566 megtekintés
Hozzászólások
És ha így próbálod?
screen -dmS folyamat_neve ./ezt_futtatom -parameter "\"pontos ertek\""
vagy így:
screen -dmS folyamat_neve ./ezt_futtatom -parameter '"pontos ertek"'
man bash-ban van egy fejezet az escapelésről, szerintem ennek a problémának nincs köze a screen-hez.
- A hozzászóláshoz be kell jelentkezni
Sajnos ezekkel sem működik, de akkor elolvasom a bash man-ját. Köszi az 5letet!
- A hozzászóláshoz be kell jelentkezni
Miért akarod screen-ben futtati? Néha rá kell nézni? Ha nem, akkor erre inkább a
nohup
parancs való.
Egyébként szerintem
screen <parancs neve> \"argumentum\"
Tesztelés: [/code]kiir[/code] file:
#!/bin/bash
echo $1
read alma
echo alma
És akkor a
screen kiir alma
eredménye
alma
(és vár egy enterre, azért van benne a read, hogy lásd az eredményt), a
screen kiir \"alma\"
eredménye pedig
"alma"
szóval ennek szerintem mennie kell,
- A hozzászóláshoz be kell jelentkezni
Az a
nohup
jól hangzik, man nohup aztán próbálgatom.
- A hozzászóláshoz be kell jelentkezni
Köszi ezzel működik, úgytűnik ilyesmi lesz a megoldás (ha vkinek még kéne később):
#!/bin/sh
cd /ide/lepek/be
nohup ./progi_neve -param "hosszu parameter" &
- A hozzászóláshoz be kell jelentkezni
Érdemes megtekintened akkor az "at" paracsot is. Ha időnek azt adod meg hogy "now", akkor azonnal indítja a megadott programokat.
Ez a megoldás akkor bír hasznos lenni, ha egy alkalmazás indít egy másikat, amelyik futva marad a háttérben. (pl. mentés végén egy adatbázis elindítása) Ha a háttérben futtatandó program indító része rosszul van megírva és nem tér vissza, akkor előfordulhat hogy az azt meghívó program nem fejezi be a futását. Ha az at paranccsal indítod akkor az at természetesen azonnal visszatér és az alkalmazásod befejezheti a futását. Az pedig, hogy elindítandó program mit csinál, nos az kit érdekel? :D
Igen, a fenti megoldás egyetlen problémája, hogy nincs visszajelzés a második alkalmazás elindításáról.
Ave, Saabi.
- A hozzászóláshoz be kell jelentkezni
Ez igaz, egyenlőre jó ez nekem nohup-al, de ez az "at" beindította a fantáziámat, még jól fog jönni:) Köszi!
- A hozzászóláshoz be kell jelentkezni
Én kipróbáltam és nekem tökéletesen működik a screen meg az idézőjelek, ahogy leírtad a parancsot. Milyen screen verzió? Nálam 4.0.2.
- A hozzászóláshoz be kell jelentkezni