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 範例

Koha crontab 在 misc/cronjobs/crontab.example

The example includes sample boilerplate cron job entries for the most commonly-used cron jobs.

Cron jobs

工作排程應該在 misc/ 之下,若在 misc/ 之下找不到而且以標準方式安裝伺服器時則可能在 bin/

備份

Daily backup

腳本路徑:misc/cronjobs/backup.sh

Does: creates a daily backup of the Koha database.

建議頻率:逐日

流通

Holds queue

腳本路徑:misc/cronjobs/holds/build_holds_queue.pl

Does: updates holds queue report

Required by: Holds queue report

建議頻率:每 1-4 小時

說明:

  • 應定期執行腳本若您的圖書館系統允許讀者預約在架的館藏。此腳本決定負責滿足此預約的圖書館。

    It’s behavior is controlled by the system preferences StaticHoldsQueueWeight and RandomizeHoldsQueueWeight.

    不讓所有圖書館參與館藏滿足預約計畫,應列出*要*參加該計畫的圖書館,包括圖書館的條碼,並以逗點區隔(如:」MPL,CPL,SPL,BML」 等)。

    預設,預約順位將先列入提取圖書館。若無法滿足,則 build_holds_queue.pl 將取用 StaticHoldsQueueWeight 設定的圖書館。若停用 RandomizeHoldsQueueWeight (預設值為停用),則依 StaticHoldsQueueWeight 偏好設定的圖書館順序,逐一取用。

    例如,系統內有三個規模不一的圖書館(大型、中型與小型),希望由大型圖書館承擔較多的預約責任,StaticHoldsQueueWeight偏好應設為」LRG,MED,SML」。

    若期望各圖書館平均分擔預約的任務,應啟用RandomizeHoldsQueueWeight偏好,將隨機將預約分配給各圖書館。

    讓 StaticHoldsQueueWeight 空白是禁忌,將造成 build_holds_queue 腳本忽略 RandomizeHoldsQueueWeight,使該腳本要求不是隨機卻採用字順方式填入預約。

Expired holds

腳本路徑: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.

建議頻率:逐日

Unsuspend holds

腳本路徑: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.

建議頻率:逐日

罰款

腳本路徑: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.

必備:finesMode 系統偏好

建議頻率:每晚

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.

PARAMETERS - -h|–help

  • get help message

  • -l|–log

    • log the output to a file (optional if the -o parameter is given)

  • -o|–out

    • ouput directory for logs (defaults to env or /tmp if the directory does not exist)

  • -v|–verbose

    • verbose mode

  • -m|–maxdays

    • how many days back of overdues to process

    • this can improve performance by simply the number of records that need to be processed. It can be safe to limit the overdues processed to those under X days overdues given that circulation policy often caps fines at a maximum after a number of days.

Static fines

腳本路徑: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.

建議頻率:每晚

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.

說明 假日不計入罰款。

Long overdues

腳本路徑:misc/cronjobs/longoverdue.pl

做:允許更改不同程度的遺失館藏,並向讀者收取館藏記錄內的重置價格。

建議頻率:每晚

說明

Staff can control some of the parameters for the longoverdue cron job with the DefaultLongOverdueLostValue and DefaultLongOverdueChargeValue preferences.

Track total checkouts

腳本路徑:misc/cronjobs/update_totalissues.pl

做:以最新的借出現況更新資料庫內 biblioitems.totalissues 欄位的內容。

建議頻率:每晚

警示

需考量資料庫伺服器與 Koha 伺服器的時間不同步的狀況,並使用 –since 參數取代 –interval 參數做為新增性更新的依據。

說明

可以使用此工作排程。也可使用 UpdateTotalIssuesOnCirc 系統偏好。

Generate patron file for offline circulation

腳本路徑:misc/cronjobs/create_koc_db.pl

Does: generates the borrowers.db file for use with the Koha offline circulation tool

建議頻率:每週

自動續借

腳本路徑:misc/cronjobs/automatic_renewals.pl

Does: renews items if you’re allowing automatic renewal with your circulation and fines rules.

建議頻率:每晚

重要

