Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

176
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!