GNU/Linux >> Tutoriales Linux >  >> Linux

Ejecutar script PHP desde la línea de comando como proceso en segundo plano

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

Los mayores que (> ) en comandos como estos redirigen la salida del programa a alguna parte. En este caso, algo está siendo redirigido a /dev/null , y algo está siendo redirigido a &1

Error, entrada y salida estándar

Hay tres fuentes estándar de entrada y salida para un programa. La entrada estándar generalmente proviene del teclado si es un programa interactivo, o de otro programa si está procesando la salida del otro programa. El programa normalmente imprime con salida estándar y, a veces, con error estándar. Estos tres descriptores de archivos (puede pensar en ellos como "conductos de datos") a menudo se denominan STDIN, STDOUT, and STDERR .

A veces no se nombran, ¡están numerados! Las numeraciones integradas para ellos son 0, 1, and 2 , en ese orden. De forma predeterminada, si no nombra o enumera uno explícitamente, está hablando de STDOUT .

el comando anterior está redirigiendo la salida estándar a /dev/null , que es un lugar donde puede volcar cualquier cosa que no desee, y luego redirigir el error estándar a la salida estándar (debe poner un & delante del destino cuando haces esto).

La breve explicación, por lo tanto, es "toda la salida de este comando debe ser empujada a un agujero negro". ¡Esa es una buena manera de hacer que un programa sea realmente silencioso!

& al final pone el comando en segundo plano.

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


¿Estás seguro de que el script no contiene ningún error? Esto es lo que normalmente hace que "la ejecución termine muy rápido ".
Primero, agregue:

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

en la parte superior de su secuencia de comandos para mostrar cualquier error que pueda tener, entonces puede usar:

nohup php filename.php &

nohup ejecuta un comando incluso si la sesión está desconectada o el usuario cierra la sesión.

O

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

Igual que el anterior pero no crea nohup.out archivo.

También puedes usar:
ignore_user_abort(1);

Establecer si la desconexión de un cliente debe cancelar la ejecución del script


`set_time_limit(0);`

Limita el tiempo máximo de ejecución del script, en este caso se ejecutará hasta que finalice el proceso o se reinicie el proceso de apache.

#NotasEl php y el filename.php las rutas se pueden proporcionar como ruta completa , en lugar de php y filename.php , puedes usar /usr/bin/php y /full/path/to/filename.php .
Se recomienda la ruta completa para evitar archivo no encontrado errores.


el proceso puede cerrarse cuando se cierre su sesión.

intenta usar nohup php filename.php


Linux
  1. Evitar que un script bash se ejecute simultáneamente

  2. Cómo enumerar los módulos cargados o habilitados en PHP desde la línea de comandos

  3. ¿Ejecutando Software-center desde la línea de comandos como root?

  4. Ejecute scripts Perl/PHP desde la línea de comandos

  5. Ejecute el script php como proceso daemon

Programe hardware desde la línea de comandos de Linux

Cómo ejecutar el comando / secuencia de comandos de Linux Shell en segundo plano

Ejecutar un script de Python desde PHP

GLIBCXX_3.4.9 no encontrado al ejecutar ffmpeg desde php en el servidor lampp

Ejecutando Pycharm como root desde el lanzador

matlab ejecuta el script desde la línea de comando de Linux