Terminare un processo in esecuzione nel terminale

di il
18 risposte

Terminare un processo in esecuzione nel terminale

Salve il mio problema è il seguente:
sul mio raspberry pi ho fatto in modo che all'accensione mi eseguisse uno script in python modificando il file /etc/rc.local aggiungendo la riga
python /percorso/mio/script.py
Il tutto ha funzionato, ma mi ritrovo che all'accensione mi avvia il programma e io non posso vedere nient'altro che l'output del mio script.
Mi domandavo come faccio ad interagire con il terminale se non mi mostra il cursore, o meglio come faccio ad parire un nuovo terminale o ad ammazzare questo processo in esecuzione?

18 Risposte

  • Re: Terminare un processo in esecuzione nel terminale

    Devi aggiungere un & alla fine del comando
    python /percorso/mio/script.py &
    così viene eseguito in background
  • Re: Terminare un processo in esecuzione nel terminale

    Non è cambiato nulla
    #
    # By default this script does nothing.
    
    # Print the IP address
    _IP=$(hostname -I) || true
    if [ "$_IP" ]; then
      printf "My IP address is %s\n" "$_IP"
    fi
    
    python /home/pi/raspi-gmail.py &
    
    exit 0
    
    
    
    
    
    è giusto così?
  • Re: Terminare un processo in esecuzione nel terminale

    Prova a redirigere tutto (anche stderr) su un file, per vedere se ci sono errori
    python /home/pi/raspi-gmail.py >> /tmp/log.txt 2>&1
  • Re: Terminare un processo in esecuzione nel terminale

    Ho eseguito questo comando, all'interno leggo questo:
    pi@raspberrypi /tmp $ sudo cat log.txt
    Traceback (most recent call last):
      File "/home/pi/raspi-gmail.py", line 16, in <module>
        GPIO.setup(GREEN_LED, GPIO.OUT)
    RuntimeError: No access to /dev/mem.  Try running as root!
  • Re: Terminare un processo in esecuzione nel terminale

    Forse devi lavorare come root dando sudo prima del comando... questo problema però dovresti averlo già avuto provando manualmente da shell
  • Re: Terminare un processo in esecuzione nel terminale

    candaluar ha scritto:


    Forse devi lavorare come root dando sudo prima del comando... questo problema però dovresti averlo già avuto provando manualmente da shell

    si manualmente eseguivo con sudo ./raspi-gmail.py

    come lo riporto dentro al file rc.local?
  • Re: Terminare un processo in esecuzione nel terminale

    Basta che fai
    sudo python /home/pi/raspi-gmail.py &
  • Re: Terminare un processo in esecuzione nel terminale

    Continua a stampare a video, non va in bg
  • Re: Terminare un processo in esecuzione nel terminale

    Prova
    sudo python /home/pi/raspi-gmail.py >> /tmp/log.txt 2>&1 &
  • Re: Terminare un processo in esecuzione nel terminale

    In realtà ho notato che durante la stampa iterativa mi permette (tra una riga di output e l'altra) di inserire dei comandi, quindi sostanzialmente il programma sta eseguendo in bg ma stampando nel terminale corrente... nel mio caso potrei risolvere eliminando la stampa
  • Re: Terminare un processo in esecuzione nel terminale

    candaluar ha scritto:


    prova
    sudo python /home/pi/raspi-gmail.py >> /tmp/log.txt 2>&1 &
    /home/pi/raspi-gmail.py:16: RuntimeWarning: This channel is already in use, continuing anyway.  Use GPIO.setwarnings(False) to disable warnings.
      GPIO.setup(GREEN_LED, GPIO.OUT)
    /home/pi/raspi-gmail.py:17: RuntimeWarning: This channel is already in use, continuing anyway.  Use GPIO.setwarnings(False) to disable warnings.
      GPIO.setup(RED_LED, GPIO.OUT)
  • Re: Terminare un processo in esecuzione nel terminale

    Ti consiglio di commentare nel tuo script l'accesso ai GPIO e riprovare
  • Re: Terminare un processo in esecuzione nel terminale

    Allora l'accesso ai gpio sembra funzionare correttamente, mi spiego:
    se lancio manualmente funziona tutto : stampa il messaggio e accende i led (collegati sui rispettivi pin gpio) in maniera corretta (sono due led per un valore binario v o f, è DIFFICILE SBAGLIARSI).
    Però se lancio in maniera automatica mi stampa la frase (che mi infastidisce) ma non funzionano i led, come se non potesse accedere alle librerie GpIO
  • Re: Terminare un processo in esecuzione nel terminale

    Ma quindi ora quando avvii il software va in background e puoi utilizzare la shell?
    Confermi che quindi rimane solo il problema di accesso agli IO quando lanci lo script all'avvio?
Devi accedere o registrarti per scrivere nel forum
18 risposte