如何在shell脚本中控制任务投递

简介: 如果只有一个样本,或者样本量不大的情况下,我会选择一次性投递所有的任务。但是如果有100个以上的样本,那我就得谨慎考虑。用 snakemake 很好解决这个问题,它会按照你给定的任务数和CPU数,确定每次投递多少任务。
+关注继续查看

如果只有一个样本,或者样本量不大的情况下,我会选择一次性投递所有的任务。但是如果有100个以上的样本,那我就得谨慎考虑。

snakemake 很好解决这个问题,它会按照你给定的任务数和CPU数,确定每次投递多少任务。但是,有些时候任务比较简单,比如说gzip压缩,我就不想写一个snakemake脚本,就想用shell完成。

解决这个问题的关键命令是wait, 它的作用是等待当前的任务完成,和条件语句进行搭配的话,就能够实现每次只运行一定量的任务。举个例子, 我想用gzip对这些文件进行压缩

许多fastq文件

直接用下面的命令,可能会影响到其他用户

ls *.fastq | while read fastq ; do echo "gzip $fastq &"; done

这里没有实际运行,只是用echo来示意。

而比较合适的做法是下面这种

#!/bin/bash

count=0

ls *.fastq | while read fastq 
do
    gzip $fastq &
    count=$((count+1))
    if [ $((count % 4 )) -eq 0 ];
    then
        wait
        count=0
    fi
done

每次循环时,会把任务会放入后台,之后检查当前的计数是不是4的倍数。如果是的话,等任务完成,在运行后续的任务,不是的后直接运行下一个任务。

这个小技巧要感谢 李广伟师兄。

目录
相关文章
|
5天前
|
Shell 数据库 数据安全/隐私保护
图书管理系统的基本框架,可以用 Shell 脚本来实现
图书管理系统的基本框架,可以用 Shell 脚本来实现:
16 1
|
20天前
|
监控 Shell API
shell监控脚本告警通过微信外发
shell监控脚本告警通过微信外发
12 1
|
20天前
|
监控 机器人 Shell
shell监控脚本钉钉外发
shell监控脚本钉钉外发
16 1
|
21天前
|
Shell Linux 开发工具
Linux加强篇004-Vim编辑器与Shell命令脚本
山重水复疑无路,柳暗花明又一村
220 1
Linux加强篇004-Vim编辑器与Shell命令脚本
|
28天前
|
Shell
使用 shell 脚本清理内存 buff/cache
使用 shell 脚本清理内存 buff/cache
25 0
|
29天前
|
Java Shell Linux
java执行脚本命令(shell脚本或cmd脚本)
java执行脚本命令(shell脚本或cmd脚本)
|
1月前
|
机器学习/深度学习 运维 Shell
运维(22)- shell开机自启动脚本
运维(22)- shell开机自启动脚本
24 1
|
1月前
|
运维 Shell C语言
运维(03)- shell执行脚本
运维(03)- shell执行脚本
10 0
|
1月前
|
分布式计算 Hadoop Java
17 案例:开发shell采集脚本
17 案例:开发shell采集脚本
17 0
|
2月前
|
Shell
shell脚本之模块化脚本
shell脚本之模块化脚本
35 1
热门文章
最新文章
相关产品
云迁移中心
推荐文章
更多