在项目过程中,我们常常需要对大量文件进行批量处理。然而,如果每个文件都需要一定的处理时间,而文件数量又很大,逐个的处理会耗费大量的时间,大大影响工作的效率。这时,如果各个文件的处理是相互独立的话,我们自然希望多个文件能够并行化地进行处理,最大限度地利用计算机资源来提高工作效率。
本文介绍两种最为常见的利用Bash脚本实现并行化的方法。值得一提的是,由于硬件条件的限制,我们通常会对并行化的进程数目进行控制。(博主便曾因为占用太多公共资源而遭到投诉了。。)
——————————————————————————————————————————————————————
- 后台 —— 最朴素的并行化
- FIFO —— 常见的进程控制方法
- xargs —— 逆天的方法
1. 后台操作
在linux中,由于后台运行的进程不会影响前台的操作,我们可以通过将正在运行的进程放到后台运行来实现进程的并行操作。将进程放到后台的方法有两种:
1. &
通过在执行命令时在命令行最后加上“&”符号,便可简单实现进程的后台操作。
2. Ctrl Z + bg
Ctrl Z 实现的是讲运行的进程挂起,bg实现将进程放到后台继续运行。
两种方法都会返回一个该进程的后台编号,表示该进程正在后台运行。我们可以通过 jobs 命令查看当前后台进程,也可以通过 fg %<id> 将进程放回前台。