Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: 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ä?
-
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
#!/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...
-
Samalla tavalla eli ohjelman nimi ensin, parametrit sitten.
Unixissa tosin käytetään polkujen erottimena / -merkkiä (eikä \).
-
Ja kun jotain käynnistetään päätteessä nykyisestä hakemistosta (=kansiosta) niin muista antaa piste-kautta siihen eteen:
./ohjelmani_jonka_käynnistän
-
ok, miten sellainen onnistuu että jmeter aukaisisi terminaalin ja ajaisi siinä esim "lr -al" komennon tai "gedit install.txt"
-
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.
-
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:
xterm -e ls -la
Jollet sattumalta ehdi lukea listausta, kokeile:
xterm -e ls -la |less
Niin 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.
-
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.
-
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.
-
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ä.
-
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.