Kirjoittaja Aihe: [RATKAISTU] monen sovelluksen käynnistys scriptillä  (Luettu 12301 kertaa)

nm

  • Käyttäjä
  • Viestejä: 16425
    • Profiili
Vs: [RATKAISTU] monen sovelluksen käynnistys scriptillä
« Vastaus #20 : 03.10.18 - klo:15.44 »
Kappas... toimii. Puolipiste ; toimii siis erilailla kuin &. Voin ketjuttaa puolipisteillä useampiakin käskyjä.

Jep. Komentotulkki suorittaa puolipistettä edeltävän komennon ja jää odottamaan, että sen suoritus päättyy. &-merkki taas käynnistää edeltävän komennon taustalle alikomentotulkkiin, ja jatkaa suoritusta välittömästi seuraaviin komentoihin.

Tomin mainitsemat && ja || toimivat puolipisteen tavoin, paitsi että edeltävän komennon palautusarvo tulkitaan ja seuraava komento suoritetaan tai jätetään suorittamatta sen mukaisesti. && suorittaa seuraavan komennon, jos ja vain jos palautusarvo on 0, eli onnistunut. || suorittaa seuraavan, jos ja vain jos palautusarvo on jokin muu kuin 0, eli epäonnistunut.

Lisäksi on mahdollista tehdä if - else ketju tähän tapaan:

Koodia: [Valitse]
jokukomento && echo onnistui || echo epäonnistui

Edit:
Tai... taitaa sittenkin tulla ongelma, jos osascripteissä on "kill", "qjackctl" ja "zyn".

Eli qjackctl ei tykkää, että se käynnistetään uudelleen, kun prosessi on jo käynnissä? Siinä tapauksessa voisi tarkistaa vaikka pgrepillä, onko ohjelma jo käynnissä ennen kuin yrittää käynnistää sen uudelleen:

Koodia: [Valitse]
Exec=sh -c "/usr/bin/killall zynaddsubfx; /usr/bin/pgrep qjackctl || /usr/bin/qjackctl & /usr/bin/zynaddsubfx --load=/home/redu/Zyn/presets/B3DET/detune2keyb3form2018b.xmz"
(Sivuhuomiona /usr/bin-polun määrittäminen taitaa olla turhaa noissa komennoissa, kun sen pitäisi olla PATH-ympäristömuuttujassa.)
« Viimeksi muokattu: 03.10.18 - klo:16.08 kirjoittanut nm »

redu

  • Käyttäjä
  • Viestejä: 487
    • Profiili
Vs: [RATKAISTU] monen sovelluksen käynnistys scriptillä
« Vastaus #21 : 03.10.18 - klo:16.24 »
nm,
Exec=sh -c "killall zynaddsubfx; pgrep qjackctl && qjackctl & zynaddsubfx --load=/home/redu/Zyn/presets/B3DET/detune2keyb3form2018b.xmz"
Ei ihan toimi? Se ei käynnistä qjackctl:ia ollenkaan.
Minusta qjackctl ei välitä, vaikka se käynnistetään uudelleen? Eikä se starttaa koskaan uusiksi uuteen ikkunaan. Zynaddsubfx taas strttaa uusiksi uuteen ikkunaan, mutta vain vanhan ikkunan preset on aktiivinen.
Ubuntua 98%, Winkua 2%

AimoE

  • Käyttäjä
  • Viestejä: 2782
    • Profiili
Vs: [RATKAISTU] monen sovelluksen käynnistys scriptillä
« Vastaus #22 : 03.10.18 - klo:17.02 »
nm,
Exec=sh -c "killall zynaddsubfx; pgrep qjackctl && qjackctl & zynaddsubfx --load=/home/redu/Zyn/presets/B3DET/detune2keyb3form2018b.xmz"
Ei ihan toimi? Se ei käynnistä qjackctl:ia ollenkaan.

Olet vaihtanut nm:n antamassa komennossa tai-merkin (eli ||) tilalle ja-merkin (eli &&).

nm

  • Käyttäjä
  • Viestejä: 16425
    • Profiili
Vs: [RATKAISTU] monen sovelluksen käynnistys scriptillä
« Vastaus #23 : 03.10.18 - klo:17.22 »
nm,
Exec=sh -c "killall zynaddsubfx; pgrep qjackctl && qjackctl & zynaddsubfx --load=/home/redu/Zyn/presets/B3DET/detune2keyb3form2018b.xmz"
Ei ihan toimi? Se ei käynnistä qjackctl:ia ollenkaan.

Joo siinä oli bugi ja muokkasin viestiä. &&:n tilalla täytyy siis olla ||


Minusta qjackctl ei välitä, vaikka se käynnistetään uudelleen? Eikä se starttaa koskaan uusiksi uuteen ikkunaan. Zynaddsubfx taas strttaa uusiksi uuteen ikkunaan, mutta vain vanhan ikkunan preset on aktiivinen.

En ole varma, ymmärsinkö oikein, mutta jos killall ei ehdi sulkea vanhaa zynaddsubfx:ää ennen kuin uusi käynnistyy, ketjuun voi vaikka lisätä hieman viivettä sleep-komennolla:

Koodia: [Valitse]
Exec=sh -c "/usr/bin/killall zynaddsubfx; sleep 1; /usr/bin/pgrep qjackctl || /usr/bin/qjackctl & /usr/bin/zynaddsubfx --load=/home/redu/Zyn/presets/B3DET/detune2keyb3form2018b.xmz"

redu

  • Käyttäjä
  • Viestejä: 487
    • Profiili
Vs: [RATKAISTU] monen sovelluksen käynnistys scriptillä
« Vastaus #24 : 03.10.18 - klo:18.16 »
Kiitos oikasusta!
Nyt ||-välimerkillä .desktop scriptit toimvat itseellisinä ihan oikein. Nopein tapa vaihtaa Zyn:in soundeja?
Ubuntua 98%, Winkua 2%