我已经安装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
答案1
简短回答:
您不必手动运行它,因为它已经自动运行并在后台运行,这就是您收到该消息的原因。
如果要停止守护进程并手动运行它:
sudo systemctl stop clamav-freshclam.service
手动运行:
sudo freshclam
发生了什么事以及如何处理?
每次当你遇到类似的情况时,类似的错误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
停止守护进程。
答案2
sudo /etc/init.d/clamav-freshclam stop
sudo freshclam
sudo /etc/init.d/clamav-freshclam start
答案3
这可能是另一种选择......
sudo service clamav-freshclam stop
sudo freshclam
sudo service clamav-freshclam start
希望这可以帮助...
答案4
只需测试 freshclam 的状态即可
sudo service clamav-freshclam status
如果运行正常(应该显示active, (running)
),你不需要做任何事情