Linux 在 Shell 中启动程序出现 [Errno 5] Input/output error 错误解决方案

过程描述

刚不久用 Tornado 写了一个项目,本打算部署在 Nginx 上,但是因为公司的一些原因就没有使用 Nginx,直接在命令行中启动

当我从命令行以后台的方式启动以后,是可以正常访问的

python start.py &

但是,当我关闭远程 ssh 连接后,程序就出问题了,程序没有任何反应,但是进程却好好的待在进程池中等待 CPU 的召唤。通过 try 捕获到了异常 [Errno 5] Input/output error

后经过排查找到了问题,这是因为我在程序中有 print 语句,当我把远程 ssh 退出后,就相当于把它的 shell 关闭了,没有了 shell 的进程 print 就没有地方输出字符,不能“写”到屏幕上了,所以就会报一个 I/O 错误

解决方案
  1. 不使用命令行的方式启动,将程序放入 crontab 中定时启动

  2. 注释或删除程序中有 print 语句的地方

  3. 使用 nohup 运行命令,可以使命令永久的执行下去,和用户终端没有关系,断开SSH连接都不会影响程序的运行

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值