gpt4 book ai didi

linux - 如何在 Linux 环境下的 Tcl 中根据文件存在检查终止应用程序

转载 作者:太空宇宙 更新时间:2023-11-04 04:02:25 30 4
gpt4 key购买 nike

我运行 T-Plan 机器人,它连接到我的 Windows 计算机并执行一些脚本。成功执行脚本后,我通过 pscp 将生成的 xml 文件导出到我的 Linux 机器。

T-paln 机器人充当第 3 方免费软件,通过 Windows 计算机上的 cmd 传递一些命令。这是通过在 t-plan 机器人上运行一个简单的批处理文件来实现的。但是,向 Windows 发送命令的脚本会根据一些明确声明的超时秒数自行断开连接。

我想编写一个 tcl 代码,在 Linux 计算机上启动此应用程序,一旦命令生成了 xml 文件形式的成功结果并在 Linux 计算机上接收到,它应该检查指定目录中是否存在 xml 文件并立即终止应用程序。我想要这样做,因为下一个代码部分将解析收到的 xml 报告并执行其他操作。

我认为 tcl 中应该有一些类可以杀死任何环境下的进程/服务,这里我需要在 Linux 中执行该操作。

真诚等待回复。提前致谢

最佳答案

要终止同一台 Linux 计算机上的进程,只要您有这样做的权限(即,您以同一用户身份运行),您可以执行以下任一操作:

package require Tclx
kill $processId

或者:

exec kill $processId

(前者不需要外部命令 - 它直接执行系统调用 - 但第二个不需要 Tclx pacakge。)

这两者都需要进程 ID

要测试文件是否存在,请使用文件存在,如下所示:

if {[file exists $theFilename]} {
puts "Woohoo! $theFilename is there!"
}
<小时/>

要杀死远程计算机上的某些内容,您需要向该计算机发送运行命令。也许像:

exec ssh $remoteMachine kill $remotePID

获取$remotePID可能会“有趣”,并且可能需要在整个系统设计中进行一些深思熟虑。如果从 Windows 调用到 Linux,请将 ssh 替换为 plink。如果走另一条路,你正在谈论做:

exec ssh $remoteMachine taskkill /PID $remotePID

这可能会变得非常复杂,我不确定您现在采取的方法是否正确。

关于linux - 如何在 Linux 环境下的 Tcl 中根据文件存在检查终止应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22532611/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com