stty: 'standard input': Inappropriate ioctl for device

巡检时发现一个cron作业在跑shell脚本时,shell脚本的日志文件中会有下面这个信息: stty: 'standard input': Inappropriate ioctl for device

stty: 'standard input': Inappropriate ioctl for device
[info ]: 20250319 13:45:01> ----------------- the monitor_alert_log.sh start ------------------
[info ]: 20250319 13:45:01> ----------------- the monitor_alert_log.sh start ------------------
[info ]: 20250319 13:45:01> there is no new error logs and warning logs are generated
[info ]: 20250319 13:45:01> there is no new error logs and warning logs are generated
[info ]: 20250319 13:45:01> ----------------- the monitor_alert_log.sh stoped -----------------
[info ]: 20250319 13:45:01> ----------------- the monitor_alert_log.sh stoped -----------------

有点奇怪,这个脚本经过不停的打磨完善,我对它可以说熟悉得不能再熟悉了,不应该报这样一个"诡异"的告警,带着疑惑跟踪脚本发现,问题在于脚本中会执行下面环境变量文件。

if [ -f ~/.bash_profile ];
then
  . ~/.bash_profile
  # source ~/.bash_profile
fi

而.bash_profile中设置了stty。如下所示:

$ grep stty ~/.bash_profile
stty erase ^H

这个是同事设置的,设置原因:设置后可以在sqlplus中使用backspace键删除错误输入,否则只能使用ctrl+backspace删除错误输入。其实网上已经有人遇到并总结过这个案例。注释掉上面这个设置后,shell脚本运行就不会有这个告警(信息)输出了。

posted on 2025-11-13 09:18  小陶coding  阅读(6)  评论(0)    收藏  举报