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

进入sqlplus/dgmgrl命令行后无法暂停bash脚本关闭的问题求助

问题根因
  • 你将$SHELL写在了dgmgrl的专属输入块(<< END 和 END 包裹的内容)中,这部分内容会全部传给dgmgrl进程解析,dgmgrl无法识别shell命令,执行到块内的exit指令就会直接退出dgmgrl程序,后续shell层逻辑不会生效,ssh会话直接终止导致窗口关闭。
  • 脚本首行存在笔误,entdexport应为export。
  • 调用putty时没有分配交互式伪终端,即便后续启动shell也无法正常进入交互状态,窗口仍会自动关闭。
修复方案

1. 修改putty调用命令,添加-t参数

强制分配伪终端支持交互式操作:

putty.exe -ssh servername -t -l username -pw password -m C:/automation/dgmgrl.sh

注:你原路径中的auotomation是拼写错误,建议修正为automation避免找不到文件

2. 修正dgmgrl.sh脚本内容

将$SHELL移到dgmgrl输入块外,调整后完整代码如下:

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/12.1.0/NonValidated
export ORACLE_HOSTNAME=servername
export ORACLE_SID=ERIPRD
export PATH=/u01/app/oracle/product/12.1.0/NonValidated/bin:/usr/sbin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/oracle/bin

# 执行dgmgrl命令
dgmgrl -echo << END
connect /;
show configuration;
show database ERIPRD;
exit;
END

# 命令执行完成后停留在shell交互界面,窗口不会自动关闭
$SHELL

可选配置

如果不需要后续交互,仅需要保留窗口查看执行结果,可以把末尾的$SHELL替换为以下内容,按下任意键后窗口才会关闭:

read -n 1 -p "执行完成,按任意键关闭窗口..."

如果需要留存执行日志,直接在dgmgrl命令行末尾加重定向即可:

dgmgrl -echo << END >> /var/log/dgmgrl_run.log 2>&1
connect /;
show configuration;
show database ERIPRD;
exit;
END

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:45:03