67 votos

¿Cómo puedo depurar los scripts scripts?

Por alguna razón estoy recibiendo un error durante la actualización de la importación cuya causa es

% sudo service apport start
start: Job failed to start

Bajo sysvinit, podría depurar este tipo de problema ejecutando, por ejemplo

sudo sh -x /etc/init.d/whatever start

pero eso no parece trasladarse a Upstart. ¿Qué debería probar ahora?

Resulta que hay una solución que permitirá que la instalación continúe. Pero todavía estoy interesado en la cuestión general de cómo uno trazaría el script.

110voto

Muhammad Gelbana Puntos 1219

Upstart registra la ejecución de su servicio en un archivo de registro con el mismo nombre en /var/log/upstart/your-service-name.log . Debería ser útil.

30voto

Jon Sagara Puntos 697

Toda la información siguiente (y mucha más ayuda útil de Upstart) es de El libro de cocina de los advenedizos . La sección 18 cubre la depuración. http://upstart.ubuntu.com/cookbook/#debugging

En este caso concreto de rastrear una estrofa "script" de un trabajo Upstart debes añadir las siguientes líneas justo debajo de la palabra "script":

exec 2>>/dev/.initramfs/myjob.log
set -x

La razón de la extraña ubicación es que /dev/.initramfs/ está disponible en un arranque muy temprano, antes de que se haya cargado el sistema de archivos root, y sigue estando disponible después del arranque. Supongo que con apport, sin embargo, probablemente no Necesito para usar ese camino. Aun así, es bueno conocer la opción.

También hay que tener en cuenta que todos los scripts se ejecutan con set -e por lo que cualquier comando que falle saldrá del script por completo. Lo cual tiene sentido, ya que se debe tener mucho cuidado al ejecutar como root.

Recomiendo encarecidamente consultar el libro de cocina de Upstart enlazado arriba en general para cualquiera que trabaje con trabajos de Upstart.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: