You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下用Expect实现需交互进程后台自动化失败问题求助

解决Expect脚本后台运行报错“liner: function not supported in this terminal”

问题根源

  • interact命令是报错核心:这个命令的作用是把终端控制权交还给用户,让你能直接和启动的进程交互。但后台运行时没有交互式终端可用,自然会触发终端功能不支持的错误。
  • 多余的expect_background:这个命令用于处理后台进程的expect逻辑,你的场景完全不需要,留着反而会引发冲突。

修改后的脚本

#!/usr/bin/expect -f

# 启动目标进程,忽略HUP信号防止终端关闭时进程退出
spawn -ignore HUP /home/startclef.cmd

# 匹配提示并发送"ok"
expect "ok"
send "ok\r"

# 等待密码提示并发送密码
expect "Please enter the password to decrypt the master seed"
send "pass_123\r"

# 等待进程执行结束(如果需要进程持续运行,可换成`while {1} {sleep 1}`这类逻辑)
expect eof

后台运行的正确姿势

  • 直接后台启动:
    ./script.expect &
    
  • 如果希望终端关闭后进程还能继续跑,用nohup配合输出重定向:
    nohup ./script.expect > /dev/null 2>&1 &
    
    这里>/dev/null 2>&1是把所有输出都丢弃,避免生成多余的nohup.out文件。

内容的提问来源于stack exchange,提问作者Abdulhamid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 09:12:40