标签: broken-pipe

排序中的bash错误“排序:写入失败:标准输出:管道损坏”

当我运行这个脚本时,我收到一条错误消息:“排序:写入失败:标准输出:管道损坏”

如果有人可以帮助我,那就太棒了,我要为这个错误发疯了

输入文件是一个文件列表,所有文件都包含 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)

sorting bash broken-pipe

7
推荐指数
1
解决办法
7373
查看次数

简单的字数统计 rust 程序输出有效的标准输出,但在通过管道传输到具有特定内容的头程序时会出现恐慌

我在铁锈中有这样的痕迹:

\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)

unix compilation pipe broken-pipe rust

7
推荐指数
1
解决办法
1684
查看次数

Python和FIFO

我试图在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)

python linux broken-pipe fifo mkfifo

6
推荐指数
1
解决办法
6013
查看次数

错误:[Errno 32]破管django

有时当我看到我的终端时,我看到下面的错误,任何人都可以告诉我它是否正在显示以及如何避免它?

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)

django broken-pipe

6
推荐指数
2
解决办法
1万
查看次数

PDO :: __ construct():发送108个字节失败,errno = 32 Broken pipe

当我登录到命令行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)

php mysql broken-pipe

6
推荐指数
1
解决办法
2944
查看次数

将mysql连接传递给python线程时获取损坏的管道

我正在尝试将一个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)

python mysql multithreading broken-pipe pymysql

6
推荐指数
1
解决办法
1701
查看次数

Celery Worker 与 Rabbitmq 的连接在 gevent 或 eventlet 模式下遇到了损坏的管道错误

我运行时发现 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)

broken-pipe rabbitmq celery gevent eventlet

6
推荐指数
1
解决办法
4918
查看次数

在 @ControllerAdvice 中处理损坏的管道异常也不起作用

再会。我知道“破损的管道”不是一个严重的异常,这意味着客户端没有等待服务器的响应。我知道有很多类似的问题,但我找不到答案

我想保持我的日志清晰,所以我找到了解决方案

我尝试这样写:

@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)

java spring controller exception broken-pipe

6
推荐指数
0
解决办法
1440
查看次数

Unix 域套接字上管道损坏的原因是什么?

我有一个服务器应用程序,它接收请求并在 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 个并发连接到同一个 …

java unix broken-pipe unix-socket

5
推荐指数
1
解决办法
1万
查看次数

java套接字输出流和损坏的管道

我必须向套接字流发送动态缓冲区大小。\n它工作正常,但是当我尝试发送大小大于\n的多个缓冲区时int my_buffer_size =18 * 1024;(这是一个指示值)

\n\n

我收到错误(对于某些写入):

\n\n
Java.net.SocketException: Broken pipe\nat java.net.SocketOutputStream.socketWrite0(Native Method)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的代码非常简单:\n例如,如果我想发送一个大文件,我会读取一个文件流

\n\n
byte[] 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\n

SendBufferSize 为 146988。

\n\n

有没有办法解决管道破裂的错误?我四处阅读,但实际上我没有\xe2\x80\x99解决问题。

\n\n

谢谢\n任何帮助表示感谢

\n\n

我使用经典的 ServerSocket serverSocket;\n和 Socket cclient

\n

java sockets outputstream broken-pipe

5
推荐指数
1
解决办法
8222
查看次数