工作排程與守護行程
Koha 由若干背景工作支援。包括定期執行的工作 (工作排程) 或稱為 守護行程的持續執行的工作。
工作排程是安排自動伺服器裡的指令或腳本以完成指定工作的 Linux 指令。以工作排程方式執行的腳本通常是修改檔案或資料庫;然而,它們也可以執行其他不需修改伺服器資料的工作,像是送出電子郵件通知。
daemon 是 Linux 命令,系統啟動後就開始執行,並持續在背景執行若干功能。Koha 用到的資料庫 (MYSQL 或 MariaDB) 及網頁伺服器 (通常是 Apache),就是一種 daemon。
Koha 含有多個工作排程 (搜尋引擎索引、產生逾期通知、清除資料等) 及若干守護行程。本章將說明它們。
Crontab 範例
Koha crontab 在 misc/cronjobs/crontab.example
此範例包括 boilerplate 工作排程款目的樣本。
工作排程
工作排程應該在 misc/ 之下,若在 misc/ 之下找不到而且以標準方式安裝伺服器時則可能在 bin/
備份
每日備份
腳本路徑:misc/cronjobs/backup.sh
做:新增 Koha 資料庫逐日備份。
建議頻率:逐日
搜尋
站台地圖
腳本路徑:misc/cronjobs/sitemap.pl
做:從 Koha instance 產生的書目紀錄與產生網站地圖檔案及其通訊協定都描述於 http://sitemaps.org。此腳本的目標是讓搜尋引擎直接近用書目紀錄。避免搜尋引擎瀏覽 Koha 的 OPAC 產生不必要的流量增加伺服器的工作量。
說明 產生檔案 sitemapindex.xml。藉此參照至多個網站地圖檔案。每個檔案至多可以容納 50,000 URL 並命多為 sitemapXXXX.xml。
檔案必須儲存在 Koha OPAC 的根錄內。就是與 robots.txt 同個目錄包括以下的內容:
Sitemap: sitemapindex.xml User-agent: * Disallow: /cgi-bin/
重建索引
腳本路徑:misc/migration_tools/rebuild_zebra.pl
做:納入最近變更的資料更新 Zebra 索引。
必需用到的:Zebra
頻率建議:每隔 x 分鐘,(5-15 分鐘之間) 視執行所需
說明 在較新的 Koha 安裝器裡,此工作排程已被 :ref:』koha-indexer daemon <cron-koha-indexer-label>』 取代,每 30 秒就更新索引及資料。
流通
預約佇列
腳本路徑:misc/cronjobs/holds/build_holds_queue.pl
做:更新預約順位報表
必須用到:預約順位報表
建議頻率:每 1-4 小時
說明:
應定期執行腳本若您的圖書館系統允許讀者預約在架的館藏。此腳本決定負責滿足此預約的圖書館。
由系統偏好 StaticHoldsQueueWeight 與 RandomizeHoldsQueueWeight 共同控制其行為。
不讓所有圖書館參與館藏滿足預約計畫,應列出*要*參加該計畫的圖書館,包括圖書館的條碼,並以逗點區隔(如:」MPL,CPL,SPL,BML」 等)。
預設,預約順位將先列入提取圖書館。若無法滿足,則 build_holds_queue.pl 將取用 StaticHoldsQueueWeight 設定的圖書館。若停用 RandomizeHoldsQueueWeight (預設值為停用),則依 StaticHoldsQueueWeight 偏好設定的圖書館順序,逐一取用。
例如,系統內有三個規模不一的圖書館(大型、中型與小型),希望由大型圖書館承擔較多的預約責任,StaticHoldsQueueWeight偏好應設為」LRG,MED,SML」。
若期望各圖書館平均分擔預約的任務,應啟用RandomizeHoldsQueueWeight偏好,將隨機將預約分配給各圖書館。
讓 StaticHoldsQueueWeight 空白是禁忌,將造成 build_holds_queue 腳本忽略 RandomizeHoldsQueueWeight,使該腳本要求不是隨機卻採用字順方式填入預約。
預約過期
腳本路徑:misc/cronjobs/holds/cancel_expired_holds.pl
做:預設,此工作排程僅自動執行使用者設定到期日的取消預約。若圖書館使用 ExpireReservesMaxPickUpDelay 與 ExpireReservesMaxPickUpDelayCharge 偏好則此腳本也取消在預約架太久的預約並將 (若圖書館要的) 向讀者收取未提取預約到館費用。
建議頻率:逐日
取消預約
腳本路徑:misc/cronjobs/holds/auto_unsuspend_holds.pl
做:若將 AutoResumeSuspendedHolds 偏好設為 『允許』 則此腳本檢查不需保留的預約並移除它們。此舉將讀者放回保留之前序列。
建議頻率:逐日
罰款
腳本路徑:misc/cronjobs/fines.pl
做: 計算和收取(或遞增)逾期罰款每館藏對讀者帳號。罰款計算使用寬限期已處理,罰款間隔, 罰款總數和其它參數從:ref:circulation and fines rules <circulation-and-fines-rules-label>.
必備:finesMode 系統偏好
建議頻率:每晚
說明 若 Koha 系統偏好 『finesMode』 已設為 『production』,則向讀者收取罰款。若設為 『test』,則計算罰款但不收取。
說明 假日不計入罰款。
參數 - -h|–help
取得協助資訊
-l|–log 記錄匯出至檔案 (如果提供 -o 參數)
-o|–out 為記錄匯出資料夾 (預設是 env 或 /tmp 如果資料夾不存在)
-v|–verbose verbose 模式
-m|–maxdays 從逾期日退多少天去處理它可以加強由書目數量去執行。它可全地去限制逾期計算在x天逾期由流通政策計算罰款在最多天之後。
固定罰款
腳本路徑:misc/cronjobs/staticfines.pl
做: 針對目前未付的讀者對任何/所有逾期收取單獨一定的罰款.費用由讀者類型每指令行定義或將使用流通規則針對讀者未付的最長逾期館藏(只針對第一個罰款期間)。一旦收費,罰款是定額: 沒有新罰款會再加入直到現有罰款已完全付清。
建議頻率:每晚
說明 若 Koha 系統偏好 『finesMode』 已設為 『production』,則向讀者收取罰款。若設為 『test』,則計算罰款但不收取。
說明 假日不計入罰款。
逾期太久
腳本路徑:misc/cronjobs/longoverdue.pl
做:允許更改不同程度的遺失館藏,並向讀者收取館藏記錄內的重置價格。
建議頻率:每晚
說明
館員可以經由 DefaultLongOverdueLostValue 與 DefaultLongOverdueChargeValue 偏好控制逾期太久的工作排程。
追蹤借出總數
腳本路徑:misc/cronjobs/update_totalissues.pl
做:以最新的借出現況更新資料庫內 biblioitems.totalissues 欄位的內容。
建議頻率:每晚
警示
需考量資料庫伺服器與 Koha 伺服器的時間不同步的狀況,並使用 –since 參數取代 –interval 參數做為新增性更新的依據。
說明
可以使用此工作排程。也可使用 UpdateTotalIssuesOnCirc 系統偏好。
產生讀者檔供離線流通之用
腳本路徑:misc/cronjobs/create_koc_db.pl
做:從 Koha 離線流通 工具產生 borrowers.db 檔案
建議頻率:每週
自動續借
腳本路徑:misc/cronjobs/automatic_renewals.pl
做:若在 流通與罰款規則 裡允許自動續借,將自動續借。
建議頻率:每晚
重要 請適當的執行,您必須使用 –confirm 參數, 否則它會在測試模式下執行
參數 - -h|–help
取得協助資訊
–send-notices 如果執行了自動續借,寄送 AUTO_RENEWALS 通知給讀者
-v|–verbose verbose 模式
-c|–confirm 沒有此參數, 不會有改變, 沒有此參數,此程式將執行在測試模式。程式預設是詳細模式。
讀者
批次刪除讀者
腳本路徑:misc/cronjobs/delete_patrons.pl
做:依照未曾借出日期、到期日、上網日期、屬性、或所屬圖書館,批次刪除讀者紀錄。
說明
應採用 ISO 格式的日期,如 2013-07-19,可以用指令產生 date -d 『-3 month』 「+%Y-%m-%d」。
重要
此選項是選擇讀者記錄去刪除 累積的。比方說,供應同為 –expired_before 以及 –library 指定特定讀者記錄必須吻合 同時 選擇刪除為條件。
參數
–not_borrowed_since 刪除到此日未曾借過書過的讀者
–expired_before 刪除帳號失效日早過此日的讀者
–last_seen 刪除那些在此日期後沒有使用的讀者。系統偏好 TrackLastPatronActivity 必須啟用以使用此選項。
–category_code 刪除此類讀者類型的讀者
–library 刪除此圖書館的讀者
-c|–confirm 此旗標心須提供以便程式能實際刪除讀者記錄。如果未提供,程式將呈報它將刪除的讀者記錄
-v|–verbose Verbose 模式.
未確認的註冊
腳本路徑:misc/cronjobs/delete_expired_opac_registrations.pl
做:從 PatronSelfRegistrationExpireTemporaryAccountsDelay 偏好內設定刪除從OPAC註冊一段日期,館員尚未核准的讀者註冊。
建議頻率:每晚
未確認的註冊
腳本路徑:misc/cronjobs/delete_unverified_opac_registrations.pl
做:刪除24 小時內經由 OPAC 自行註冊但未經電子郵件認證的讀者資料。必須先從 PatronSelfRegistrationVerifyByEmail 偏好設定確認經由電子郵件認證註冊。
建議頻率:每小時
匿名讀者資料
腳本路徑:misc/cronjobs/batch_anonymise.pl
做:用於匿名讀者資料。此腳本將從流通記錄裡移除讀者號,一方面保護讀者的隱私同時又保持原有的流通記錄。
更新兒童為成人讀者類型
腳本路徑:misc/cronjobs/j2a.pl
做:當青少年/兒童讀者的年齡達到另個讀者類型的標準時將其轉換為對映的該讀者類型。
建議頻率:每晚
DESCRIPTION
此腳本係供青少年讀者類型昇級至成人讀者類型之用,移除保證人,到讀指定讀者類型的年齡下限時昇級至適合的代碼。
USAGE EXAMPLES
「juv2adult.pl」
「juv2adult.pl」 -b=<branchcode> -f=<categorycode> -t=<categorycode> (處理單一分館,並逐一更新讀者類型)
「juv2adult.pl」 -f=<categorycode> -t=<categorycode> -v -n (處理所有分館、顯示全部訊息、報告受影響的讀者。不修改資料庫)
通知
信件佇列
腳本路徑:misc/cronjobs/process_message_queue.pl
做:處理訊息佇列納入發送給讀者的借出、還入與預約歸檔電子郵件與簡訊以及送給讀者的電子郵件。必須將 EnhancedMessagingPreferences 偏好設為開啟
建議頻率:1-4小時
重要
到期館藏與到期提前通知由 advance_notices cron 控制。
提前通知
腳本路徑:misc/cronjobs/advance_notices.pl
做:應讀者的要求提供 「到期提前」 通知與 「到期館藏」 通知給需要的讀者。需將 EnhancedMessagingPreferences 偏好設為開啟
建議頻率:每晚
說明
此腳本不會真的送出通知。祗把通知置於 訊息佇列 供以後使用
逾期通知
腳本路徑:Script path: misc/cronjobs/overdue_notices.pl
做:準備讀者逾期的訊息 (經電子郵件或列印)
建議頻率:每晚
印出逾期通知
腳本路徑:misc/cronjobs/printoverdues.sh
做:從目錄的 HTML 檔案產生 PDF 並列印
列印預約通知
腳本路徑:misc/cronjobs/gather_print_notices.pl
做:檢視因為讀者未留電子郵件地址而保留的訊息並產生列印通知
建議頻率:每晚
Talking Tech
設定此第三方產品的詳情參見 Talking Tech。
送出通知檔
腳本路徑:misc/cronjobs/thirdparty/TalkingTech_itiva_outbound.pl
做:產生 Spec C 的通知檔案供 Talking Tech i-tiva 電話通知系統。
必備於:TalkingTechItivaPhoneNotification
建議頻率:每晚
收到通知檔案
腳本路徑:misc/cronjobs/thirdparty/TalkingTech_itiva_inbound.pl
做:腳本處理收到來自Talking Tech i-tiva 電話通知系統的結果檔案。
必備於:TalkingTechItivaPhoneNotification
建議頻率:每晚
通知讀者證有效日期
腳本路徑:misc/cronjobs/membership_expiry.pl
做:把借書證到期的警示通知置於 訊息佇列 工作排程。
頻率:每天
處理中/圖書車
腳本路徑:misc/cronjobs/cart_to_shelf.pl
做:以 CART 位置做為館藏永久位置而更新所有館藏。
必備:NewItemsDefaultLocation、InProcessingToShelvingCart 以及`ReturnToShelvingCart` 系統偏好
建議頻率:每小時
目錄
批次匯入網頁服務
腳本路徑:misc/cronjobs/import_webservice_batch.pl
做:處理批次匯入 『網頁服務』 屬性佇列的工作排程。也可經由 UI 處理批次。
說明
此腳本適用於 OCLC Connexion
Connexion Import Daemon
腳本路徑:misc/bin/connexion_import_daemon.pl
做:daemon 聽取 OCLC Connexion 的請求並回應 OCLC Gateway 規格。讀取 MARC XML 的請求並從組態檔匯入參數轉交給 svc/import_bib
說明
此腳本適用於 OCLC Connexion
批次刪除館藏
腳本路徑:misc/cronjobs/delete_items.pl
做:產生一項工作排程針對館藏資料庫並刪除在指令行符合條件的館藏。
參數
–verbose發送由收集的 C <-where> 參數以及受 Standard Out 影響的館藏所生成的 「WHERE」 子句。
–where C<-where> 選項可以多次調用。以下參數必須是有效的SQL語法,該語法是語法查詢館藏表 C<WHERE> 的一部分。這些由 C<AND> 加入。
–commit 無館藏會被刪除, 除非 C<–commit> 旗標出現
範例
下列是此程式的範例:
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
快速檢查 URL
腳本路徑:misc/cronjobs/check-url-quick.pl
做: 檢查書目記錄中的網址;掃瞄所有書目記錄從856段分欄u發現的網址並且顯示
說明
此腳本用以重置 check-url.pl
參數
–host=http://default.tld 使用不含URL,即不以 『http:』 開頭的服務器主機。例如,若 –host=http://www.mylib.com,則當856$u包含 『img/image.jpg』 時,檢查的URL為:http://www.mylib.com/image.jpg。
–tags 段保留分欄u裡的網址。如果未提供,856段已檢查,許多段可以被指定,舉例:
check-url-quick.pl –tags 310 410 856
–verbose|v 兩者輸出成功以及失敗的網址
–html 輸出格式為HTML。結果可以轉成檔案,可以透過 http 取得.從這個方式,有可能直接連結至書目記錄的編輯模式。使用此參數 –host-intranet 是必需的.
–host-intranet=http://koha-pro.tld 網路伺服器連結至Koha館員介面中書目記錄的編輯頁面。
–timeout=10 抓網址的時限。預設10秒。
–maxconn=1000 同時連結 HTTP 的數目. 預設是200個連結。
檢查 URL
腳本路徑:misc/cronjobs/check-url.pl
做:檢查 856$u 欄位裡的 URL。腳本的輸出是 CSV 或 HTML 格式。HTML 版本直接連結至 MARC 書目記錄編輯器。
建議頻率:每月
詳情見:http://wiki.koha-community.org/wiki/Check-url_enhancements
經由紀錄標示刪除紀錄
腳本路徑:misc/cronjobs/delete_records_via_leader.pl
做:刪除紀錄標示第 5 碼的內容為 『d』 的 MARC 紀錄
參數
-c|–confirm 若沒有此參數,程式將無法執行
-v|–verbose Verbose 模式
-t|–test 測試模式,不會刪除記錄。測試模式不能決定記錄/館藏被刪除,它只能讓您知道程式將刪除那些記錄或館藏。
-i|–delete-items 在刪除記錄前試著刪除。 記錄連同館藏無法刪除。
更新期刊
腳本路徑:misc/cronjobs/serialsUpdate.pl
做:檢查訂閱中的期刊是否有 「遲到」 的刊期,若有,此腳本設定它為遲到,並把下一期列為期待簽收。
建議頻率:每晚
自動更新館藏
腳本路徑:misc/cronjobs/automatic_item_modification_by_age.pl
做:根據在 依年齡自動修改館藏 工具的規則更新館藏
使用到的是:依年齡自動修改館藏
建議頻率:每晚
OPAC
RSS Feeds
腳本路徑:misc/cronjobs/rss/rss.pl
做:給任何 SQL 詢問使用的 RSS XML 文件 (不是供搜尋結果 RSS feed 使用)。詳情。
建議頻率:每小時
系統管理
服務量
腳本路徑:misc/cronjobs/services_throttle.pl
做:重設 xISBN 服務量
建議頻率:每晚
清理資料庫
腳本路徑:misc/cronjobs/cleanup_database.pl
做:截切 sessions 表單、清理 zebra 序列款目、作為記錄與待處理 MARC 檔案。
請參考 http://schema.koha-community.org/ Koha 資料庫綱要
參數 - –del-exp-selfreg
從借閱者表中刪除過期的自助註冊帳戶(尚未從 『臨時』 類別升級的帳戶)。到期天數在 ref:PatronSelfRegistrationExpireTemporaryAccountsDelay 系統偏好中設置。臨時讀者類別在 ref:PatronSelfRegistrationDefaultCategory 系統偏好中設置。
–del-unv-selfreg DAYS刪除早於DAYS的借閱者修改中所有未驗證的自助註冊。
–deleted-catalog DAYS清除超過DAYS天前從表單deletebiblio,deletedbiblio_metadata, deletedbiblioitems和Deleteditems中刪除的書目記錄。
–deleted-patrons DAYS清除超過DAYS天前從Deletedborrowers表單中刪除的讀者。
–fees DAYS清除帳戶列表中早於DAYS天的項目,其中,未付清金額是0或NULL。對於–fees,DAYS必須大於或等於1。
-h|–help 取得協助資訊
–import DAYS從早於DAYS天的匯入表中清除項目。這包含 import_batches, import_biblios, import_items, import_record_matches 和 import_records。在import_batches中,使用–z3950參數刪除了Z39.50搜尋結果的批次。如果未指定天數,則預設為60天。
- --list-invites
日數
從 virtualshelfshares 表中消除 (未接受的) 早於 DAYS 天數的共享邀請。若未指明則預設天數為 14 天。
–logs DAYS 從 action_logs 表中清除早於 DAYS 天的項目。若未指定天數則預設為180天。
-m|–mail DAYS 從 message_queue 表中清除早於 DAYS 天的項目。若未指定天數則預設為30天。
–merged 從 Need_merge_authorities 表中清除已完成的項目。
–oauth-tokens 刪除過期的 OAuth2 tokens
–old-issues DAYS 從 old_issues 表清除超過 DAYS 天前的借出還入。
–old-reserves DAYS 清除從 old_reserves 表中 DAYS 天以上的預約。
–restrictions DAYS 清除了 clienter_debarments 表中已過期 DAYS 天以上的讀者限制。若未指定天數則預設為30天。
–all-restrictions 從 borower_debarments 表中清除所有過期的讀者限制。
–searchhistory DAYS 從 DAYS 天之前的 search_history 表中清除項目。若未指定天數則默認為30天
–sessions 清除作業列表。如果在使用者登錄 Koha 時使用此功能,則必須重新連接。
–sessdays DAYS 僅清除早於 DAYS 天前的作業。
–statistics DAYS 從統計表中清除已存在 DAYS 天以上的項目。
–temp-uploads 從上傳文件列表中刪除比系統偏好 :ref:`UploadPurgeTemporaryFilesDays`指定天數還早的臨時上傳。
–temp-uploads-days DAYS 覆蓋 UploadPurgeTemporaryFilesDays 系統偏好值。
–transfers DAYS 從 branchtransfers 表中清除已完成超過 DAYS 天的轉移。
–unique-holidays DAYS 從 special_holidays 表中刪除所有早於 DAYS 的單獨假日
–uploads-missing FLAG 當 FLAG 為 true 時,刪除遺失文件的上傳記錄,否則會計數
-v|–verbose verbose 模式
–zebraqueue DAYS 清除早於 DAYS 天的已完成 zebraqueue 項目。若未指定天數則預設為30天。
–z3950 從匯入表中清除記錄,這些記錄是 Z39.50 搜尋的結果。要清除所有其他匯入訊息,參見上面的 –import 參數。
採訪
清除舊的建議
腳本路徑:misc/cronjobs/purge_suggestions.pl
做:從建議管理區塊移除舊的 (由您定義) 建議。
說明
系統偏好 PurgeSuggestionsOlderThan 設定在腳本使用的日數
將建議以電郵送入程序
腳本路徑:misc/cronjobs/notice_unprocessed_suggestions.pl
做:將待處理的採訪建議告知基金擁有者
EDI 訊息處理
腳本路徑:misc/cronjobs/edi_cron.pl
做:送出與接收 EDI 訊息
頻率:每 15 分鐘
移除暫存 EDI 檔案
腳本路徑:misc/cronjobs/remove_temporary_edifiles.pl
做:移除 5 天前的暫存 EDI 檔案
報表
執行報表
腳本路徑:misc/cronjobs/runreport.pl
做:執行已經儲存的報表
參數
-v|–verbose Verbose 輸出
–format=s 選擇格式。選擇文字, html, csv或tsv
-e|–email 無論使用或不使用電子郵件 (implied by –to 或 –from)
-a|–attachment 附加報告檔案。無法使用html格式
–username 使用者名稱透過 SMTP 伺服器認證
–password 密碼透過 SMTP 伺服器認證
–method 身份驗證的類型。就是登錄, DIGEST-MD5, 等
–to=s 電子郵件地址送報告至
–from=s 電子郵件地址送報告來自
–subject=s 電子郵件的主旨
–store-results 儲存報告結果
–csv-header 在csv的第一列加入欄位名稱
參數
reportID 報表 ID 的 save_sql.id 編號,可以指定多個ID
挪威讀者資料庫
NL 同步於 Koha
腳本路徑:misc/cronjobs/nl-sync-to-koha.pl
做:同步挪威讀者資料庫 (NL) 於 Koha
說明 回應 NorwegianPatronDBUsername 與 NorwegianPatronDBPassword 系統偏好
NL 同步自 Koha
腳本路徑:misc/cronjobs/nl-sync-from-koha.pl
做:同步 Koha 的讀者至挪威全國讀者資料庫 (NL)
說明 回應 NorwegianPatronDBUsername 與 NorwegianPatronDBPassword 系統偏好
守護行程
守護行程會持續運作以幫忙輔助 Koha 操作的工作。 您的數據庫和Web服務器將作為守護形成運作。較新版本的Koha啟動兩個不同的守護形程:
zebra - 此為索引伺服器
koha-indexer - 此守護行程使用新的和修改的數據(書目和權威)更新索引伺服器
這些守護行程由腳本 /etc/init.d/koha-common 啟動。
Zebra indexer daemon
腳本路徑:/usr/sbin/koha-indexer(從 /etc/init.d/koha-common 調用)
koha-indexer 腳本以守護行程模式調用 rebuild_zebra.pl。此模式下,腳本將連續運作並每30秒檢查數據庫中是否有新數據或修改過的數據。 然後將新記錄或修改後的記錄發送到Zebra 進行索引,這只需一秒鐘左右。與 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
社會資料
取得社會資料報表
腳本路徑:misc/cronjobs/social_data/get_report_social_data.pl
做:從 Babelthèque 下載資料加入 OPAC 紀錄
建議頻率:每晚
更新社會資料
腳本路徑:misc/cronjobs/social_data/update_social_data.pl
做:以 Babelthèque 資料更新 OPAC 紀錄