El blog de Iván Argulo

Cron que no se ejecuta en Plesk: solución

Parallels Plesk es un panel de control para servidores web flexible, efetivo y seguro. Permite automatizar muchas tareas del servidor y realizar la administración de una forma sencilla, intuitiva y amigable.

Sin embargo, la versión 10 de Plesk (y posteriores) presentan un problema al ejecutar tareas programadas que llaman a comandos del servidor, como curl o wget. El error que aparece es similar a uno de los siguientes:

-: /usr/bin/curl: No such file or directory
-: /usr/bin/wget: No such file or directory
-: /usr/bin/php: No such file or directory

Bueno, la primera recomendación en este caso es la más obvia: comprueba que el comando que estás ejecutando está instalado y que la ubicación es correcta. Por ejemplo, cURL lleva su propia instalación, así como wget, y no suele estar instalado por defecto en Plesk.

En caso de haber comprobado que el componente está instalado, lo más probable es que Plesk tenga un problema ejecutando el cron. Esto se debe a que el usuario de Plesk que ejecuta el cron no tiene permisos para acceder a determinados comandos de chroot.

La solución, según la propia documentación de Plesk, es ejecutar un comando desde la consola del servidor. (NOTA: para hacerlo tendrás que conectarte como root mediante SSH, usuando un programa como por ejemplo Putty).

El comando en cuestión es el siguiente:

/usr/local/psa/bin/server_pref -u -crontab-secure-shell "/bin/sh"

La respuesta a la ejecución de este comando es:

SUCCESS: Server preferences are successfully updated

NOTA: algunas instalaciones de Linux no reconocen la ruta antes mencionada, y es necesario usar esta otra:

/opt/psa/bin/server_pref -u -crontab-secure-shell "/bin/sh"