Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

177
Vistas
La secuencia de comandos cron para reiniciar memcached no funciona

Tengo un script en cron para verificar memcached y reiniciarlo si no funciona. Por alguna razón no está funcionando. Script, con permisos:

 -rwxr-xr-x 1 root root 151 Aug 28 22:43 check_memcached.sh

Entrada crontab:

 */5 * * * * /home/mysite/www/check_memcached.sh 1> /dev/null 2> /dev/null

Contenido del guión:

 #!/bin/sh ps -eaf | grep 11211 | grep memcached if [ $? -ne 0 ]; then service memcached restart else echo "eq 0 - memcache running - do nothing" fi

Funciona bien si lo ejecuto desde la línea de comandos, pero anoche memcached falló y no se reinició desde cron. Puedo ver que cron lo ejecuta cada 5 minutos.

¿Qué estoy haciendo mal?

¿Necesito usar lo siguiente en lugar del reinicio de memcached de servicio?

 /etc/init.d/memcached restart

Tengo otro script que verifica para asegurarse de que mi instancia de lighttpd se esté ejecutando y funcione bien. Funciona un poco diferente para verificar que se está ejecutando, pero usa la llamada init.d para reiniciar las cosas.

Editar - Resolución: El uso de /etc/init.d/memcached restart resolvió este problema.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Lo que suele causar problemas crontab son las rutas de comandos. En la línea de comandos, las rutas a los comandos ya están ahí, pero en cron a menudo no lo están. Si este es su problema, puede resolverlo agregando la siguiente línea en la parte superior de su crontab:

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

Esto le dará a cron rutas explícitas para buscar los comandos que ejecuta su secuencia de comandos.

Además, su shebang en su guión es incorrecto. Necesita ser:

 #!/bin/bash
over 4 years ago · Santiago Trujillo Denunciar

0

Sospecho que el problema está en el grep 11211 : no está claro el significado del número y es posible que grep no coincida con el proceso deseado.

Creo que necesita registrar las acciones de este script, luego verá lo que realmente está sucediendo.

 #!/bin/bash exec >> /tmp/cronjob.log 2>&1 set -xv cat2 () { tee -a /dev/stderr; } ps -ef | cat2 | grep 11211 | grep memcached if [ $? -ne 0 ]; then service memcached restart else echo "eq 0 - memcache running - do nothing" fi exit 0

La salida set -xv se captura en un archivo de registro en /tmp . El cat2 copiará el stdin en el archivo de registro, para que pueda ver sobre qué está actuando grep .

over 4 years ago · Santiago Trujillo Denunciar

0

Guarde el siguiente código como check_memcached.sh

 #!/bin/bash MEMCACHED_STATUS=`systemctl is-active memcached.service` if [[ ${MEMCACHED_STATUS} == 'active' ]]; then echo " Service running.... so exiting " exit 1 else service memcached restart fi

Y puedes programarlo como cron.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda