GNU/Linux >> Linux Esercitazione >  >> Linux

Esecuzione di script PHP dalla riga di comando come processo in background

nohup php file.php > /dev/null 2>&1 &

Il maggiore di (> ) in comandi come questi reindirizzano l'output del programma da qualche parte. In questo caso, qualcosa viene reindirizzato a /dev/null e qualcosa viene reindirizzato a &1

Standard in entrata, in uscita ed errore

Esistono tre fonti standard di input e output per un programma. L'input standard di solito proviene dalla tastiera se si tratta di un programma interattivo o da un altro programma se sta elaborando l'output dell'altro programma. Il programma di solito stampa sull'output standard e talvolta stampa sull'errore standard. Questi tre descrittori di file (puoi pensarli come "tubi di dati") sono spesso chiamati STDIN, STDOUT, and STDERR .

A volte non hanno un nome, sono numerati! La loro numerazione predefinita è 0, 1, and 2 , in questo ordine. Per impostazione predefinita, se non nomini o numeri uno in modo esplicito, stai parlando di STDOUT .

il comando sopra sta reindirizzando l'output standard a /dev/null , che è un posto in cui puoi scaricare tutto ciò che non vuoi, quindi reindirizzare l'errore standard nell'output standard (devi inserire un & davanti alla destinazione quando lo fai).

La breve spiegazione, quindi, è "tutto l'output di questo comando dovrebbe essere spinto in un buco nero". Questo è un buon modo per rendere un programma davvero silenzioso!

& alla fine mette il comando in background.

riferimento:https://www.xaprb.com/blog/2006/06/06/what-does-devnull-21-mean/


Sei sicuro che lo script non contenga errori? Questo è ciò che normalmente fa sì che "l'esecuzione termini molto rapidamente ".
Innanzitutto, aggiungi:

error_reporting(E_ALL); ini_set('display_errors', 1);

all'inizio del tuo script per visualizzare eventuali errori che potrebbe avere, quindi puoi usare :

nohup php filename.php &

nohup esegue un comando anche se la sessione è disconnessa o l'utente si disconnette.

O

nohup php filename.php >/dev/null 2>&1 &

Come sopra ma non crea nohup.out file.

Puoi anche usare:
ignore_user_abort(1);

Imposta se una disconnessione del client deve interrompere l'esecuzione dello script


`set_time_limit(0);`

Limita il tempo massimo di esecuzione dello script, in questo caso verrà eseguito fino al termine del processo o al riavvio del processo apache.

#NotesIl php e il filename.php i percorsi possono essere forniti come percorso completo , invece di php e filename.php , puoi utilizzare /usr/bin/php e /full/path/to/filename.php .
Si consiglia il percorso completo per evitare file non trovato errori.


il processo potrebbe essere chiuso alla chiusura della sessione.

prova a usare nohup php filename.php


Linux
  1. Impedire l'esecuzione simultanea di uno script bash

  2. Esegui script Perl/PHP dalla riga di comando

  3. esecuzione di script php (funzione php) in linux bash

  4. Come installo uno script da eseguire ovunque dalla riga di comando?

  5. Come posso eseguire una funzione da uno script nella riga di comando?

Programma hardware dalla riga di comando di Linux

Come eseguire il comando / script della shell di Linux in background

Esegui lo script php come processo daemon

Come ottenere il PID padre di un determinato processo in GNU/Linux dalla riga di comando?

Il processo in esecuzione in background è stato interrotto in Linux

Clonezilla dalla riga di comando