clamav – 错误:/var/log/clamav/freshclam.log被另一个进程锁定?

我已经安装了clamav ,我想更新它用来识别病毒的文件:

 $ sudo freshclam ERROR: /var/log/clamav/freshclam.log is locked by another process ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log). 

我该怎么办这个错误?

编辑:

 $ sudo lsof /var/log/clamav/freshclam.log COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME freshclam 866 clamav 3wW REG 259,1 100134 10486045 /var/log/clamav/freshclam.log 

简短回答:

您不必手动运行它,因为它已自动运行并在后台运行,这就是您收到该消息的原因。

如果要停止守护程序并手动运行它:

 sudo systemctl stop clamav-freshclam.service 

手动运行:

 sudo freshclam 

发生了什么以及如何处理它?

每当遇到类似情况时, file x has been locked等错误file x has been locked或者Another process is using this file : /path/to/x您可以使用lsof命令找出正在使用该文件的进程,在您的情况下如果你跑:

 sudo lsof /var/log/clamav/freshclam.log 

您应该获得如下输出:

 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME abc 126 user 3wW REG 259,1 100 1048 /var/log/clamav/freshclam.log 

abc是使用该文件的进程名称,在您的情况下是: freshclam

这意味着你想要运行的freshclam已经被clamav守护进程运行了。

您可以使用less /var/log/clamav/freshclam.log或类似的命令来查看正在发生的事情。

因此,您不必再手动运行它,它是一个避免任何冲突并让同一进程的多个实例同时执行相同操作的过程。

如果你想让它停下来并手动运行它,那么就把SIGTERM发送到它的进程,这使得进程有机会完成它的工作并干净地关闭它,例如:

 sudo pkill -15 -x freshclam 
  • 在这种情况下, sudo可能是必要的。
  • 15:SIGTERM是默认值

然后手动运行:

 sudo freshclam 

但是在这种情况下,您可以使用:

 sudo systemctl stop clamav-freshclam.service 

停止守护进程。

 sudo /etc/init.d/clamav-freshclam stop sudo freshclam sudo /etc/init.d/clamav-freshclam start 

这可能是另一种选择……

 sudo service clamav-freshclam stop sudo freshclam sudo service clamav-freshclam start 

希望这可以帮助…