Visualizzazione dei risultati da 1 a 6 su 6

Discussione: esegui se non in ps

  1. #1

    esegui se non in ps

    Salve,

    volevo fare un crontab che ogni 10 minuti vede se un certo script è in esecuzione, se non lo è allora lo esegue.

    un aiuto?

    grazie mille!
    Alla batteria dai retta,balla!

  2. #2
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    man ps
    man grep
    man cut
    man awk

    fatto questo, vai di

    man pidof
    man pgrep

    ciao
    slack? smack!

  3. #3
    ok, e che non hai fatto uno script per bash. Vediamo se ho capito:

    codice:
    check=no;
    
    if check <> si then
    
        /usr/bin/perl /users/claudio/desktop/script.pl
       # come faccio a ritornare l'id del file appena eseguito?
        check=si
    else
    
       if not ('ps -auxcv | grep 'id dello script perl) then 
           /usr/bin/perl /users/claudio/desktop/script.pl
       end if
    
    end if
    questo è scritto in un linguaggio maccheronico... ma vorrei sapere se l'idea è giusta e soprattutto come si ritorna l'id di un file appena eseguito.

    grazie
    Alla batteria dai retta,balla!

  4. #4
    questa è una versione riveduta e corretta del file check.sh il quale viene invocato tramite crontab ogni 5 minuti:

    codice:
    #!/bin/bash
    #
    # check.sh
    
    check=no
    
    if [ $check != "si" ]
    then
    
    	id=$(Perl /users/claudio/desktop/file.pl)
    	check=si
    	
    else
    	if [ ! $(ps -aux | grep '$id') ]
    	then
    		Perl /users/claudio/desktop/file.pl
    	fi
    fi
    allora, lo script perl file.pl stampa sullo STDOUT il suo PID e poi si mette in ascolto su una porta...

    soltanto che quando eseguo:

    codice:
    id=$(Perl /users/claudio/desktop/file.pl)
    lo script bash si ferma li e non esegue il resto...

    che cosa sbaglio?
    Alla batteria dai retta,balla!

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    746
    rendi eseguibile file.pl
    codice:
    #!/bin/bash
    p_id="`pidof file.pl`"
    if [ "$p_id" = ""]; then
              exec /users/claudio/desktop/file.pl&
    fi
    
    exit 0

  6. #6
    alla fine ho risolto così:

    codice:
    #!/bin/bash
    
    id=$(ps -waux | grep 'script.pl' | grep -v grep | awk -F" " '{print $2}')
    if [ "$id" = "" ]
    then
    	# echo $id;
    	exec /users/$USER/desktop/script.pl &
    fi
    exit 0;
    Alla batteria dai retta,balla!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.