{"id":1126,"date":"2018-03-15T00:02:58","date_gmt":"2018-03-15T04:02:58","guid":{"rendered":"https:\/\/gonzalo.aro.cl\/blog\/?p=1126"},"modified":"2018-03-15T08:26:01","modified_gmt":"2018-03-15T12:26:01","slug":"impedir-doble-ejecucion-del-cron-de-moodle","status":"publish","type":"post","link":"https:\/\/gonzalo.aro.cl\/blog\/2018\/03\/15\/impedir-doble-ejecucion-del-cron-de-moodle\/","title":{"rendered":"Impedir doble ejecuci\u00f3n del cron de moodle"},"content":{"rendered":"<p>En las experiencias con Moodle me han sucedido ya varias cosas que contar, una de ellas es la ejecuci\u00f3n del cron. En ambientes donde no se conoce bien la carga que va a tener el uso de Moodle se actua bajo la percepci\u00f3n de un mejor o peor caso, basado en lo cual se decide un tiempo entre ejecuciones del cron de Moodle, por ejemplo 20 minutos, lo que sucede es que en ambientes grandes 20 minutos muchas veces no resulta ser suficiente, para lo cual hay que buscar un mecanismo para evitar la doble ejecuci\u00f3n del cron, ya que en algunas oportunidades la ejecuci\u00f3n queda \u00abtomada\u00bb o \u00abpegada\u00bb y nunca termina o no termina correctamente.<\/p>\n<p>Encontr\u00e9 en <a href=\"https:\/\/bencane.com\/2015\/09\/22\/preventing-duplicate-cron-job-executions\/\">Preventing Duplicate Cron Jobs Execution<\/a> la forma de hacerlo, pero incluyendo las lineas que llaman al cron de Moodle en una instalaci\u00f3n que se asume est\u00e1 en \/var\/www\/html\/, adicionando ademas la posibilidad de guardar el log en la carpeta de logs de apache.<\/p>\n<pre class=\"brush: bash\">\r\nPIDFILE=\/var\/run\/moodle_cron.pid\r\nif [ -f $PIDFILE ]\r\nthen\r\n  PID=$(cat $PIDFILE)\r\n  ps -p $PID > \/dev\/null 2>&1\r\n  if [ $? -eq 0 ]\r\n  then\r\n    echo \"El proceso ya se esta ejecutando\"\r\n    exit 1\r\n  else\r\n    ## El proceso no se encuentra por lo que se asume que no se esta ejecutando\r\n    echo $$ > $PIDFILE\r\n    if [ $? -ne 0 ]\r\n    then\r\n      echo \"No se puede crear el PID\"\r\n      exit 1\r\n    else\r\n      NOW=$(date +\"%Y-%m-%d_%H-%M-%S\")\r\n      FILE=\/var\/log\/httpd\/moodle_cron.$NOW.log\r\n      \/usr\/bin\/php \/var\/www\/html\/admin\/cli\/cron.php > $FILE \r\n    fi\r\n  fi\r\nelse\r\n  echo $$ > $PIDFILE\r\n  if [ $? -ne 0 ]\r\n  then\r\n    echo \"No se puede crear el PID\"\r\n    exit 1\r\n  fi\r\nfi\r\n\r\nrm $PIDFILE\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>En las experiencias con Moodle me han sucedido ya varias cosas que contar, una de ellas es la ejecuci\u00f3n del cron. En ambientes donde no se conoce bien la carga que va a tener el uso de Moodle se actua bajo la percepci\u00f3n de un mejor o peor caso, basado en lo cual se decide [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,15,48],"tags":[],"class_list":["post-1126","post","type-post","status-publish","format-standard","hentry","category-desarrollo","category-linux","category-moodle"],"_links":{"self":[{"href":"https:\/\/gonzalo.aro.cl\/blog\/wp-json\/wp\/v2\/posts\/1126"}],"collection":[{"href":"https:\/\/gonzalo.aro.cl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gonzalo.aro.cl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gonzalo.aro.cl\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gonzalo.aro.cl\/blog\/wp-json\/wp\/v2\/comments?post=1126"}],"version-history":[{"count":2,"href":"https:\/\/gonzalo.aro.cl\/blog\/wp-json\/wp\/v2\/posts\/1126\/revisions"}],"predecessor-version":[{"id":1128,"href":"https:\/\/gonzalo.aro.cl\/blog\/wp-json\/wp\/v2\/posts\/1126\/revisions\/1128"}],"wp:attachment":[{"href":"https:\/\/gonzalo.aro.cl\/blog\/wp-json\/wp\/v2\/media?parent=1126"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gonzalo.aro.cl\/blog\/wp-json\/wp\/v2\/categories?post=1126"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gonzalo.aro.cl\/blog\/wp-json\/wp\/v2\/tags?post=1126"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}