GNU/Linux >> Tutoriels Linux >  >> Linux

Exécution du script PHP à partir de la ligne de commande en tant que processus d'arrière-plan

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

Le supérieur à (> ) dans des commandes comme celles-ci redirigent la sortie du programme quelque part. Dans ce cas, quelque chose est redirigé vers /dev/null , et quelque chose est redirigé vers &1

Entrée, sortie et erreur standard

Il existe trois sources standard d'entrée et de sortie pour un programme. L'entrée standard provient généralement du clavier s'il s'agit d'un programme interactif ou d'un autre programme s'il traite la sortie de l'autre programme. Le programme imprime généralement sur la sortie standard et imprime parfois sur l'erreur standard. Ces trois descripteurs de fichiers (vous pouvez les considérer comme des "canaux de données") sont souvent appelés STDIN, STDOUT, and STDERR .

Parfois, ils ne sont pas nommés, ils sont numérotés ! Les numérotations intégrées pour eux sont 0, 1, and 2 , dans cet ordre. Par défaut, si vous ne nommez pas ou ne numérotez pas un explicitement, vous parlez de STDOUT .

la commande ci-dessus redirige la sortie standard vers /dev/null , qui est un endroit où vous pouvez vider tout ce que vous ne voulez pas, puis rediriger l'erreur standard vers la sortie standard (vous devez mettre un & devant la destination lorsque vous faites cela).

La courte explication est donc "toute la sortie de cette commande doit être poussée dans un trou noir". C'est un bon moyen de faire en sorte qu'un programme soit vraiment silencieux !

& à la fin met la commande en arrière-plan.

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


Êtes-vous sûr que le script ne contient aucune erreur ? C'est ce qui fait normalement "l'exécution se termine très rapidement ".
Tout d'abord, ajoutez :

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

en haut de votre script pour afficher les erreurs qu'il peut avoir, alors vous pouvez utiliser :

nohup php filename.php &

nohup exécute une commande même si la session est déconnectée ou si l'utilisateur se déconnecte.

OU

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

Comme ci-dessus mais ne crée pas nohup.out fichier.

Vous pouvez aussi utiliser:
ignore_user_abort(1);

Définir si une déconnexion du client doit interrompre l'exécution du script


`set_time_limit(0);`

Limite le temps d'exécution maximal du script, dans ce cas il s'exécutera jusqu'à ce que le processus se termine ou que le processus apache redémarre.

#NotesLe php et le filename.php les chemins peuvent être fournis sous forme de chemin complet , au lieu de php et filename.php , vous pouvez utiliser /usr/bin/php et /full/path/to/filename.php .
Le chemin complet est recommandé pour éviter fichier introuvable erreurs.


le processus peut être fermé lorsque votre session est fermée.

essayez d'utiliser nohup php filename.php


Linux
  1. Exécuter Software-center à partir de la ligne de commande en tant que root ?

  2. Exécuter des scripts Perl/PHP à partir de la ligne de commande

  3. Exécuter le script php en tant que processus démon

  4. Comment puis-je exécuter une fonction à partir d'un script en ligne de commande ?

  5. Comment puis-je exécuter du code PHP à partir de la ligne de commande ?

Programmer le matériel à partir de la ligne de commande Linux

Comment exécuter une commande / un script Linux Shell en arrière-plan

Comment installer un script pour qu'il s'exécute n'importe où à partir de la ligne de commande ?

Comment obtenir le PID parent d'un processus donné sous GNU/Linux à partir de la ligne de commande ?

Le processus exécuté en arrière-plan a été tué sous Linux

Clonezilla depuis la ligne de commande