To run this properly, you must use the –confirm parameter, otherwise it will only run in test mode

PARAMETERS - -h|–help

  • get help message

  • –send-notices

    • sends the AUTO_RENEWALS notice to patrons if the automatic renewal has been done

  • -v|–verbose

    • verbose mode

  • -c|–confirm

    • without this parameter no changes will be made, the script will run in test mode

    • without this parameter, the script will default to verbose mode as well

讀者

Batch delete patrons

腳本路徑: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.

說明

Dates should be in ISO format, e.g., 2013-07-19, and can be generated with date -d 『-3 month』 「+%Y-%m-%d」.

重要

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.

Anonymize patron data

腳本路徑: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.

Update patron categories

Script path: misc/cronjobs/update_patrons_category.pl

Does: Updates the patron category of patrons matching the given criteria to another specified patron category. This can be used to convert child patrons from a child patron category to an adult patron category when they reach the upper age limit defined in the patron category.

This script replaces the j2a.pl script.

建議頻率:每晚

DESCRIPTION

This script is designed to update patrons from one category to another using the criteria specified using command line arguments.

PARAMETERS

  • –too_old Update, if patron is over the upper age limit of their current patron category.

  • –too_young Update, if patron is below the minimum age limit of their patron category.

  • –fo=X|–fineover=X Update, if the total fine amount on the patron account is over X.

  • –fu=X|–fineunder=X Update, if the total fine amount on the patron account is below X.

  • –rb=date|regbefore=date Update, if the registration date of the patron is before the given date.

  • –ra=date|regafter=date Update, if the registration date of the patron is after the given date.

  • -d –field name=value Update, if the given condition is met. <name> has to be replaced by a column name of the borrowers table. The condition is met, if the the content of the field equals <value>.

  • –where <conditions> Update, if the SQL <where> clause is met.

  • -v|–verbose Verbose mode: Without this flag only fatal errors are reported.

  • -c|–confirm Commits the changes to the database. No changes will be made unless this argument is added to the command.

  • -b|–branch <branchcode> Update, if the home branch of the patron matches the <branchcode> given.

  • -f|–form <categorycode> Update, if the patron currently has this patron category.

  • -t|–to <categorycode> Update the patrons matching the criteria to this patron category.

USAGE EXAMPLES

「update_patrons_category.pl」

「update_patrons_category.pl」 -b=<branchcode> -f=<categorycode> -t=<categorycode> -c」 (Processes a single branch, and updates the patron categories from category to category)

「update_patrons_category.pl」 -f=<categorycode> -t=<categorycode> -v」 (Processes all branches, shows all messages, and reports the patrons who would be affected. Takes no action on the database)

通知

Message queue

腳本路徑:misc/cronjobs/process_message_queue.pl

做:處理訊息佇列納入發送給讀者的借出、還入與預約歸檔電子郵件與簡訊以及送給讀者的電子郵件。必須將 EnhancedMessagingPreferences 偏好設為開啟

建議頻率:1-4小時

重要

Item due and Advanced due notices are controlled by the advance_notices cron.

Advanced notice

腳本路徑:misc/cronjobs/advance_notices.pl

做:應讀者的要求提供 「到期提前」 通知與 「到期館藏」 通知給需要的讀者。需將 EnhancedMessagingPreferences 偏好設為開啟

建議頻率:每晚

說明

This script does not actually send the notices. It queues them in the message queue for later

Overdue notice

腳本路徑:Script path: misc/cronjobs/overdue_notices.pl

做:準備讀者逾期的訊息 (經電子郵件或列印)

建議頻率:每晚

說明

This script does not actually send the notices. It queues them in the message queue for later or generates the HTML for later printing

參見

此 misc/cronjobs/advance_notices.pl 程式允許您送出訊息給逾期的讀者,或警示他們即將逾期。

Talking Tech

To learn more about setting up this third party product view the Talking Tech chapter.

Sending notices file

腳本路徑:misc/cronjobs/thirdparty/TalkingTech_itiva_outbound.pl

Does: generates Spec C outbound notifications file for Talking Tech i-tiva phone notification system.

