服务停止工作 - exec:tclsh:未找到

服务停止工作 - exec:tclsh:未找到

我在 Ubuntu 16.04 上运行 Security Onion。昨天(2019 年 6 月 9 日),一些主要服务(SGUIL、PCAP、Snort)停止工作。在每个服务的日志中,我找到以下条目:

/usr/bin/{service name}_agent.tcl:  line 3:  exec:  tclsh:  not found

我在以下日志中看到上述消息:

pcap_agent.log
snort_agent.log
squild.log

上述每个日志都引用了 /usr/bin 目录中的关联 .tcl 文件(即 pcap_agent.tcl、snort_agent.tcl 和 sguild)。每个文件的最顶部都有以下三行:

#!/bin/sh
# Run tcl from users PATH \
exec tclsh "$0" "$@"

我发现一个论坛页面建议 tcl 版本太旧,需要使用命令进行更新sudo apt-get install tcl。但是,当我运行该命令进行更新时,它显示 tcl 已经是最新版本 (8.6.0+9)。

这是我第一次接触.tcl 文件,因此我正在即时研究/学习,并且在互联网、论坛等上广泛研究了这个错误,但还没有找到任何有用的信息。

有谁能帮我吗?这影响了我们的生产机器,我需要修复它。如果需要,我可以提供日志文件等。

提前谢谢你,Jeff S。

答案1

exec tclsh片段告诉您在环境变量中的每个目录中$SHELL查找。检查您的: tclsh$PATH$PATH

echo "$PATH" | tr ":" "\n"

tclsh/usr/bin/tclsh,所以/usr/bin必须在您的 中才能$PATH找到exec tclsh它。

tclsh包装内容tcl

walt@fox:~(0)$ type -p tclsh
/usr/bin/tclsh
walt@fox:~(0)$ dpkg -S $(type -p tclsh)
tcl: /usr/bin/tclsh
walt@fox:~(0)$ dpkg -L tcl
/.
/usr
/usr/share
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/doc
/usr/share/doc/tcl
/usr/share/doc/tcl/README.Debian
/usr/share/doc/tcl/changelog.gz
/usr/share/doc/tcl/copyright
/usr/share/man
/usr/share/man/man1
/usr/bin
/usr/share/man/man1/tclsh.1.gz
/usr/bin/tclsh

您可以tcl使用以下命令重新安装该包:

sudo apt-get install --reinstall tcl

相关内容