Cron jobs and daemons
Koha is supported by a number of background tasks. These tasks can either be periodically executed tasks (cron jobs) or continuously running tasks called daemons.
A cron job is a Linux command for scheduling a command or script on your server to complete repetitive tasks automatically. Scripts executed as a cron job are typically used to modify files or databases; however, they can perform other tasks that do not modify data on the server, like sending out email notifications.
A daemon is a Linux command that is typically started when the system is booted and runs in the background doing some function. The database used by Koha (either MySQL or MariaDB) is a daemon as is the web server (typically Apache).
Koha has many cron jobs in place that you can enable (search engine indexing, overdue notice generation, data cleanup and more), and a few daemons. This chapter will explain those for you.
Crontab example
An example of a Koha crontab can be found in misc/cronjobs/crontab.example
The example includes sample boilerplate cron job entries for the most commonly-used cron jobs.
Cron jobs
Las ubicaciones que se mencionan asumen una instalación dev que coloca los crons en misc/, si su instalación es estándar puede localizar estos archivos en bin/ en caso que no pudiese encontrarlos en misc/
Backup
Daily backup
Script path: misc/cronjobs/backup.sh
Does: creates a daily backup of the Koha database.
Frecuencia sugerida: diaria
Buscar
Sitemap
Script path: misc/cronjobs/sitemap.pl
Does: processes all biblio records from a Koha instance and generates sitemap files complying with the protocol as described on http://sitemaps.org. The goal of this script is to be able to provide to search engines direct access to biblio records. It avoids leaving search engines browsing Koha’s OPAC which would generate a lot of site traffic and server workload.
Note A file named sitemapindex.xml is generated. It contains references to multiple sitemap files. Each file contains at most 50,000 URLs and is named sitemapXXXX.xml.
The files must be stored on the Koha OPAC’s root directory. In the same directory a robots.txt file with the following contents is required:
Sitemap: sitemapindex.xml User-agent: * Disallow: /cgi-bin/
Rebuild index
Ruta del script: misc/migration_tools/rebuild_zebra.pl
Does: updates Zebra indexes with recently changed data.
Requerido por: Zebra
Frecuencia sugerida: cada x minutos, (entre 5-15 minutos), dependiendo de las necesidades de rendimiento
Note On newer Koha installations, this cron job has been replaced by the koha-indexer daemon which indexes new and modified Koha data every 30 seconds.
Circulación
Cola de reservas
Ruta del script: misc/cronjobs/holds/build_holds_queue.pl
Does: updates holds queue report
Required by: Holds queue report
Frecuencia sugerida: cada 1-4 horas
Descripción:
Un script que se debe ejecutar periódicamente si su sistema de bibliotecas permite a los usuarios hacer reservas. Este script decide qué biblioteca debe ser responsable del cumplimiento de una solicitud de reserva dada.
Su comportamiento está controlado por las preferencias del sistema StaticHoldsQueueWeight y RandomizeHoldsQueueWeight.
Si no desea que todas las bibliotecas participen en el proceso de satisfacer reservas, se deberán incluir las bibliotecas que *sí* participan introduciendo los códigos de sucursal de todas las bibliotecas participantes, separados por comas ( por ejemplo «MPL,CPL,SPL,BML» etc. ).
Por defecto, la cola de reservas será generada de forma que el sistema intentará primero cubrir las reservas utilizando ejemplares disponibles en la biblioteca de retiro de ser posible. Si no hay ejemplares disponibles para cubrir la reserva, build_holds_queue.pl utilizará la lista de bibliotecas definida en StaticHoldsQueueWieght. Si está deshabilitada RamdomizeHoldsQueueWeight ( comportamiento por defecto ), el script asignará pedidos de cobertura en el orden de ubicación de las sedes en la preferencia del sistema StaticHoldsQueueWeight.
Por ejemplo, si su sistema cuenta con tres bibliotecas, de diferentes tamaños ( pequeño, mediano y grande ) y quiere que la carga de cumplimiento esté en las bibliotecas más grandes más que en las bibliotecas más pequeñas, usted querría que StaticHoldsQueueWeight fuese algo así «LRG,MED,SML».
Si quiere que la carga de cumplimiento se extienda por igual por todas las bibliotecas del sistema, sólo tiene que activar RandomizeHoldsQueueWeight. Cuando esta preferencia del sistema está activada, el orden en el que las bibliotecas se les pedirá que satisfagan una reserva se asignará aleatoriamente cada vez que se vuelve a generar la lista.
Dejar StaticHoldsQueueWeight vacío está contraindicado. Si lo hace, hará que el script build_holds_queue ignore RandomizeHoldsQueueWeight, provocando que el script solicite que se satisfaga las reservas no al azar, sino por orden alfabético.
Expired holds
Ruta del script: misc/cronjobs/holds/cancel_expired_holds.pl
Does: cancels holds where the user has set an expiration date. If the library is using the ExpireReservesMaxPickUpDelay and ExpireReservesMaxPickUpDelayCharge preferences then this script will also cancel holds that have been sitting on the hold shelf for too long and will (if the library does) charge the patron for not picking up the hold.
Frecuencia sugerida: diaria
Unsuspend holds
Ruta del script: misc/cronjobs/holds/auto_unsuspend_holds.pl
Does: checks to find holds that should no longer be suspended and removes the suspension if the AutoResumeSuspendedHolds preference is set to “allow”. This puts the patron back in to the queue where they were when the hold was suspended.
Frecuencia sugerida: diaria
Multas
Ruta del script: misc/cronjobs/fines.pl
Does: calculates and charges (or increments) overdue fines per item to patron accounts. The fine calculation is done using the grace period, fine interval, fine amount and other parameters from the circulation and fines rules.
Requerido por: preferencia del sistema finesMode
Frecuencia sugerida: todas las noches
Note If the Koha system preference “finesMode” is set to “production”, the fines are charged to the patron accounts. If set to “test”, the fines are calculated but not applied.
Note Fines will not be applied on a holiday.
Static fines
Script path: misc/cronjobs/staticfines.pl
Does: charges a single static fine for any/all overdues a patron currently has outstanding. The charge amount is either defined on the command line per borrower category or will use the circulation rules associated with the oldest overdue item the patron has currently checked out (for the first fine period only) Once charged, the fine is static: No new fines will be added until the existing fine is paid off in full.
Frecuencia sugerida: todas las noches
Note If the Koha system preference “finesMode” is set to “production”, the fines are charged to the patron accounts. If set to “test”, the fines are calculated but not applied.
Note Fines won’t be applied on a holiday.
Long overdues
Ruta del script: misc/cronjobs/longoverdue.pl
Qué hace: permite especificar los retrasos para que los ítems cambien a estado de perdidos, y opcionalmente cobrar el precio de sustitución en el registro del ítem.
Frecuencia sugerida: todas las noches
Nota
Staff can control some of the parameters for the longoverdue cron job with the DefaultLongOverdueLostValue and DefaultLongOverdueChargeValue preferences.
Seguimiento de total de préstamos
Ruta del script: misc/cronjobs/update_totalissues.pl
Does: updates the biblioitems.totalissues field in the database with the latest tally of checkouts based on historical issue statistics.
Frecuencia sugerida: todas las noches
Advertencia
Si la hora en su servidor de base de datos no coincide con la hora en el servidor Koha tendrá que tener esto en cuenta, y probablemente utilizar el argumento –since en vez de el argumento –interval para la actualización incremental.
Nota
This cronjob can be used if there is a performance concern. Otherwise, use the UpdateTotalIssuesOnCirc System Preference.
Generate patron file for offline circulation
Ruta del script: misc/cronjobs/create_koc_db.pl
Does: generates the borrowers.db file for use with the Koha offline circulation tool
Frecuencia sugerida: semanal
Renovación automática
Ruta del script: misc/cronjobs/automatic_renewals.pl
Does: renews items if you’re allowing automatic renewal with your circulation and fines rules.
Frecuencia sugerida: todas las noches
Usuarios
Batch delete patrons
Ruta del script: misc/cronjobs/delete_patrons.pl
Does: deletes patron records in batch based on date not borrowed since, expired before, last seen, category code, or library branch.
Nota
Dates should be in ISO format, e.g., 2013-07-19, and can be generated with date -d “-3 month” «+%Y-%m-%d».
Importante
The options to select the patron records to delete are cumulative. For example, supplying both –expired_before and –library specifies that patron records must meet both conditions to be selected for deletion.
PARAMETERS
–not_borrowed_since Delete patrons who have not borrowed since this date.
–expired_before Delete patrons with an account expired before this date.
–last_seen Delete patrons who have not been connected since this date. The system preference TrackLastPatronActivity must be enabled to use this option.
–category_code Delete patrons who have this category code.
–library Delete patrons in this library.
-c|–confirm This flag must be provided in order for the script to actually delete patron records. If it is not supplied, the script will only report on the patron records it would have deleted.
-v|–verbose Verbose mode.
Unverified registrations
Ruta del script: misc/cronjobs/delete_expired_opac_registrations.pl
Does: deletes patron registrations that were submitted via the OPAC but not reviewed by the library within the number of days entered in the PatronSelfRegistrationExpireTemporaryAccountsDelay preference.
Frecuencia sugerida: todas las noches
Unconfirmed registrations
Ruta del script: misc/cronjobs/delete_unverified_opac_registrations.pl
Does: deletes patron self registrations that were submitted via the OPAC but not confirmed via email within 24 hours. This is only necessary if you are requiring patrons to confirm their registrations via email with the PatronSelfRegistrationVerifyByEmail preference.
Frecuencia sugerida: cada hora
Anonymize patron data
Ruta del script: misc/cronjobs/batch_anonymise.pl
Does: removes borrowernumbers from circulation history so that the stats are kept, but the patron information is removed for privacy reasons.
Actualizar al tipo usuario niño a adulto
Ruta del script: misc/cronjobs/j2a.pl
Does: converts juvenile/child patrons from juvenile patron category and category code to corresponding adult patron category and category code when they reach the upper age limit defined in the Patron Categories.
Frecuencia sugerida: todas las noches
DESCRIPTION
Este script está diseñado para actualizar los usuarios tipos de usuario juvenil a adultos, retirar el garante, y actualizar sus códigos de categoría apropiada cuando llegan a la edad máxima definida en las Categorías de Usuarios.
USAGE EXAMPLES
«juv2adult.pl»
«juv2adult.pl» -b=<branchcode> -f=<categorycode> -t=<categorycode> (Processes a single branch, and updates the patron categories from category to category)
«juv2adult.pl» -f=<categorycode> -t=<categorycode> -v -n (Processes all branches, shows all messages, and reports the patrons who would be affected. Takes no action on the database)
Avisos
Message queue
Ruta del script: misc/cronjobs/process_message_queue.pl
Does: processes the message queue to send the check out, check in and hold filled emails and SMS message to users and sends outgoing emails to patrons. requires EnhancedMessagingPreferences to be on
Frecuencia sugerida: 1-4 horas
Importante
Item due and Advanced due notices are controlled by the advance_notices cron.
Advanced notice
Ruta del script: misc/cronjobs/advance_notices.pl
Does: prepares «pre-due» notices and «item due» notices for patrons who request them prepares notices for patrons for items just due or coming due soon. requires EnhancedMessagingPreferences to be on
Frecuencia sugerida: todas las noches
Nota
This script does not actually send the notices. It queues them in the message queue for later
Overdue notice
Ruta del script: misc/cronjobs/overdue_notices.pl
Qué hace: prepara los mensajes para alertar a los usuarios de mensajes de retrasos (ambas vías correo electrónico e impresión)
Frecuencia sugerida: todas las noches
Nota
This script does not actually send the notices. It queues them in the message queue for later or generates the HTML for later printing
See also
The misc/cronjobs/advance_notices.pl program allows you to send messages to patrons in advance of their items becoming due, or to alert them of items that have just become due.
Imprimir retrasos
Script path: misc/cronjobs/printoverdues.sh
Does: generates PDF files from HTML files in directories and prints them
Print hold notices
Ruta del script: misc/cronjobs/gather_print_notices.pl
Qué hace: busca en la cola de mensajes avisos de reserva que no pasaron porque el usuario no tenía correo electrónico y genera un aviso impreso
Frecuencia sugerida: todas las noches
Talking Tech
Para obtener más información sobre la configuración de este producto de terceros vea el capítulo Talking Tech
Sending notices file
Ruta del script: misc/cronjobs/thirdparty/TalkingTech_itiva_outbound.pl
Does: generates Spec C outbound notifications file for Talking Tech i-tiva phone notification system.
Required by: TalkingTechItivaPhoneNotification
Frecuencia sugerida: todas las noches
Receiving notices file
Ruta del script: misc/cronjobs/thirdparty/TalkingTech_itiva_inbound.pl
Does: processes received results files for Talking Tech i-tiva phone notification system.
Required by: TalkingTechItivaPhoneNotification
Frecuencia sugerida: todas las noches
Notify patrons of expiration
Ruta del script: misc/cronjobs/membership_expiry.pl
Does: sends messages to warn patrons of their card expiration to the message queue cron.
Requires: MembershipExpiryDaysNotice
Frecuencia: mensual
In processing/book cart
Ruta del script: misc/cronjobs/cart_to_shelf.pl
Does: updates all items with a location of CART to the item’s permanent location.
Required by: NewItemsDefaultLocation, InProcessingToShelvingCart, and ReturnToShelvingCart system preferences
Frecuencia sugerida: cada hora
Catálogo
Import webservice batch
Ruta del script: misc/cronjobs/import_webservice_batch.pl
Does: processes import bach queues of type “webservice”. Batches can also be processed through the UI.
Nota
This script is used for OCLC Connexion
Demonio de conexión de importación
Ruta del script: misc/bin/connexion_import_daemon.pl
Does: listens for OCLC Connexion requests and is compliant with OCLC Gateway specification. It takes requests with MARC XML and import batch parameters from a configuration file and forwards it to svc/import_bib
Nota
This script is used for OCLC Connexion
Eliminar ítems en lote
Ruta del script: misc/cronjobs/delete_items.pl
Does: generates a query against the items database and deletes the items matching the criteria specified in the command line arguments.
PARAMETERS
–verbose Send the «WHERE» clause generated by the collected C<–where> arguments, as well as items affected to Standard Out.
–where The C<–where> option may called multiple times. The following argument must be a syntactically valid SQL statement which is part of the C<WHERE> clause querying the items table. These are joined by C<AND>.
–commit No items will be deleted unless the C<–commit> flag is present.
EXAMPLES
The following are examples of this script:
delete_items.pl –where «items.withdrawn ! 0» –where «items.withdrawn_on < $(date –date=»13 month ago» –rfc-3339=date)» –commit
delete_items.pl –where «itemlost >= “1”» –where «itemlost <=”4”» –where «itemlost_on < “2014-04-28”» –commit
Check URL quick
Script path: misc/cronjobs/check-url-quick.pl
Does: checks URLs from biblio records; scans all URLs found by default in 856$u of bibliographic records and displays if resources are available or not.
Nota
This script replaces the check-url.pl script
PARAMETERS
–host=http://default.tld Server host used when URL doesn’t have one, ie doesn’t begin with “http:”. For example, if –host=mylib.com, then when 856$u contains “img/image.jpg”, the url checked is: http://www.mylib.com/image.jpg.
–tags Tags containing URLs in $u subfields. If not provided, 856 tag is checked. Multiple tags can be specified, for example:
check-url-quick.pl –tags 310 410 856
–verbose|v Outputs both successful and failed URLs.
–html Formats output in HTML. The result can be redirected to a file accessible by http. This way, it’s possible to link directly to the bibliographic record in edit mode. With this parameter –host-intranet is required.
–host-intranet=http://koha-pro.tld Server host used to link to bibliographic record editing page in Koha intranet interface.
–timeout=10 Timeout for fetching URLs. By default 10 seconds.
–maxconn=1000 Number of simulaneous HTTP requests. By default 200 connexions.
Compruebar las URLs
Ruta del script: misc/cronjobs/check-url.pl
Qué hace: Verifica las URLs en el campo 856$u. La salida del script puede ser formateada en CSV o HTML. La version HTML se enlaza directamente al editor del registro MARC bibliográfico.
Frecuencia sugerida: mensual
Learn more: http://wiki.koha-community.org/wiki/Check-url_enhancements
Delete records via leader
Ruta del script: misc/cronjobs/delete_records_via_leader.pl
Does: attempts to delete any MARC records where the leader character 5 equals “d”.
PARAMETERS
-c|–confirm Script will do nothing without this parameter
-v|–verbose Verbose mode
-t|–test Test mode, does not delete records. Test mode cannot determine if a record/item will be deleted successfully, it will only tell you what records and items the script will attempt to delete.
-i|–delete-items Try deleting items before deleting record. Records with items cannot be deleted.
Serials update
Ruta del script: misc/cronjobs/serialsUpdate.pl
Qué hace: comprueba si existe un ejemplar «retrasado» en las suscripciones activas, y si existe, el script lo pondrá como retrasado, y agregará el siguiente como «esperado».
Frecuencia sugerida: todas las noches
Automatic item update
Ruta del script: misc/cronjobs/automatic_item_modification_by_age.pl
Does: updates items based on the list of rules set forth in the Modificaciones automáticas de ítems por edad tool
Required by: Modificaciones automáticas de ítems por edad
Frecuencia sugerida: todas las noches
OPAC
RSS feeds
Ruta del script: misc/cronjobs/rss/rss.pl
Does: produces an RSS XML document for any SQL query (not used for search results RSS feed). Learn more.
Frecuencia sugerida: cada hora
System administration
Services throttle
Ruta del script: misc/cronjobs/services_throttle.pl
Does: resets the xISBN services throttle
Frecuencia sugerida: todas las noches
Clean up database
Ruta del script: misc/cronjobs/cleanup_database.pl
Does: truncates the sessions table, cleans out old zebraqueue entries, action logs and staged MARC files.
Adquisiciones
Limpiar sugerencias antiguas
Ruta del script: misc/cronjobs/purge_suggestions.pl
Does: removes old (defined by you) suggestions from the suggestion management area.
Nota
The system preference PurgeSuggestionsOlderThan defines the number of days used in the script
Email suggestions to process
Ruta del script: misc/cronjobs/notice_unprocessed_suggestions.pl
Does: generates a notice to the fund owner that there are suggestions in need of processing
EDI message processing
Ruta del script: misc/cronjobs/edi_cron.pl
Does: sends and received EDI messages
Frecuencia sugerida: cada 1-4 horas
Remove temporary EDI files
Ruta del script: misc/cronjobs/remove_temporary_edifiles.pl
Does: removes temporary EDI files that are older than 5 days
Informes
Ejecutar informe
Script path: misc/cronjobs/runreport.pl
Does: runs pre-existing saved reports
PARAMETERS
-v|–verbose Verbose output
–format=s Selects format. Choice of text, html, csv or tsv
-e|–email Whether or not to use e-mail (implied by –to or –from)
-a|–attachment Attach the report as a file. Cannot be used with html format
–username Username to pass to the SMTP server for authentication
–password Password to pass to the SMTP server for authentication
–method The type of authentication. Ie. LOGIN, DIGEST-MD5, etc.
–to=s E-mail address to send report to
–from=s E-mail address to send report from
–subject=s Subject for the e-mail
–store-results Store the result of the report
–csv-header Add column names as first line of csv output
ARGUMENTS
reportID Report ID Number from saved_sql.id, multiple ID’s may be specified
Norwegian patron database
NL sync to Koha
Script path: misc/cronjobs/nl-sync-to-koha.pl
Does: syncs patrons from the Norwegian national patron database (NL) to Koha
Note Relies on NorwegianPatronDBUsername and NorwegianPatronDBPassword system preferences
NL sync from Koha
Script path: misc/cronjobs/nl-sync-from-koha.pl
Does: syncs patrons from Koha to the Norwegian national patron database (NL)
Note Relies on NorwegianPatronDBUsername and NorwegianPatronDBPassword system preferences
Daemons
Daemons are continuously running tasks that help support Koha operation. Your database and webserver are run as daemons. Newer versions of Koha start two different daemons for most koha instances:
zebra - this is the index server
koha-indexer - this daemon updates the index server with new and modified data (biblios and authorities)
These daemons are started by the script /etc/init.d/koha-common.
Zebra indexer daemon
Script path: /usr/sbin/koha-indexer (invoked from /etc/init.d/koha-common)
The koha-indexer script invokes rebuild_zebra.pl in daemon mode. In this mode, the script will run continuously and check the database for new or modified data every 30 seconds. New or modified records are then sent to Zebra for indexing, which only takes a second or so. The advantage of this approach is a search system which is much more responsive to changes, compared to the cron job approach.
Scripts no aprobados
Éstos no se deberían ejecutar sin modificar:
Ruta del script: misc/cronjobs/update_items.pl
Ruta del script: misc/cronjobs/smsoverdues.pl
Ruta del script: misc/cronjobs/notifyMailsOp.pl
Ruta del script: misc/cronjobs/reservefix.pl
Ruta del script:misc/cronjobs/zebraqueue_start.pl
Social data
Get report social data
Ruta del script: misc/cronjobs/social_data/get_report_social_data.pl
Does: downloads data from Babelthèque to add to OPAC records
Frecuencia sugerida: todas las noches
Update social data
Ruta del script: misc/cronjobs/social_data/update_social_data.pl
Does: updates OPAC records with Babelthèque social data