必備於:TalkingTechItivaPhoneNotification

建議頻率:每晚

Receiving notices file

腳本路徑:misc/cronjobs/thirdparty/TalkingTech_itiva_inbound.pl

Does: processes received results files for Talking Tech i-tiva phone notification system.

必備於:TalkingTechItivaPhoneNotification

建議頻率:每晚

Notify patrons of expiration

腳本路徑:misc/cronjobs/membership_expiry.pl

Does: sends messages to warn patrons of their card expiration to the message queue cron.

必備:MembershipExpiryDaysNotice

頻率:每天

In processing/book cart

腳本路徑:misc/cronjobs/cart_to_shelf.pl

Does: updates all items with a location of CART to the item’s permanent location.

Required by: NewItemsDefaultLocation, and UpdateItemLocationOnCheckin system preferences

建議頻率:每小時

目錄

Import webservice batch

腳本路徑:misc/cronjobs/import_webservice_batch.pl

Does: processes import bach queues of type 『webservice』. Batches can also be processed through the UI.

說明

此腳本適用於 OCLC Connexion

Connexion import daemon

腳本路徑: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

說明

此腳本適用於 OCLC Connexion

Batch item deletion

腳本路徑: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

腳本路徑:misc/cronjobs/check-url-quick.pl

備註

This script replaces the deprecated check-url.pl script

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.

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.

Delete records via leader

腳本路徑: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.

Update authorities

腳本路徑:misc/cronjobs/merge_authorities.pl

Does: updates biblio data with changes to authorities records

說明

此腳本的名稱是誤導。此腳本並未合併權威記錄反而合併與其連結的書目記錄。執行腳本時編輯權威記錄將適用於使用權威記錄的書目記錄。

Required by: AuthorityMergeLimit system preference

建議頻率:每晚

Serials update

腳本路徑:misc/cronjobs/serialsUpdate.pl

做:檢查訂閱中的期刊是否有 「遲到」 的刊期,若有,此腳本設定它為遲到,並把下一期列為期待簽收。

建議頻率:每晚

自動更新館藏

腳本路徑:misc/cronjobs/automatic_item_modification_by_age.pl

做:根據在 依年齡自動修改館藏 工具的規則更新館藏

使用到的是:依年齡自動修改館藏

建議頻率:每晚

OPAC

RSS feeds

腳本路徑:misc/cronjobs/rss/rss.pl

Does: produces an RSS XML document for any SQL query (not used for search results RSS feed). Learn more.

建議頻率:每小時

Authorities browser

腳本路徑:misc/cronjobs/build_browser_and_cloud.pl

Does: generates content for authorities browse in OPAC

必備於:OpacBrowser 系統偏好

重要

此偏好與工作排程應祗適用於法語系統。

Subject/author clouds

腳本路徑:misc/cronjobs/cloud-kw.pl

Does: generates HTML keywords clouds from Koha Zebra indexes. misc/cronjobs/cloud-sample.conf has a sample of how this script operates.

頻率:這是您可每月執行一次的腳本類型,其內容並不常變動。

System administration

Services throttle

腳本路徑:misc/cronjobs/services_throttle.pl

做:重設 xISBN 服務量

建議頻率:每晚

Clean up database

腳本路徑:misc/cronjobs/cleanup_database.pl

Does: truncates the sessions table, cleans out old zebraqueue entries, action logs and staged MARC files.

See http://schema.koha-community.org/ for the Koha database schema.

