我正在 Azure 上运行 CentOS freash,并通过运行以下命令在其上安装了 ClamAV:
yum install -y epel-release
yum install -y clamav
安装后,我运行以下命令来更新各种数据库:freshclam
我得到以下输出(输出的最后部分):
Time: 0.1s, ETA: 0.0s [=============================>] 657.84KiB/657.84KiB
Downloading database patch # 25864...
Time: 0.2s, ETA: 0.0s [=============================>] 992.77KiB/992.77KiB
Downloading database patch # 25865...
Time: 0.1s, ETA: 0.0s [=============================>] 903.99KiB/903.99KiB
Testing database: '/var/lib/clamav/tmp.628c5/clamav-a8e48a60b669aa6a0211c18d734f61be.tmp-daily.cld' ...
ERROR: Database load killed by signal 9
ERROR: Database test FAILED.
ERROR: Unexpected error when attempting to update database: daily
WARNING: fc_update_databases: fc_update_database failed: Test failed (8)
ERROR: Database update process failed: Test failed (8)
ERROR: Update failed.
我觉得很奇怪,没有其他人使用该发行版遇到相同的问题,因为我没有任何超级具体的步骤,只是按照页面中的步骤进行操作。希望有人能够帮助我...
答案1
我的环境中有类似的操作系统,我通过运行以下命令使一切正常工作:
yum install -y -q epel-release
yum install -y -q clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd
setsebool -P antivirus_can_scan_system 1
sed -i -e "s/^Example/#Example/" /etc/clamd.d/scan.conf
sed -i -e "s/^Example/#Example/" /etc/freshclam.conf
sed -i 's/^#LocalSocket \/run\/clamd.scan\/clamd.soc/LocalSocket \/run\/clamd.scan\/clamd.soc/' /etc/clamd.d/scan.conf
freshclam
systemctl enable clamav-freshclam.service
systemctl start clamav-freshclam.service
systemctl enable clamd@scan
systemctl start clamd@scan
注意:如果freshclam
仍然无法更新数据库,可能是您的主机没有足够的内存(尝试使用至少 1.5GB 的内存)
答案2
从威联通:
...“错误:数据库加载被信号 9 终止”或“错误:无法加载新数据库”,这是由 NAS 中的内存规格引起的,该内存不够大,无法提取不断增长的杀毒软件大小现在的定义。
我不确定 NAS 如何应用于不同的 Linux 发行版和安装,但这个问题来自于可用 RAM 不足。
这个 GitHub 线程也描述了相同的基本问题:
建议:在发行说明中添加注释,大致如下:
“对于想要使用
clamav
防病毒软件并使用该命令更新病毒定义数据的用户freshclam
(大多数人都会这样做),为了使防病毒更新正常工作而不会出现错误/失败,您需要的最低系统 RAM 为 512MB (Ubuntu 16.04)和 2GB (CentOS 8),具体取决于 Linux 发行版以及您启用的其他服务,ClamAV 使用大量 RAM。”
我使用过systemctl stop
服务器安装后安装的大多数服务,例如 Apache、MySQL、Postfix 等。
您可以通过以下方式获取服务列表:
systemctl list-units --type=service --state=active
然后,假设nginx
, httpd
, named
, mariadb
, postfix
,dovecot
类似:
systemctl stop nginx httpd named mariadb postfix dovecot
freshclam; wait
systemctl stop nginx httpd named mariadb postfix dovecot
尝试一下,看看是否有效。如今,ClamAV 可能需要大量 RAM,但这可能仍然不够。