我有一组服务器,每个服务器都装满了一堆可以压缩的文件.这些服务器都有不同数量的核心.如何编写bash脚本来 for each 核心启动gzip,并确保gzip不是压缩同一个文件?

推荐答案

如果你在Linux上,你可以使用GNU的xargs启动尽可能多的进程.

CORES=$(grep -c '^processor' /proc/cpuinfo)
find /source -type f -print0 | xargs -0 -n 1 -P $CORES gzip -9
  • find-print0/xargs-0可以防止文件名中出现空白
  • xargs-n1表示每个文件有一个gzip进程
  • xargs-P指定作业(job)数
  • gzip-9表示最大压缩

Linux相关问答推荐

列出Linux上特定目录和子目录名称的bash命令

在新环境中使用Unicode范围的sed表达式有问题

AWK打印到文件正在追加,而不是覆盖

如果在两种模式之间找到文本,则使用sed删除它们之间的所有行

奇怪的 Bash 脚本行为

获取S3路径的linux命令

使用 awk 将 csv 拆分为带有标题的多个文件

是否可以使用 shell 脚本递归地创建文件夹?

使用 shell 脚本获取 MAC 地址

Git为每次推送输入长密码

安装 mod_ssl 亚马逊 Linux

让 Tk 看起来像一个原生 Linux 应用程序

Linux 的 TextMate 替代品

'&&' 与 '&' 与 Bash 中的 'test' 命令

如何在没有空格的情况下打印 awk?

是否有一个 linux 命令来确定与给定进程 ID 关联的窗口 ID?

如何在字符串中查找子字符串(或如何 grep 变量)?

如何仅打印 hexdump 中的十六进制值,而不打印行号或 ASCII 表?

System.currentTimeMillis 是否总是返回一个值 >= 以前的调用?

如何编写 Mono 守护程序