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 № 1Nunca, 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