Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    script bash per riavviare programma?!?!

    Ciao,
    qualcuno ha sottomano, o mi aiuterebbe a fare uno script bash che avvia un programma e, nel caso questo si interrompa, lo riavvii automaticamente?

    ammettiamo che il programma si chiami PIPPO quello che vorrei facesse lo script è qualcosa del genere:

    1) avvia PIPPO
    2) ogni tot secondi (o con un ciclo) controlla che PIPPO sia vivo (con un ps ax o con un pid PIPPO)
    3) se PIPPO si interrompe (quindi non è più in ps ax o non c'è più il PID) riavvialo

    mi aiutereste?
    [Homepage] [Contattami]
    Powered by: Ubuntu - Debian - Gentoo
    Developing: Java - C++ - PHP

    [supersaibal]"Perchè tanto Debian è meglio"
    [/supersaibal]

  2. #2
    Utente di HTML.it L'avatar di lnessuno
    Registrato dal
    Feb 2002
    Messaggi
    2,732
    ma sto pippo libera la console dopo essere stato avviato, o la tiene occupata finchè non si chiude?

    perchè nel secondo caso sarebbe semplicissimo, basterebbe un ciclo senza fine che avvia il programma... il ciclo si fermerebbe tutte le volte finchè il prog. stesso non si chiude, per poi ricominciare...

    non è una soluzione bellissima, però dovrebbe funzionare

  3. #3
    Originariamente inviato da lnessuno
    ma sto pippo libera la console dopo essere stato avviato, o la tiene occupata finchè non si chiude?

    perchè nel secondo caso sarebbe semplicissimo, basterebbe un ciclo senza fine che avvia il programma... il ciclo si fermerebbe tutte le volte finchè il prog. stesso non si chiude, per poi ricominciare...

    non è una soluzione bellissima, però dovrebbe funzionare
    si si ... mi va bene

    io non conosco la sintassi bash... qualcuno me lo scriverebbe per favore?

    [Homepage] [Contattami]
    Powered by: Ubuntu - Debian - Gentoo
    Developing: Java - C++ - PHP

    [supersaibal]"Perchè tanto Debian è meglio"
    [/supersaibal]

  4. #4
    Utente di HTML.it L'avatar di lnessuno
    Registrato dal
    Feb 2002
    Messaggi
    2,732
    codice:
    #! /bin/bash
    # inizio il ciclo, la variabile a deve andare da 1 a 2, con incrementi di 1
    for ((a=1; a <= 2 ; a++))
      do
        # eseguo il programma
        mozilla
        # se arriva qua si è liberata la console, il programma quindi è crashato
        echo "Azz si è chiuso il programma! lo riapro!"
        # la variabile a torna a 1 così il ciclo non si chiude
        let a=1;
        # aspetto 5 secondi prima di continuare... così lo si può bloccare con ctrl+c se voglio fermarlo.
        sleep 5;
      done;

    dovrebbe andare... credo

  5. #5
    Originariamente inviato da lnessuno
    codice:
    #! /bin/bash
    # inizio il ciclo, la variabile a deve andare da 1 a 2, con incrementi di 1
    for ((a=1; a <= 2 ; a++))
      do
        # eseguo il programma
        mozilla
        # se arriva qua si è liberata la console, il programma quindi è crashato
        echo "Azz si è chiuso il programma! lo riapro!"
        # la variabile a torna a 1 così il ciclo non si chiude
        let a=1;
        # aspetto 5 secondi prima di continuare... così lo si può bloccare con ctrl+c se voglio fermarlo.
        sleep 5;
      done;
    dovrebbe andare... credo
    Funziona alla grande!
    Grazie mille!

    [Homepage] [Contattami]
    Powered by: Ubuntu - Debian - Gentoo
    Developing: Java - C++ - PHP

    [supersaibal]"Perchè tanto Debian è meglio"
    [/supersaibal]

  6. #6
    Utente di HTML.it L'avatar di lnessuno
    Registrato dal
    Feb 2002
    Messaggi
    2,732
    così funziona meglio

    esempio: ./eseguiricorsivo file-roller

    codice:
    #!/bin/bash
    # controllo se è stato passato il nome del programma
    if [ -n "$1" ]
    then
      # inizio il ciclo, la variabile a deve andare da 1 a 2, con incrementi di 1
      for ((a=1; a <= 2 ; a++))
        do
          # eseguo il programma
          $1
          # se arriva qua si è liberata la console, il programma quindi è crashato
          echo "Azz si e' chiuso il programma! lo riapro!"
          # la variabile a torna a 1 così il ciclo non si chiude
          let a=1;
          # aspetto 5 secondi prima di continuare... così lo si può bloccare con ctrl+c se voglio fermarlo.
          sleep 5;
      done;
    else
    # non hai passato la variabile, birichino...
    	echo "Eh ma non mi hai detto che programma vuoi far partire...! (Es: ./eseguiricorsivo nomeprogramma)"
    fi

  7. #7
    Utente bannato
    Registrato dal
    Mar 2001
    Messaggi
    1,144
    quante complicazioni!

    basta una riga in una console

    codice:
    while true; do nome-programma; sleep 5; done
    o se proprio vuoi lo script

    codice:
    #!/bin/bash
    while true; do $1; sleep 5; done

  8. #8
    Utente di HTML.it L'avatar di lnessuno
    Registrato dal
    Feb 2002
    Messaggi
    2,732
    bof anche il mio se vuoi lo fai stare su una riga... enorme, ma è sempre solo una riga


    e poi il tuo non prende il nome del programma come argomento che passi quando lanci lo script

  9. #9
    Utente di HTML.it L'avatar di lnessuno
    Registrato dal
    Feb 2002
    Messaggi
    2,732
    aggiornato con while true, che non conoscevo

    http://lnessuno.altervista.org/sorge...ricorsivo.html

    codice:
    #!/bin/bash
    # controllo se &egrave; stato passato il nome del programma
    if [ -n "$1" ]
    then
      # ciclo senza fine!
      while true
        do
          # eseguo il programma
          $1
          # se arriva qua si Ú liberata la console, il programma quindi &egrave; crashato
          echo "Azz si e' chiuso il programma! lo riapro!"
          # aspetto 5 secondi prima di continuare... così lo si può bloccare con ctrl+c se voglio fermarlo.
          sleep 5;
      done;
    else
      # non hai passato la variabile, birichino...
      echo "Eh ma non mi hai detto che programma vuoi far partire...! (Es: ./eseguiricorsivo nomeprogramma)"
    fi

  10. #10
    Utente bannato
    Registrato dal
    Mar 2001
    Messaggi
    1,144
    Originariamente inviato da lnessuno
    bof anche il mio se vuoi lo fai stare su una riga... enorme, ma è sempre solo una riga


    e poi il tuo non prende il nome del programma come argomento che passi quando lanci lo script
    come non lo prende?

    codice:
    do $1

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.