在shell中启动后台执行程序,然后退出shell会引发 IOError [Errno 5] Input/output error

本文介绍了在长期运行的服务器中使用Shell脚本时遇到的一个常见问题:如何正确处理标准输出和错误输出。通过简单的重定向操作即可解决该问题。

详见:

http://www.iteye.com/topic/1114469

http://hi.baidu.com/dalier/item/a6723a0db60b73e2f55ba6fa


补充:

        今天我也第一次遇到这个问题,还以为是阿里云的BUG,原来shell还有这个毛病,估计职业搞网管的同学比较清楚。

        长期运行的服务器,输出需要专门处理,不能用print



补充2:

       解决方法很简单,把标准输出和标准错误输出都重定向出去就可以了

      ./some_app 1>normal 2>fatal

      即可。

[###info####] [2025-09-12 18:40:31] [adb -s 4LIFCQSW59BULNCU wait-for-device shell root] adb has running as root [###info####] [2025-09-12 18:40:32] [adb -s 4LIFCQSW59BULNCU wait-for-device shell] [WARNING]******ADB NOT USE USER PASSWD****** sh-3.2# Traceback (most recent call last): File "/home/pi/.local/lib/python3.11/site-packages/serial/serialposix.py", line 265, in open self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ OSError: [Errno 5] Input/output error: '/dev/ttyUSB_main_controller' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/pi/project/autorobot/libs/../pyscript/MT2735/FUNC/PM/MT2735_FUNC_PM_WAKEUP_WAKEUP_IN_TEST.py", line 113, in main gpio.__enter__() File "/home/pi/project/autorobot/libs/relays_client.py", line 34, in __enter__ self.ser = serial.Serial(self.port, self.bps, timeout=self.timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/pi/.local/lib/python3.11/site-packages/serial/serialutil.py", line 240, in __init__ self.open() File "/home/pi/.local/lib/python3.11/site-packages/serial/serialposix.py", line 268, in open raise SerialException(msg.errno, "could not open port {}: {}".format(self._port, msg)) serial.serialutil.SerialException: [Errno 5] could not open port /dev/ttyUSB_main_controller: [Errno 5] Input/output error: '/dev/ttyUSB_main_controller' Traceback (most recent call last): File "/home/pi/project/autorobot/libs/../pyscript/MT2735/FUNC/PM/MT2735_FUNC_PM_WAKEUP_WAKEUP_IN_TEST.py", line 178, in <module> my_script.main() File "/home/pi/project/autorobot/libs/../pyscript/MT2735/FUNC/PM/MT2735_FUNC_PM_WAKEUP_WAKEUP_IN_TEST.py", line 169, in main gpio.set_usb_line_connect() File "/home/pi/project/autorobot/libs/relays_client.py", line 76, in set_usb_line_connect self.close_serial(n=1) File "/home/pi/project/autorobot/libs/relays_client.py", line 66, in close_serial self.ser.write(order) ^^^^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'write' [###info####] [2025-09-12 18:40:36] [devices_type:---AN758CNJKDL---] [###fail####] [2025-09-12 18:40:39] [test case run fail] [###info####] [2025-09-12 18:40:39] [SET USB CONNECT] [###info####] [2025-09-12 18:40:39] [close serial 1] 遇到异常了,异常信息为: <class 'AttributeError'> 'NoneType' object has no attribute 'write' <traceback object at 0x7fab196980> [###pass####] [2025-09-12 18:40:39] [test case run success] [###error###] [2025-09-12 18:40:39] [('/home/pi/project/autorobot/libs/../pyscript/MT2735/FUNC/PM/MT2735_FUNC_PM_WAKEUP_WAKEUP_IN_TEST.py', 183)] [An error occurred: 'NoneType' object has no attribute 'write'] [###fail####] [2025-09-12 18:40:39] [test case run fail] 请帮我分析一下这个测试脚本执行失败的原因
最新发布
09-18
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值