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