如何安全地清除 Zimbra 稽核日誌以釋放磁碟空間
了解如何識別、歸檔、壓縮和刪除舊的 Zimbra 稽核日誌,何時避免截斷 audit.log,以及如何驗證磁碟空間和日誌記錄是否正確復原。
您打開 ownCloud 的管理頁面,發現後台任務最近沒有運行,或者清理、活動、外部儲存和其他排隊任務似乎都延遲了。常見的做法是編輯cron.php或新增新的 crontab 條目。但根據目前的 ownCloud 伺服器文檔,這並非最佳方案:ownCloud 建議使用 Cron 後台模式和相關occ system:cron命令。在 Linux 主機上,可以使用 systemd 定時器來取代傳統的 crontab 進行調度。
本指南重點介紹 ownCloud 的軟體包安裝或裸機安裝方式,其中 ownCloud 位於類似 `/usr/local/bin` 這樣的路徑下。如果您使用 ownCloud 的官方 Docker 映像,請在建立主機計時器之前停止操作:ownCloud 文件指出,該映像已在內部配置了 cron,並由 `--cron-timer` 和 `--cron- timer` 等/var/www/owncloud變數控制。請參閱最新的ownCloud 後台作業文件。OWNCLOUD_CROND_ENABLEDOWNCLOUD_CROND_SCHEDULE
occ system:cron了執行已排隊後台作業的命令。操作:在計時器將使用的相同帳戶下手動執行 ownCloud 命令之前,請勿建立計時器。
對於典型的 Apache/Debian 式安裝,web 使用者是www-data。如果您的環境不同,請替換使用者和路徑。
sudo -u www-data /var/www/owncloud/occ background:cron
sudo -u www-data /var/www/owncloud/occ system:cron
第一條指令選擇 ownCloud 的 Cron 後台作業模式。第二條指令實際執行已排隊的後台作業。 ownCloud 的occ 命令文件指出,該命令system:cron旨在用於定時執行,並且在非互動式調度器中不應啟用進度輸出。
常見誤解: “ownCloud 中的 Cron 模式”並不意味著您必須使用cron特定的守護程式。它指的是 ownCloud 需要一個外部調度器來呼叫其後台作業運行器。 systemd 定時器就可以當作此調度器。
操作:如果手動命令失敗,請先修復該錯誤。定時器只會按計畫重複執行相同的錯誤操作。
有些安裝方式可以occ直接產生可執行檔;而有些安裝方式則更適合透過 PHP 命令列介面 (CLI) 二進位檔案呼叫。請確認這兩種方式:
command -v php
readlink -f /var/www/owncloud/occ
sudo -u www-data /usr/bin/php -f /var/www/owncloud/occ system:cron
ownCloud 的文檔明確指出,排程任務需要找到 PHP,因此在 cron 範例中顯示了完整路徑。這點在 systemd 下同樣重要,因為服務接收的是受控環境,而不是互動式 shell 環境。
操作:/usr/bin/php將其餘範例中的、/var/www/owncloud、 和替換www-data為您的主機上有效的值。
創造/etc/systemd/system/owncloud-cron.service:
[Unit]
Description=Run ownCloud background jobs
After=network.target
[Service]
Type=oneshot
User=www-data
Group=www-data
WorkingDirectory=/var/www/owncloud
ExecStart=/usr/bin/php -f /var/www/owncloud/occ system:cron
通常情況下,您不需要[Install]為該服務單獨設定一個配置部分,因為定時器會自動啟動它。將服務保持為預設狀態Type=oneshot也便於理解其生命週期:它啟動、執行一次命令、退出,然後再次變成非活動狀態。
常見誤解:不活動的一次性服務不會自動失效。成功運行後,沒有其他活動的一次性服務RemainAfterExit=yes通常會變成不活動狀態。
行動:根據退出程式碼和日誌判斷成功,而不是期望該服務一直「運行」。
創造/etc/systemd/system/owncloud-cron.timer:
[Unit]
Description=Run ownCloud background jobs every 15 minutes
[Timer]
OnCalendar=*:0/15
Persistent=true
Unit=owncloud-cron.service
[Install]
WantedBy=timers.target
ownCloud 的 host-cron 文件建議使用 15 分鐘的計時任務。上面的定時器就是按照這個頻率運作的。Persistent=true使用定時器很有用OnCalendar,因為 systemd 可以在機器恢復可用後觸發錯過的日曆啟動。具體行為仍然取決於 systemd 版本和機器宕機的時長。
操作說明:如果您確實需要不同的執行間隔,請手動更改,而不是從其他伺服器複製值。更頻繁的執行可能會增加後台負載;更不頻繁的執行可能會延遲已排隊的任務。
sudo systemctl daemon-reload
sudo systemctl enable --now owncloud-cron.timer
sudo systemctl status owncloud-cron.timer
daemon-reload使 systemd 重新讀取單元檔案。enable --now兩者都會啟用未來啟動時的定時器,並立即啟動它。
active (waiting)並標識它將觸發的服務。操作:如果計時器未激活,請systemctl status owncloud-cron.timer在再次變更 ownCloud 配置之前進行檢查。
systemctl list-timers owncloud-cron.timer
systemctl list-timers --all | grep owncloud-cron
list-timers這是確認 systemd 是否已安排下次啟動以及查看計時器上次觸發時間的最快方法。這可以區分「計時器從未運行」和「計時器運行但 ownCloud 服務內部失敗」。
操作:如果缺少 NEXT 或未列出計時器,請重新檢查計時器檔案名稱、[Install]部分以及該單元是否已啟用。
除非您特意將其重定向到其他位置,否則 systemd 會將服務輸出記錄在日誌中。官方的journalctl 文件介紹如何按 systemd 單元過濾日誌條目。
sudo journalctl -u owncloud-cron.service --since today
sudo journalctl -u owncloud-cron.service -n 100 --no-pager
常見誤解: “定時器已激活,所以 ownCloud cron 就能正常工作。” 定時器激活僅證明調度器正在等待觸發。您仍然需要成功呼叫服務。
操作:尋找 PHP 錯誤、權限被拒絕訊息、檔案缺失、資料庫錯誤或非零退出狀態。修復第一個具體錯誤,而不是反覆重啟計時器。
你無需等待15分鐘才能進行最終測試:
sudo systemctl start owncloud-cron.service
sudo systemctl status owncloud-cron.service
sudo -u www-data /usr/bin/php -f /var/www/owncloud/occ status
單次運行成功後,systemctl status可以合法地將服務報告為非活動狀態,同時顯示相關資訊status=0/SUCCESS。重要的是,該命令已成功完成。
操作:手動服務測試成功後,至少等待一次計劃的定時器激活,並確認無需人工幹預即可出現新的日誌條目。
| 觀察到的症狀 | 它證明了什麼 | 下一步行動 |
|---|---|---|
occ system:cron手動失敗 | 問題出在調度層以下。 | 首先修復 PHP、權限、ownCloud 配置、資料庫或應用程式錯誤。 |
| 手動命令有效,但服務失敗 | 你的 systemd 執行環境與 shell 不同。 | 檢查完整路徑和日誌User=。WorkingDirectory= |
| 服務手動運行,定時器沒有下次運行時間 | 服務有效;但預約無效 | 檢查定時器語法,重新載入 systemd,然後啟用並啟動計時器。 |
| 定時器有下次/上次執行時間,但 ownCloud 任務仍然延遲。 | 計時器正在觸發 | 檢查服務日誌和應用程式層級作業,而不是建立另一個排程器。 |
| 官方 Docker 映像 | 主機 systemd 可能不是正確的層。 | 使用 ownCloud 文件中記錄的鏡像內建 cron 配置。 |
舊版 ownCloud 指令通常會cron.php直接呼叫。目前的 ownCloud 文件建議使用 `<command>` occ system:cron,ownCloud 發行說明也解釋了為何要從這種舊的直接呼叫方式遷移過來cron.php。請參閱ownCloud Server 發行說明。
操作:如果您繼承了一個執行的舊 crontab 或 systemd 單元cron.php,請在保留它之前將其與您已安裝的 ownCloud 版本的文件進行比較。
occ system:cron命令在目標 Web 伺服器帳戶下成功執行。owncloud-cron.timer已啟用active (waiting)。systemctl list-timers經過足夠長的時間後,會顯示下一次和上一次啟動。journalctl -u owncloud-cron.service顯示計劃任務已成功執行。當所有這些檢查都通過時,您驗證的不僅僅是「計時器存在」:您已經證明 systemd 調度了作業,在正確的帳戶下呼叫了 ownCloud,並成功完成了實際的後台作業執行程式。
了解如何識別、歸檔、壓縮和刪除舊的 Zimbra 稽核日誌,何時避免截斷 audit.log,以及如何驗證磁碟空間和日誌記錄是否正確復原。
透過檢查伺服器狀態、伺服器套接字、Unix 套接字權限、遠端監聽器和受控交付測試來排查 Kopano dagent 儲存伺服器連線故障。
透過識別事務鎖、將鎖定儲存遷移到 Redis、檢查叢集並安全地重新測試來修復 ownCloud 檔案鎖定逾時錯誤。
透過檢查記憶體壓力、仔細調整快取、隔離初始同步以及監控工作進程來排查 Matrix Synapse 在 /sync 期間的 OOM 問題。
使用主金鑰模式、APCu、Redis 或 Valkey 鎖定,安全地啟用 Nextcloud 伺服器端加密,並採取可最大限度減少效能影響的穩定推廣措施。
透過檢查成員資格、權限等級、目標使用者等級和 Synapse 伺服器管理員復原選項(例如 make_room_admin)來修復 Matrix M_FORBIDDEN 房間管理員錯誤。
Zimbra 網頁信箱接受您的登入要求,但頁面顯示空白?請將瀏覽器問題與郵箱或代理故障區分開來,檢查正確的日誌,並安全地驗證復原方法。
找到 Jitsi Meet 服務卡在重新啟動狀態的問題,讀取致命日誌,並修復常見的 Docker 問題,例如缺少密碼、掛載錯誤和設定不相容等。
了解 Jitsi Meet 帳戶身份驗證與會議室密碼有何不同,配置傳統的安全性網域方法,並安全地驗證存取控制。
修正 ownCloud 後台作業未執行的問題,方法是切換到 Cron 模式並使用 systemd 定時器調度 occ system:cron,然後驗證計時器和日誌。