我搜索了好多地方,但目前还没有找到可行的解决方案。我有一个正在进行的扫描,我以为它会在某个时间完成,但不幸的是它还没有完成。所以我想知道是否有办法检查这个正在进行的扫描进度。
答案1
据我所知,这是不可能的——你可以将所有扫描的文件打印到控制台,或者只打印受感染的文件。最后,ClamAV 将打印一份摘要。我还没有找到获取任何持续统计数据的方法。
我能想到的唯一破解它的方法是:
- 首先,递归计算 ClamAV 将扫描的目录中的所有文件数量,然后将该数字存储在变量中。
- 运行包含脚本的 ClamAV,计算输出的行数,并将其与步骤 1 中的计数进行比较。
我曾经尝试过快速完成此操作,但无法使其对我设置的 Jenkins 自动化作业运行良好……所以我最终放弃了。抱歉 :(
答案2
这是一个旧的、已回答过的帖子,但我想尝试一下 geerlingguy 的想法(我是他的粉丝:-)),以防其他人最终来到这里提供一个编码的解决方案。
如果你想扫描文件夹富例如,你可以使用以下命令开始扫描:
clamscan -r foo | tee /tmp/scan.log
或者
clamscan -r foo > /tmp/scan.log
然后,您可以使用正在扫描的文件夹和日志文件的参数运行以下脚本,在此示例中
status.sh foo /tmp/scan.log
其中status.sh文件的内容为:
#!/bin/bash
folder=$1
log=$2
numFiles=`find $folder -type f | wc -l`
echo $numFiles files to be processed
numProcessed=`wc -l $log | awk '{print $1'}`
percent=`echo "scale=2;$numProcessed*100./$numFiles." | bc`
echo $percent percent complete.
如果需要的话,可以将扫描的运行和状态检查合并到单个脚本中。
答案3
虽然这是一个老话题,但我仍然想分享我的解决方案管道查看器(pv)此处:
dir="./Downloads"; clamscan --recursive $dir | pv --line-mode -s $(find "$dir" -type f | wc -l) > /dev/null
答案4
我使用-i
clamscan 的选项(仅打印受感染的文件),因此只有在发现受感染的文件时才会获得输出。
要检查 clamscan 当前正在处理哪个文件,您可以使用:
lsof -a -d 0-999 -c clamscan /