Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: Kirini - 20.01.12 - klo:10.04

Otsikko: linux komentorivi käsky ohjelmasta
Kirjoitti: Kirini - 20.01.12 - klo:10.04
Hei
osaisiko joku neuvoa seuraavanlaisessa ongelmassa.

tarvitsisi tehdä jmeter ohjelmalla(kuormitustestaus sovellus) komento joka antaa linux komentorivi käskyn.
windows puolella vastaavanlainen käsky on exec("C:\\program files\\internet explorer\\iexplore.exe www.google.com");

miten vastaavanlainen komento tehdään linux puolella.
esim käynnistetään mikä tahansa sovellus vaikka parilla parametrillä?
Otsikko: Vs: linux komentorivi käsky ohjelmasta
Kirjoitti: _Pete_ - 20.01.12 - klo:11.05
Hei
osaisiko joku neuvoa seuraavanlaisessa ongelmassa.

tarvitsisi tehdä jmeter ohjelmalla(kuormitustestaus sovellus) komento joka antaa linux komentorivi käskyn.
windows puolella vastaavanlainen käsky on exec("C:\\program files\\internet explorer\\iexplore.exe www.google.com");

miten vastaavanlainen komento tehdään linux puolella.
esim käynnistetään mikä tahansa sovellus vaikka parilla parametrillä?


Tee editorilla tiedosto, vaikka test.sh
Koodia: [Valitse]
#!/bin/sh

jmeter param1 param2 ....


Talleta se ja laita x lippu päälle:

chmod a+x test.sh

Tämän jälkeen sen voi suoraan ajaa ja scripti käynnistää jmeter parametreineen...

Otsikko: Vs: linux komentorivi käsky ohjelmasta
Kirjoitti: retu - 20.01.12 - klo:11.10
Samalla tavalla eli ohjelman nimi ensin, parametrit sitten.

Unixissa tosin käytetään polkujen erottimena / -merkkiä (eikä \).
Otsikko: Vs: linux komentorivi käsky ohjelmasta
Kirjoitti: ajaaskel - 20.01.12 - klo:11.29
Ja kun jotain käynnistetään päätteessä nykyisestä hakemistosta (=kansiosta) niin muista antaa piste-kautta siihen eteen:

./ohjelmani_jonka_käynnistän

Otsikko: Vs: linux komentorivi käsky ohjelmasta
Kirjoitti: Kirini - 20.01.12 - klo:11.35
ok, miten sellainen onnistuu että jmeter aukaisisi terminaalin ja ajaisi siinä esim "lr -al" komennon tai "gedit install.txt"

Otsikko: Vs: linux komentorivi käsky ohjelmasta
Kirjoitti: matsukan - 20.01.12 - klo:13.08
Ja millä ohjelmointikielellä jmeter on tehty? C/C++ vai millä? Oisko Qt softaa vai mitä? Varmaan kannattaa guuglata tyyliin |ohjelmointikieli]  exec linux ...

Tai ehkä jopa manuaali osaa kertoa asian.

Mutta ei kait sinun nyt tarvitse avaat terminaalia tätä exec kutsua varten.
Otsikko: Vs: linux komentorivi käsky ohjelmasta
Kirjoitti: retu - 20.01.12 - klo:13.20
Avaus riippuu pääteohjelmasta. Niitä menee varovasti arvioiden ~13-14kpl tusinaan. Joka työpöytäympäristössä on yleensä omansa. Lisäksi voi olla (ja yleensä onkin) asennettuna xterm tai rxvt tms. vanhempaa perua oleva pääteohjelma.

Esimerkiksi xterm-ohjelmalle ajettava ohjelma annetaan -e vipusella:
Koodia: [Valitse]
xterm -e ls -la
Jollet sattumalta ehdi lukea listausta, kokeile:
Koodia: [Valitse]
xterm -e ls -la |lessNiin saat hakemistolistauksen vieritettävässä muodossa. Komento less on kuten vanha dossistakin tuttu more, paitsi parempi (less is more, unix huumoria nääs).

Tuo gedit on gui ohjelma, joten sitä on minusta turha ajaa päätteessä, mutta menisi samoin kuin ls.
Otsikko: Vs: linux komentorivi käsky ohjelmasta
Kirjoitti: Kirini - 20.01.12 - klo:13.30
Voi olla että Retu antoi toimivan vastauksen, pitää kokeilla sitä kunhan pääsen kotiin.

Jmeter käyttää javaa, joten javalla pitäisi pystyä koodaamaan.

vielä lisä kysymys:
tuo todennäköisesti on siten että scripti odottaa että komennon suoritus loppuu ja vasta sitten jatkaa
miten saman asian pystyisi tekemään "fire-and-forget" tyyliin, eli vastausta ei odoteta konsoliin.

riittääkö pelkkä & merkki lopussa.
Otsikko: Vs: linux komentorivi käsky ohjelmasta
Kirjoitti: Tomin - 20.01.12 - klo:17.03
riittääkö pelkkä & merkki lopussa.
Näinhän se yleensä komentorivillä tehdään. Tietenkin riippuu miten tuo Javassa tehdään, koska voisihan sekin odottaa kunnes suoritus loppuu.
Otsikko: Vs: linux komentorivi käsky ohjelmasta
Kirjoitti: odysseus - 26.01.12 - klo:17.36
riittääkö pelkkä & merkki lopussa.
Näinhän se yleensä komentorivillä tehdään. Tietenkin riippuu miten tuo Javassa tehdään, koska voisihan sekin odottaa kunnes suoritus loppuu.

Vähän MUTU-vastaus, mutta eikös se Javakin käynnistä tuossa uuden prosessin (vastaa siis komennon lopussa &, joka käynnistää taustalle toisen komentotulkin), jolloin ei sitten jäädä osottamaan toiminnon loppumista samassa konsolissa.
Javassakin kaiketi pitää erikseen sanoa kun halutaan käynnistää thread prosessin sisällä.... ? ...olen kyllä huono tässä, mutta C/C++:lla ainakin asiassa on vissi ero.

Tuo "exec"-kutsuhan on kuitenkin käyttöjärjestelmätasoa (vrt: "fork" ja "thread" ohjelman sisällä), eli puhutaan prosesseista eikä säikeistä.
Otsikko: Vs: linux komentorivi käsky ohjelmasta
Kirjoitti: ilkkak - 27.01.12 - klo:17.55

Jmeter käyttää javaa, joten javalla pitäisi pystyä koodaamaan.


Javasta voi suoraan antaa käyttöjärjestelmäkomentoja alustariippumattomalla tavalla.

Laita omaan säikeeseensä

Runtime rt = Runtime.getRuntime();
Process p = rt.exec(command);

Tietysti itse komennon pitää olla alustanoma komento.