当我运行这个脚本时,我收到一条错误消息:“排序:写入失败:标准输出:管道损坏”
如果有人可以帮助我,那就太棒了,我要为这个错误发疯了
输入文件是一个文件列表,所有文件都包含 FASTA 格式的 DNA 序列,因此每个文件都有几个序列(每个序列在一行中),格式为:in $1 (Identifier) in $2,3,4,5, 9 美元(DNA 序列)中的 6,7&8(更多值)
然后我想通过每个文件中的序列数 ($common_hits) 选择每个序列(这个数字不是固定值,但我为示例设置了 6) - 必须删除少于 6 个序列的所有文件 - 文件与6个序列可以 - 超过6个序列的文件必须减少到6个序列(这些序列由字段$ 5的较高值选择)
输出文件必须包含所有 6 个序列,并且序列(字段 $9)必须在标识符之后的行中
我现在不会删除超过 6 个序列的原始文件,因为我想确保它有效
par_list=`ls -1 *BR`
common_hits="6"
for i in ${par_list}
do
if [ "`cat ${i} | wc -l`" -lt "${common_hits}" ]
then
rm -f ${i}
elif [ "`cat ${i} | wc -l`" -gt "${common_hits}" ]
then
cat ${i} | sort -nr -k 5 | head -n ${common_hits} …
Run Code Online (Sandbox Code Playgroud) 我在铁锈中有这样的痕迹:
\n\nthread \'main\' panicked at \'failed printing to stdout: Broken pipe (os error 32)\', library/std/src/io/stdio.rs:993:9\nstack backtrace:\n 0: 0x559ffa959dc0 - std::backtrace_rs::backtrace::libunwind::trace::h72c2fb8038f1bbee\n at /rustc/7eac88abb2e57e752f3302f02be5f3ce3d7adfb4/library/std/src/../../backtrace/src/backtrace/libunwind.rs:96\n 1: 0x559ffa959dc0 - std::backtrace_rs::backtrace::trace_unsynchronized::h1e3b084883f1e78c\n at /rustc/7eac88abb2e57e752f3302f02be5f3ce3d7adfb4/library/std/src/../../backtrace/src/backtrace/mod.rs:66\n 2: 0x559ffa959dc0 - std::sys_common::backtrace::_print_fmt::h3bf6a7ebf7f0394a\n at /rustc/7eac88abb2e57e752f3302f02be5f3ce3d7adfb4/library/std/src/sys_common/backtrace.rs:79\n 3: 0x559ffa959dc0 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h2e8cb764b7fe02e7\n at /rustc/7eac88abb2e57e752f3302f02be5f3ce3d7adfb4/library/std/src/sys_common/backtrace.rs:58\n 4: 0x559ffa972f6c - core::fmt::write::h7a1184eaee6a8644\n at /rustc/7eac88abb2e57e752f3302f02be5f3ce3d7adfb4/library/core/src/fmt/mod.rs:1080\n 5: 0x559ffa957b12 - std::io::Write::write_fmt::haeeb374d93a67eac\n at /rustc/7eac88abb2e57e752f3302f02be5f3ce3d7adfb4/library/std/src/io/mod.rs:1516\n 6: 0x559ffa95beed - std::sys_common::backtrace::_print::h1d14a7f6ad632dc8\n at /rustc/7eac88abb2e57e752f3302f02be5f3ce3d7adfb4/library/std/src/sys_common/backtrace.rs:61\n 7: 0x559ffa95beed - std::sys_common::backtrace::print::h301abac8bb2e3e81\n at /rustc/7eac88abb2e57e752f3302f02be5f3ce3d7adfb4/library/std/src/sys_common/backtrace.rs:48\n 8: 0x559ffa95beed - std::panicking::default_hook::{{closure}}::hde0cb80358a6920a\n at /rustc/7eac88abb2e57e752f3302f02be5f3ce3d7adfb4/library/std/src/panicking.rs:208\n 9: 0x559ffa95bb98 - std::panicking::default_hook::h9b1a691049a0ec8f\n at /rustc/7eac88abb2e57e752f3302f02be5f3ce3d7adfb4/library/std/src/panicking.rs:227\n 10: …
Run Code Online (Sandbox Code Playgroud) 我试图在linux下使用Python来理解FIFO,我发现了一个我不理解的奇怪行为.
以下是 fifoserver.py
import sys
import time
def readline(f):
s = f.readline()
while s == "":
time.sleep(0.0001)
s = f.readline()
return s
while True:
f = open(sys.argv[1], "r")
x = float(readline(f))
g = open(sys.argv[2], "w")
g.write(str(x**2) + "\n")
g.close()
f.close()
sys.stdout.write("Processed " + repr(x) + "\n")
Run Code Online (Sandbox Code Playgroud)
这是 fifoclient.py
import sys
import time
def readline(f):
s = f.readline()
while s == "":
time.sleep(0.0001)
s = f.readline()
return s
def req(x):
f = open("input", "w")
f.write(str(x) + "\n")
f.flush()
g = open("output", …
Run Code Online (Sandbox Code Playgroud) 有时当我看到我的终端时,我看到下面的错误,任何人都可以告诉我它是否正在显示以及如何避免它?
Exception happened during processing of request from ('127.0.0.1', 39444)
Traceback (most recent call last):
File "/usr/lib/python2.7/SocketServer.py", line 582, in process_request_thread
self.finish_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 323, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/home/comp/Envs/proj/local/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 150, in __init__
super(WSGIRequestHandler, self).__init__(*args, **kwargs)
File "/usr/lib/python2.7/SocketServer.py", line 640, in __init__
self.finish()
File "/usr/lib/python2.7/SocketServer.py", line 693, in finish
self.wfile.flush()
File "/usr/lib/python2.7/socket.py", line 303, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe
Run Code Online (Sandbox Code Playgroud) 当我登录到命令行mysql时,我无法再访问任何需要数据库连接的PHP应用程序.每次都会发生这种情况 在我的localhost上导致问题的步骤:
Command line:
mysql -u root (no password for localhost)
mysql>
Run Code Online (Sandbox Code Playgroud)
我现在不执行或做任何事情.我使用root加载任何需要数据库连接的页面:
PDO::__construct(): send of 108 bytes failed with errno=32 Broken pipe
Run Code Online (Sandbox Code Playgroud)
如果我退出mysql页面会回来但是当尝试同时加载两个页面时(在浏览器选项卡中)会出现另一个问题,它会导致其中一个页面中断,直到页面加载,然后我可以刷新
My.cnf:
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
wait_timeout=5000
max_allowed_packet=100m
max_user_connections=1000
Run Code Online (Sandbox Code Playgroud) 我正在尝试将一个mysql连接传递给python中的一个线程.如果我在worker类中初始化mysql,则没有错误.
但是,连接可能代价很高,所以我尝试从调用函数传递mysql连接(参见下面的代码).但这不断抛出这个错误:
(2006年,"MySQL服务器已经消失(BrokenPipeError(32,'Broken pipe'))
知道为什么吗?我认为这是因为我们传递mysql连接的方式
def worker(db):
""" Distributes the workload for a thread
"""
while True:
item = queue_handler.get()
perform_insert(item, db)
queue_handler.task_done()
def insert_bulk(params):
""" Handles the insert
"""
cntr = 0
res = []
cannot_read = []
(data, cms, report_id) = params
db = nmi_mysql.DB(CONFIG['earnings_db'], True)
for i in range(10):
thrd = threading.Thread(target=worker, args=(db,))
thrd.deamon = True
thrd.start()
for row in data:
split_files = row.split(',')
if len(split_files) != 34:
cannot_read.append(split_files)
continue
now = datetime.datetime.now()
res.append(<some data to insert>) …
Run Code Online (Sandbox Code Playgroud) 我运行时发现 Celery Worker 与 Rabbitmq 的连接在 Gevent 模式下遇到了损坏的管道错误。当 Celery 工作线程在进程池模式下工作时没有问题(没有 gevent 没有猴子补丁)。
之后,Celery Worker 将不再从 Rabbitmq 获取任务消息,直到重新启动为止。
当 Celery 工作线程消耗任务消息的速度比 Django 应用程序生成消息的速度慢并且 Rabbitmq 中堆积了大约 3 千条消息时,这个问题总是会发生。
Gevent版本1.1.0
芹菜版本 3.1.22
======芹菜原木======
[2016-08-08 13:52:06,913: CRITICAL/MainProcess] Couldn't ack 293, reason:error(32, 'Broken pipe')
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/kombu/message.py", line 93, in ack_log_error
self.ack()
File "/usr/local/lib/python2.7/site-packages/kombu/message.py", line 88, in ack
self.channel.basic_ack(self.delivery_tag)
File "/usr/local/lib/python2.7/site-packages/amqp/channel.py", line 1584, in basic_ack
self._send_method((60, 80), args)
File "/usr/local/lib/python2.7/site-packages/amqp/abstract_channel.py", line 56, in _send_method
self.channel_id, method_sig, args, content,
File "/usr/local/lib/python2.7/site-packages/amqp/method_framing.py", line …
Run Code Online (Sandbox Code Playgroud) 再会。我知道“破损的管道”不是一个严重的异常,这意味着客户端没有等待服务器的响应。我知道有很多类似的问题,但我找不到答案
我想保持我的日志清晰,所以我找到了解决方案。
我尝试这样写:
@ControllerAdvice
public class ControllerAdvisor {
private static final Logger LOGGER = LogManager.getLogger();
@ResponseBody
@ExceptionHandler(IOException.class)
@ResponseStatus(HttpStatus.SERVICE_UNAVAILABLE)
public Object brokenPipeHandle(IOException e, HttpServletRequest req) {
if (StringUtils.containsIgnoreCase(ExceptionUtils.getRootCauseMessage(e), "Broken pipe"))
return null;
return new ErrorDto(e.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
但断管异常仍然发生,我在日志中看到:
java.io.IOException: Broken pipe
at sun.nio.ch.FileDispatcherImpl.write0(Native Method) ~[na:1.8.0_91]
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) ~[na:1.8.0_91]
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93) ~[na:1.8.0_91]
at sun.nio.ch.IOUtil.write(IOUtil.java:65) ~[na:1.8.0_91]
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471) ~[na:1.8.0_91]
at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:134) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:101) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:157) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWrite(NioEndpoint.java:1241) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.tomcat.util.net.SocketWrapperBase.flushBlocking(SocketWrapperBase.java:428) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.tomcat.util.net.SocketWrapperBase.flush(SocketWrapperBase.java:418) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at org.apache.coyote.http11.Http11OutputBuffer.flushBuffer(Http11OutputBuffer.java:533) ~[tomcat-embed-core-8.5.4.jar:8.5.4]
at …
Run Code Online (Sandbox Code Playgroud) 我有一个服务器应用程序,它接收请求并在 Unix 域套接字上转发它们。这在合理使用下可以完美运行,但是当我对几千个请求进行一些负载测试时,我收到了 Broken Pipe 错误。
我正在使用带有junixsocket 的Java 7来发送请求。我有很多并发请求,但我有一个 20 个工作线程池正在写入 unix 域套接字,所以没有太多并发打开连接的问题。
对于我打开的每个请求,发送和关闭与 Unix 域套接字的连接。
可能导致 Unix 域套接字上的管道损坏的原因是什么?
更新:
如果需要,放置代码示例:
byte[] mydata = new byte[1024];
//fill the data with bytes ...
AFUNIXSocketAddress socketAddress = new AFUNIXSocketAddress(new File("/tmp/my.sock"));
Socket socket = AFUNIXSocket.connectTo(socketAddress);
OutputStream out = new BufferedOutputStream(socket.getOutputStream());
InputStream in = new BufferedInputStream(socket.getInputStream()));
out.write(mydata);
out.flush(); //The Broken Pipe occurs here, but only after a few thousand times
//read the response back...
out.close();
in.close();
socket.close();
Run Code Online (Sandbox Code Playgroud)
我有一个由 20 个工人组成的线程池,他们同时执行上述操作(因此最多 20 个并发连接到同一个 …
我必须向套接字流发送动态缓冲区大小。\n它工作正常,但是当我尝试发送大小大于\n的多个缓冲区时int my_buffer_size =18 * 1024
;(这是一个指示值)
我收到错误(对于某些写入):
\n\nJava.net.SocketException: Broken pipe\nat java.net.SocketOutputStream.socketWrite0(Native Method)\n
Run Code Online (Sandbox Code Playgroud)\n\n我的代码非常简单:\n例如,如果我想发送一个大文件,我会读取一个文件流
\n\nbyte[] bs = new byte[my_buffer_size];\nwhile (... ){ \nfileInputStream.read(bs);\nbyte[] myBufferToSend = new byte[sizeBuffer];\nDataOutputStream out = new DataOutputStream(cclient.getoutputStream());\nout.writeInt(myBufferToSend.length);\nout.write(myBufferToSend);\nout.flush();\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n(该文件只是一个测试,缓冲区大小可以是可变的)
\n\nSendBufferSize 为 146988。
\n\n有没有办法解决管道破裂的错误?我四处阅读,但实际上我没有\xe2\x80\x99解决问题。
\n\n谢谢\n任何帮助表示感谢
\n\n我使用经典的 ServerSocket serverSocket;\n和 Socket cclient
\n