Jump to content
GSForum - Segélyvonal

Shell script futtatása php-ban


juhostt
 Share

Recommended Posts

juhostt

Sziasztok.

Van egy progi, amit screen-be szeretnék elindítani webes felületen (php).

A hiba megoldásához linux - bash ismeretre van szükség, nem php-ra, ezért is nyitottam itt a témát.

A gond az, hogy alapból a www-data nem indít el terminált, így nincs mit screen-be tenni. És ez lenne az ok, amiért segítségetek szeretném kérni.

Annyit tudok, hogy bash-t kell elindítani, de hiába próbáltam, sehogy sem jött össze.

próbáltam pár lehetőséget**

bash -t --- ez létrehoz egy új terminált, de mivel php-ban fut, elindul, és le is áll

bash -c screen --- php-ból indítva ilyenkor is azt kapom, hogy nincs terminál...

bash -t -c screen --- ez shellben működik, php-ban a szokásos: nincs terminál hibát kapom.

bash -t -c screen -m -d ez shellben működik, php-ban a szokásos: nincs terminál hibát kapom.

A script:

**
#ez tarolja, el, mit ir ki a script lefutas utan
exec >/logok/start.sh.out 2>&1
echo $path
which radio

#Ez a script, ami shell-ben lefut, php-ban nem
screen -d -m radio
screen -r -X quit

 

Már 1 hete küzdök vele, de kifogytam az ötletekből.

Egy részletes doksi, vagy link, (angol, v magyar) is bőven megtenné. googleztam, de nem sok sikerrel.

Előre is köszönök minden segítséget.

Link to comment
Share on other sites

KGigi

Nem hiszem, hogy ez a gond, de a script elsõ sorában meg kell adni a bash helyét.

Link to comment
Share on other sites

juhostt
Nem hiszem, hogy ez a gond, de a script első sorában meg kell adni a bash helyét.

 

Ha a #!/bin/bash -ra gondolsz, azzal kezdtem, de az egyáltalán nem jó. Tesztként betettem a scriptbe egy mkdir teszt parancsot. Ez lefut php-ban is, ha nincs #!/bin/bash megadva. Ha meg van adva, egyáltalán nem fut le a script, ezért ahelyett a **-al jelölt parancsokat próbáltam, eddig sikertelenül.

Link to comment
Share on other sites

arpsoft

Csak azért, hogy jól értem-e:

egy webes kérés során futtatsz egy php szkriptet a szervereden, ami a szerveren indít egy bash-t, ami az eredményt lerakja egy fájlba. Jól értelmezem? Ez lenne a feladat?

Link to comment
Share on other sites

KGigi

Arra gondolok, de ha úgy nem mûködik, az azt jelenti, hogy nem abban a könyvtárban van a bash.

Link to comment
Share on other sites

juhostt
ami az eredményt lerakja egy fájlba.

 

Nem azon van a hangsúly, h egy fileba rakja le. ( mármint ha az x.sh.out-ra gondoltál)

hanem azon, hogy mikor lefut a script, akkor www-data ( vagyis web ) felhasználó indítson egy bash-t ( egy új terminált) és ebben indítsa el screen-be a progit, amit szeretnék futtatni, és automatikusan tegye le háttérbe. ( ide kellenek kapcsolók)

addig eljutottam, hogy tudok nyitni új terminált: bash -t

ezután jönne a screen-be a progi futtatása, majd háttérbe tétele automatikusan. ez a gond, h nem teszi automatikusan háttérbe magát. elvileg az -m -d kapcsoló páros lenne a megoldás. ez shell-be mûködik, php-ban nem.

Próbáltam olyat, hogy nyitok egy terminált, azt screenb-e teszem, aztán ebben a terminálban indítani el megint csak egy új screen-be a progit.

amit itt leírtam, azt mind egy fileba kell foglalni, és php-val lefuttatni.

 

update: megoldottam

Link to comment
Share on other sites

arpsoft

És mi volt a megoldás?

Link to comment
Share on other sites

juhostt

Nem a terminált kell elindítani, mint ahogy hittem, hanem a progit. Így nem az üres terminál, hanem a progi fog screen-be futni.

Edited by KGigi
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...