PARAMETERS - –del-exp-selfreg

  • –del-unv-selfreg DAYS

    • Delete all unverified self registrations in borrower_modifications older than DAYS.

  • –deleted-catalog DAYS

    • Purge bibliographic records deleted more than DAYS days ago from tables deletedbiblio, deletedbiblio_metadata, deletedbiblioitems and deleteditems.

  • –deleted-patrons DAYS

    • Purge patrons deleted more than DAYS days ago from the deletedborrowers table.

  • –fees DAYS

    • Purge entries in the accountlines table older than DAYS days, where the amountoutstanding is 0 or NULL.

    • In the case of –fees, DAYS must be greater than or equal to 1.

  • -h|–help

    • Get help message

  • –import DAYS

    • Purge entries from import tables older than DAYS days.

    • This includes import_batches, import_biblios, import_items, import_record_matches and import_records.

    • In import_batches, the batches that are the result of Z39.50 searches are removed with the –z3950 parameter.

    • Defaults to 60 days if no days specified.

  • --list-invites

    DAYS

    • Purge (unaccepted) list share invites from the virtualshelfshares table older than DAYS days

    • Defaults to 14 days if no days specified.

  • –logs DAYS

    • Purge entries from the action_logs table older than DAYS days.

    • Defaults to 180 days if no days specified.

  • -m|–mail DAYS

    • Purge entries from the message_queue table that are older than DAYS days.

    • Defaults to 30 days if no days specified.

  • –merged

    • Purge completed entries from the need_merge_authorities table.

  • –oauth-tokens

    • Delete expired OAuth2 tokens

  • –old-issues DAYS

    • Purge checkouts returned more than DAYS days ago from the old_issues table.

  • –old-reserves DAYS

    • Purge holds more than DAYS old from the old_reserves table.

  • –restrictions DAYS

    • Purge patrons restrictions from the borrower_debarments table expired since more than DAYS days.

    • Defaults to 30 days if no days specified.

  • –all-restrictions

    • Purge all expired patrons restrictions from the borrower_debarments table.

  • –searchhistory DAYS

    • Purge entries from the search_history table older than DAYS days.

    • Defaults to 30 days if no days specified

  • –sessions

    • Purge the sessions table.

    • If you use this while users are logged into Koha, they will have to reconnect.

  • –sessdays DAYS

    • Purge only sessions older than DAYS days.

  • –statistics DAYS

    • Purge entries from the statistics tables that are more than DAYS days old.

  • –temp-uploads

    • Delete temporary uploads from the uploaded_files table older than the number of days specified in the UploadPurgeTemporaryFilesDays system preference.

  • –temp-uploads-days DAYS

  • –transfers DAYS

    • Purge transfers completed more than DAYS days ago from the branchtransfers table.

  • –unique-holidays DAYS

    • Delete all unique holidays from the special_holidays table older than DAYS

  • –uploads-missing FLAG

    • Delete upload records for missing files when FLAG is true, count them otherwise

  • -v|–verbose

    • verbose mode

  • –zebraqueue DAYS

    • Purge completed zebraqueue entries older than DAYS days.

    • Defaults to 30 days if no days specified.

  • –z3950

    • Purge records from import tables that are the result of Z39.50 searches.

    • To purge all other import information, see the –import parameter above.

Share usage stats

路徑腳本:misc/cronjobs/share_usage_with_koha_community.pl

Does: sends your info to the Hea website if you’re sharing information via the UsageStats feature

頻率:每月

採訪

清除舊的建議

腳本路徑:misc/cronjobs/purge_suggestions.pl

Does: removes old (defined by you) suggestions from the suggestion management area.

說明

The system preference PurgeSuggestionsOlderThan defines the number of days used in the 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

腳本路徑:misc/cronjobs/edi_cron.pl

Does: sends and received EDI messages

頻率:每 15 分鐘

Remove temporary EDI files

腳本路徑:misc/cronjobs/remove_temporary_edifiles.pl

做:移除 5 天前的暫存 EDI 檔案

報表

Run report

腳本路徑: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

社會資料

取得社會資料報表

腳本路徑:misc/cronjobs/social_data/get_report_social_data.pl

做:從 Babelthèque 下載資料加入 OPAC 紀錄

建議頻率:每晚

更新社會資料

腳本路徑:misc/cronjobs/social_data/update_social_data.pl

做:以 Babelthèque 資料更新 OPAC 紀錄

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.

不適用的腳本

不應在未修改前執行這些:

腳本路徑:misc/cronjobs/update_items.pl

腳本路徑:misc/cronjobs/smsoverdues.pl

腳本路徑:misc/cronjobs/notifyMailsOp.pl

腳本路徑:misc/cronjobs/reservefix.pl

腳本路徑:misc/cronjobs/zebraqueue_start.pl