Ubuntu安装ClamAv杀毒软件,并配置扫描完成关机

AI大语言模型

安装ClamAv:

sudo apt install clamav clamav-daemon

更新病毒库:

sudo systemctl stop clamav-freshclam
sudo freshclam
sudo systemctl enable clamav-freshclam --now

启动守护进程:

sudo systemctl enable --now clamav-daemon

配置文件路径:

/etc/clamav/clamd.conf

默认日志文件路径:

/var/log/clamav/clamav.log

开启实时防护

实时防护会占用一定系统资源,可以根据需求决定是否要开启。

编辑配置文件:

sudo nano /etc/clamav/clamd.conf

粘贴以下内容:

# 实时扫描的最大文件大小(默认已配置)
OnAccessMaxFileSize 5M

# 监控的目录(可多个)
OnAccessIncludePath /home/username/下载

# 是否阻止访问恶意文件
OnAccessPrevention yes

# 排除 clamd 用户自身(防止误报)
OnAccessExcludeUname clamav

启动 clamonacc实时防护程序:

sudo clamonacc

ClamAv的使用

检查文件:

clamscan /path/file

扫描目录:

clamscan -r /path

以上命令会在终端显示扫描过程和扫描摘要:

———– SCAN SUMMARY ———– Known viruses: 3627748 Engine version: 1.4.3 Scanned directories: 1 Scanned files: 6 Infected files: 0 Data scanned: 3.35 MB Data read: 446.55 MB (ratio 0.01:1) Time: 23.444 sec (0 m 23 s) Start Date: 2026:03:31 12:21:41 End Date: 2026:03:31 12:22:05

只显示感染的文件:

clamscan -r /path --infected

不显示OK的检查项:

clamscan -r /path --suppress-ok-results 

静默扫描,仅输出错误信息:

clamscan -r /path --quiet

将扫描结果保存到日志文件(不记录OK的文件):

clamscan -r /path --log scan_results.log

超过100M的文件不检查:

clamscan -r /path --max-filesize=100M

只扫描大于100M的文件:

find /path -type f -size +100M -exec clamscan {} +

隔离被感染文件

首先创建隔离目录:

sudo mkdir /infected
sudo chown -R clamav:clamav /infected
sudo chmod 750 /infected

加上move标志扫描:

clamscan -r /path --move=/infected

限制ClamAV的CPU使用率

ClamAV扫描会占用较多系统资源(CPU 和 I/O),在扫描大型目录时可能导致系统卡顿。使用 nice 命令可以降低扫描进程的优先级,减少对系统的影响:

nice -n 15 clamscan -r /path
范围说明
-20最高优先级,CPU 空闲时优先执行,扫描最快
0默认优先级
19最低优先级,CPU 繁忙时会让行,扫描最慢

排除目录

Ubuntu中虚拟文件系统、系统关键目录可以不扫描:

clamscan -r / \
	--exclude-dir="^/proc/|^/sys/|^/dev/|^/run/|^/mnt/|^/media/|^/var/log/|^/var/lib/docker/"

可以将排除规则写入配置文件:

ExcludePath ^/proc/
ExcludePath ^/sys/
ExcludePath ^/dev/
ExcludePath ^/run/
ExcludePath ^/mnt/
ExcludePath ^/media/
ExcludePath ^/var/log/
ExcludePath ^/var/lib/docker/

配置扫描完成关机脚本

创建脚本:

sudo gedit /usr/local/bin/clamav-scan

粘贴以下内容:

#!/bin/bash

SCAN_DIR="${1:-/}"
LOG_PATH="$HOME/scan-results.log"

read -p "是否在扫描完成后自动关机? [y/N]: " want_shutdown

echo "[$(date)] 开始扫描目录: $SCAN_DIR" | tee "$LOG_PATH"

clamscan -r "$SCAN_DIR" \
	--infected \
    --max-filesize=100M \
    --exclude-dir="^/proc/|^/sys/|^/dev/|^/run/|^/mnt/|^/media/|^/var/log/|^/var/lib/docker/" \
    --log "$LOG_PATH"

if grep -q "Infected files: 0" "$LOG_PATH"; then
    echo "[$(date)] 扫描完成,无感染文件。" | tee -a "$LOG_PATH"
else
    echo "[$(date)] 发现感染文件! | tee -a "$LOG_PATH"
fi

if [[ "$want_shutdown" =~ ^[Yy]$ ]]; then
    echo "系统将在1分钟后关机..."
    shutdown -h +1
fi

配置参数:

  • SCAN_DIR:扫描路径,支持命令参数指定;
  • LOG_PATH:日志保存路径,默认:用户目录/scan-results.log。

添加可执行权限:

sudo chmod +x /usr/local/bin/clamav-scan

扫描整个硬盘:

clamav-scan

扫描指定路径:

clamav-scan /path
AI大语言模型