将输出附加到 nohup.out 时预计脚本会冻结

问题描述 投票:0回答:1

这是我第一次做expect脚本。 原则上这是一个简单的脚本

#!/usr/bin/expect

set timeout 200

spawn XXX/bin/PROGRAM

expect "Choose an option ..."
send "1\r"

...

该程序有几个选项,我用它们制作了4个类似的脚本,没有出现问题,此外,在出现问题的选项中,我也导航了一系列子菜单,没有出现问题。

当我生成的程序抛出消息时,问题出现在某个时刻:

nohup: appending output to 'nohup.out'

问题总是发生在程序杀死多个进程的期望发送块中。

当我直接从命令行运行程序时,我没有遇到这个问题,所以我知道问题与spawn创建的进程的输出方向有关,我尝试了几种方法来解决这个问题,但都没有成功.

如何使由expect脚本创建的进程与我的终端中的行为方式相同,并避免重定向到nohup?

非常感谢。

bash unix expect
1个回答
0
投票

我设法找到解决方案并回答自己。

错误确实出现在脚本为程序创建的过程中,因为正如我所说,它的行为不同(有人评论说这也是发生的情况)。

为了解决这个问题,我只是生成了一个终端,然后从终端启动了程序,所以行为是相同的。

#!/usr/bin/expect

set timeout 200

spawn $env(SHELL)
match_max 100000

send -- "XXX/bin/PROGRAM\r"

expect "Choose an option ..."
send "1\r"

...

如果您遇到类似问题,希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.