Kirjoittaja Aihe: linux komentorivi käsky ohjelmasta  (Luettu 4684 kertaa)

Kirini

  • Käyttäjä
  • Viestejä: 160
    • Profiili
linux komentorivi käsky ohjelmasta
« : 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ä?
Kubuntu 6.10, P4,512mb(sdram),60gb+20gb,gforce fx5200,twinhanDVT alpha(usb)...

_Pete_

  • Käyttäjä
  • Viestejä: 1845
  • Fufufuuffuuu
    • Profiili
Vs: linux komentorivi käsky ohjelmasta
« Vastaus #1 : 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...


retu

  • Käyttäjä
  • Viestejä: 949
    • Profiili
Vs: linux komentorivi käsky ohjelmasta
« Vastaus #2 : 20.01.12 - klo:11.10 »
Samalla tavalla eli ohjelman nimi ensin, parametrit sitten.

Unixissa tosin käytetään polkujen erottimena / -merkkiä (eikä \).

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Vs: linux komentorivi käsky ohjelmasta
« Vastaus #3 : 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

Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

Kirini

  • Käyttäjä
  • Viestejä: 160
    • Profiili
Vs: linux komentorivi käsky ohjelmasta
« Vastaus #4 : 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"

Kubuntu 6.10, P4,512mb(sdram),60gb+20gb,gforce fx5200,twinhanDVT alpha(usb)...

matsukan

  • Käyttäjä
  • Viestejä: 2152
    • Profiili
Vs: linux komentorivi käsky ohjelmasta
« Vastaus #5 : 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.
« Viimeksi muokattu: 20.01.12 - klo:13.10 kirjoittanut syrtek66 »
Pohjois-pohjanmaa
-- motto:  backupin tarve huomataan aina liian myöhään

retu

  • Käyttäjä
  • Viestejä: 949
    • Profiili
Vs: linux komentorivi käsky ohjelmasta
« Vastaus #6 : 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.

Kirini

  • Käyttäjä
  • Viestejä: 160
    • Profiili
Vs: linux komentorivi käsky ohjelmasta
« Vastaus #7 : 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.
« Viimeksi muokattu: 20.01.12 - klo:13.35 kirjoittanut Kirini »
Kubuntu 6.10, P4,512mb(sdram),60gb+20gb,gforce fx5200,twinhanDVT alpha(usb)...

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11484
    • Profiili
    • Tomin kotisivut
Vs: linux komentorivi käsky ohjelmasta
« Vastaus #8 : 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.
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

odysseus

  • Vieras
Vs: linux komentorivi käsky ohjelmasta
« Vastaus #9 : 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ä.

ilkkak

  • Käyttäjä
  • Viestejä: 405
    • Profiili
Vs: linux komentorivi käsky ohjelmasta
« Vastaus #10 : 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.