/ / ¿Cómo matar un proceso de linux usando PID de PHP? - php, linux, apache, amazon-ec2

¿Cómo matar un proceso de linux usando PID de PHP? - php, linux, apache, amazon-ec2

Me enfrento a un problema relacionado con matar un proceso de Linux desde mi código php. Estoy ejecutando una herramienta de Scrapy desde mi código PHP usando el proc_open() función en el fondo.

Funciona bien, pero ahora quiero terminar este proceso utilizando su id de proceso. Para hacer eso estoy usando exec("sudo kill -9 $pid"); dónde $pid es el identificador de proceso que obtengo de mi código php.

El problema es que este proceso se está ejecutando en nombre del usuario de apache. Pensé que podría haber algún problema con los permisos, así que agregué un usuario de apache al archivo sudoers como este apache ALL=(ALL) NOPASSWD:ALL pero todavía no puedo matarlo. De alguna manera, el mismo comando de matar funciona desde mi consola de masilla.

Mi código está en una instancia de Amazon EC2.

Mi pregunta es, ¿cómo puedo eliminar ese proceso identificado por un pid de php?

Respuestas

18 para la respuesta № 1

Nunca, nunca, apache sudo permisos!

Utilizar exec("kill -9 $pid"); - tu proceso de apache lo inició, puede matarlo :)


1 para la respuesta № 2

Tratar posix_kill:

bool posix_kill ( int $pid , int $sig )

Enviar la señal sig al proceso con el identificador de proceso pid.


0 para la respuesta № 3

Puedes usar exec con sudo privilegios para habilidad que es más segura echa un vistazo Mata a los procesos de los usuarios en Linux con PHP

Gracias y Saludos,
Alok Thaker