es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo ejecutar el comando sacct en un script de shell.

Estoy tratando de escribir un cron que ejecutará el comando sacct de slurm para fechas específicas y lo guardará en un archivo. Como no tengo mucha experiencia con scripts de shell, no estoy seguro de cómo hacerlo.

Hice lo siguiente:
Cree un script de shell con el siguiente código (sacct_data.sh):

!/bin/bash

startdate=date +"%Y-%m-%dT00:00:00"
enddate=date -d "yesterday" '+%Y-%m-%dT00:00:00'

TZ=UTC sacct infoque necesitas extraer --starttime $startdate --endtime $enddate > data.log

En el crontab tengo el siguiente código:
* * * * * bash sacct_data.sh #Sé que esto se ejecutará cada minuto, pero no es importante

Sin embargo, estoy obteniendo el error “sacct: comando no encontrado”.

Cualquier ayuda es apreciada 🙂

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Estimado usuario,

    Parece que el comando “sacct” no se encuentra en el script de shell. Esto puede ocurrir si el comando “sacct” no está en el PATH predeterminado del entorno del trabajo programado.

    Para corregir este problema, puede especificar la ruta completa al comando “sacct” en el script de shell o modificar la variable de entorno PATH en el trabajo programado.

    Opción 1: Especificar la ruta completa al comando “sacct” en el script de shell

    Para especificar la ruta completa al comando “sacct” en el script de shell, encuentre la ubicación del comando “sacct” utilizando el comando “which”:

    $ which sacct
    /usr/bin/sacct
    

    Luego, reemplace el comando “sacct” en el script de shell con la ruta completa:

    #!/bin/bash
    startdate=`date +"%Y-%m-%dT00:00:00"`
    enddate=`date -d "yesterday" '+%Y-%m-%dT00:00:00'`
    
    TZ=UTC /usr/bin/sacct info_that_needs_to_be_pulled --starttime $startdate --endtime $enddate > data.log
    

    Opción 2: Modificar la variable de entorno PATH en el trabajo programado

    Para modificar la variable de entorno PATH en el trabajo programado, agregue la siguiente línea al comienzo del trabajo programado:

    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    

    Esto establecerá la variable PATH para incluir las rutas predeterminadas donde se encuentran los comandos del sistema como “sacct”.

    La tabla de crontab modificada se vería así:

    * * * * * PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin; bash sacct_data.sh
    

    ¡Espero que esto ayude!

Comments are closed.