Bash script

Kezdőlap Fórumok Programozás Bash script

10 bejegyzés megtekintése - 371-380 / 438
  • Szerző
    Bejegyzés
  • #2053549
    birno
    Felhasználó

      Hogyan lehet egy bash scriptbe olyan védelmet építeni ami megakadályozza, hogy a progi több mint egy példányban fusson és mindig működik is?

      Ugyanis van egy script, ami végtelen ciklusban fut, de még mielőtt elindulna ez a ciklus beszúrtam a következő vizsgálatot:

      Code:
      if [ `ps aux|grep /.awesome/mocp-status|grep -v grep|wc -l|tee ~/.awesome/check` -ge 3 ];
      then
      exit 1
      fi

      A feltétel vizsgálatakor jó esetben 2 sort lát, – bár ezt sem tudom miért, mivel akkor indul el először a program és a grep sora ki van szedve – de van amikor 4-et, így elsőre sem indul el.
      Azon gondolkoztam még, hogy egy fáljba írna valami adatot amikor elindul, mondjuk a pid-jét és azt vizsgálná az elején, ezzel csak az a gond, hogy általában „kill”-el van lelőve a script, így a létrejött fájlt nem tudja törölni leálláskor, max azt lehetne, hogy a fájlban szereplő pid-nek küld először egy kill-t, majd újraírja a saját, aktuális pid-jével, viszont ez pillanatnyi fennakadást okozna a progi működésében, ami nem biztos, hogy jó lenne.
      Talán azt kellene csak megvizsgálni, hogy az adott pid még él-e, bár lehet azóta már más progi használja, akkor meg megint bukta van.

      Van esetleg valami, egyszerű és tutira működő megoldás a problémára?

      #2053550
      milfer
      Felhasználó

        Próbáld így : ps -C programod_neve

        #2053551
        juuzer
        Felhasználó

          pidof -x $

          #2053552
          uzsolt
          Felhasználó
            birno wrote:
            Van esetleg valami, egyszerű és tutira működő megoldás a problémára?
            A trap parancs lesz a te barátod:
            http://www.linuxvilag.hu/content/files/cikk/36/cikk_36_54_55.pdf
            #2053553
            birno
            Felhasználó
              uzsolt wrote:
              birno wrote:
              Van esetleg valami, egyszerű és tutira működő megoldás a problémára?
              A trap parancs lesz a te barátod:
              http://www.linuxvilag.hu/content/files/cikk/36/cikk_36_54_55.pdf

              Valóban ő lett az én új barátom, köszi!

              #2053554
              milfer
              Felhasználó

                Hello.
                Akkor folytassuk tovább még csak 26 oldal.  😉

                Wodim-mal írnék audio cédét egy scriptből. A probléma az, hogy baj van a space-t tartalmazó fájlnevekkel.

                erre hibát ad a wodim :
                wodim -audio /home/music/ez a zene.wav

                Ha parancssorból tabbal egészítem ki a nevet akkor jó :
                wodim -audio /home/music/ez a zene.wav

                Ha parancssorból ” ” jelek közé teszem akkor is jó :
                wodim -audio „/home/music/ez a zene.wav”

                Ha a scriptben teszem ” ” jelek közé akkor hibát jelez :
                wodim -audio „/home/music/ez a zene.wav”
                De miért, ha parancssorból elfogadja.

                A scriptben nem tudtam lecserélni a space-t ” ” ilyenre ” ” mint a tabos kiegészítés. Tehát ezt nem tudom kipróbálni.

                Hogyan tudnám a scriptből úgy összeállítani a parancssort, hogy azt el is fogadja.
                Mi a különbség a parancssori wodim -audio „/home/music/ez a zene.wav” és a scripten belüli wodim -audio „/home/music/ez a zene.wav” között.

                #2053555
                uzsolt
                Felhasználó

                  Erre nem kell szkript, egy alias is elég:

                  Code:
                  alias audio-cd=”wodim -audio”

                  Scriptben miért nem tudod lecserélni a space-t? A „különbséget” se értem:

                  Code:
                  $ ls
                  $ mkdir „a b”
                  $ ls
                  a b
                  $ rmdir „a b”
                  $ ls
                  $ echo mkdir „a b” > szkript
                  $ chmod +x szkript
                  $ cat szkript
                  mkdir „a b”
                  $ ls
                  szkript
                  $ ./szkript
                  $ ls
                  a b  szkript
                  $ rmdir a b
                  rmdir: „a” eltávolítása meghiúsult: Nincs ilyen fájl vagy könyvtár
                  rmdir: „b” eltávolítása meghiúsult: Nincs ilyen fájl vagy könyvtár
                  $ rmdir „a b”
                  $ ls
                  szkript

                  Tehát nekem semmi különbség nincs… Legalábbis ami a mkdir-t illeti 😉

                  #2053556
                  milfer
                  Felhasználó
                    uzsolt wrote:
                    Erre nem kell szkript, egy alias is elég:

                    Code:
                    alias audio-cd=”wodim -audio”

                    Scriptben miért nem tudod lecserélni a space-t? A „különbséget” se értem:

                    Azt a mkdires dolgot és az aliast azt hagyjuk.  😀

                    Akkor részletesebben itt a kód
                    AUDIO_TRACKS=
                      for track in ${VOBDIR}/*.wav ; do
                        AUDIO_TRACKS=”${AUDIO_TRACKS} -audio „${tracks}””
                      done

                    COMMAND=”${CD_WRITER_PRG} dev=${WRITER_DEVICE} gracetime=10 fs=1024k -v -useinfo speed=${WRITING_SPEED} -dao -dummy -pad -overburn ${AUDIO_TRACKS}”

                    $COMMAND

                    Namost ennek durván így néz ki a kimete:
                    /usr/bin/wodim dev=/dev/dvdrw gracetime=10 fs=1024k -v -useinfo speed=4 -dao -dummy -pad -overburn  -audio „/home/music/ez a track1.wav” -audio „/home/music/ez a track2.wav” stb,
                    ahány track van a ${VOBDIR} mappában.

                    Erre hibát ad a wodim, hogy nincs meg a ‘home/music/ez’ nevű fájl
                    De ha parancssorból teszem ugyanezt ” ” jelek közé, vagy tabbal egészítem ki a fájl vevet akkor ott jó.

                    #2053557
                    milfer
                    Felhasználó

                      Hát nem csak a nőknél vannak nehéz napok.  😀

                      Nem is kell a wodimnak egyenként felsorolni az összes audio trackot. Elég így is -audio /home/music/*.wav.
                      Így frankón működik. Tehát space probléma megoldva.  😉

                      #2053558
                      uzsolt
                      Felhasználó

                        Ezt már írtam:

                        uzsolt wrote:
                        Erre nem kell szkript, egy alias is elég:

                        Code:
                        alias audio-cd=”wodim -audio”

                        Ezután audio-cd *.wav kiírja neked az audio cédét.

                        milfer wrote:
                        $COMMAND

                        Jobb az, ha eval $COMMAND módon hívod meg.

                      10 bejegyzés megtekintése - 371-380 / 438
                      • Be kell jelentkezni a hozzászóláshoz.