snakemake - 处理snakemake中的SIGPIPE错误

标签 snakemake sigpipe

以下蛇形脚本:

rule all:
    input:
        'test.done'

rule pipe:
   output:
       'test.done'
   shell:
        """
        seq 1 10000 | head > test.done
        """

失败并出现以下错误:
snakemake -s test.snake

Provided cores: 1
Rules claiming more threads will be scaled down.
Job counts:
    count   jobs
    1   all
    1   pipe
    2

rule pipe:
    output: test.done
    jobid: 1

Error in job pipe while creating output file test.done.
RuleException:
CalledProcessError in line 9 of /Users/db291g/Tritume/test.snake:
Command '
        seq 1 10000 | head > test.done
        ' returned non-zero exit status 141.
  File "/Users/db291g/Tritume/test.snake", line 9, in __rule_pipe
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/concurrent/futures/thread.py", line 55, in run
Removing output files of failed job pipe since they might be corrupted:
test.done
Will exit after finishing currently running jobs.
Exiting because a job execution failed. Look above for error message

返回非零退出状态141的解释似乎是说snakemake已经捕获了head发送的SIGPIPE失败。 .我想严格来说,snakemake 在捕捉失败方面做的是正确的事情,但我想知道是否有可能忽略某些类型的错误,比如这个错误。我有一个使用 head 的蛇形脚本命令,我正在尝试找到解决此错误的方法。

最佳答案

是的,Snakemake 默认设置 pipefail,因为在大多数情况下,这是人们隐含的期望。您始终可以通过添加 set +o pipefail; 来为特定命令停用它。到 shell 命令。

关于snakemake - 处理snakemake中的SIGPIPE错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46569236/

相关文章:

c - 基于 TCP 的并发 Echo 客户端-服务器中的 SIGPIPE 错误

Python subprocess.Popen PIPE 和 SIGPIPE

iphone - 如何在 iphone 应用程序中捕捉 sigpipe?

snakemake - 在 AWS Batch 中使用 Snakemake 工作流程

Snakemake - 在一条规则中从多个输入文件中仅输出一个文件

python - 使用 snakemake 处理多个目录和其中的所有文件

python - 在Python中同时运行两个函数

python - Samtools 共享库 libcrypto.so.1.0.0 未找到

delete-file - 文件丢失时 SnakeMake 是否可以强制重新运行规则

c - 忽略单个弹出文件的 SIGPIPE*