You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于正则表达式生成密码字典:Bash脚本被系统终止求助

解决bash脚本生成密码列表时被系统终止的问题

我明白你的困扰——用bash大括号展开一次性生成所有符合规则的密码组合时,因为内存耗尽被系统强制终止了。咱们来拆解问题根源,再给出几个可行的解决方案:

问题根源

你的脚本里用了{a..f}{a..f}{A..Z}{0..9}{a..z}{a..z}这种大括号展开语法,bash的特性是先在内存中生成所有组合,然后才开始循环输出。咱们算一下总组合数:

  • {a..f}是6个字符,两次组合就是6×6=36种
  • {A..Z}是26种,{0..9}是10种
  • {a..z}两次组合是26×26=676种
    总共有36×26×10×676=6,327,360个密码。这么多字符串一次性加载到内存里,会吃掉大量内存,而你的服务器剩余内存只有约392MB,显然撑不住,最终触发了系统的OOM(内存不足)杀手,终止了脚本。

解决方案

1. 改用嵌套循环,避免一次性生成所有组合

把大括号展开拆成多层嵌套循环,这样每次只生成一个密码,内存占用极低:

#!/bin/bash
# 直接清空文件,比touch+rm更高效
> words.txt

for c1 in {a..f}; do
  for c2 in {a..f}; do
    for c3 in {A..Z}; do
      for c4 in {0..9}; do
        for c5 in {a..z}; do
          for c6 in {a..z}; do
            echo "$c1$c2$c3$c4$c5$c6" >> words.txt
          done
        done
      done
    done
  done
done
exit 0

这个版本不会一次性把所有组合加载到内存,每次循环只处理单个字符的组合,内存占用几乎可以忽略。

2. 优化文件写入效率(可选)

上面的脚本每次echo >>都会打开和关闭文件,频繁IO会拖慢速度。可以把整个循环的输出一次性重定向到文件,减少IO操作:

#!/bin/bash
> words.txt

for c1 in {a..f}; do
  for c2 in {a..f}; do
    for c3 in {A..Z}; do
      for c4 in {0..9}; do
        for c5 in {a..z}; do
          for c6 in {a..z}; do
            echo "$c1$c2$c3$c4$c5$c6"
          done
        done
      done
    done
  done
done > words.txt

这样所有输出会批量写入文件,速度会快不少。

3. 用Python替代bash(更高效)

如果bash循环速度不够,Python的itertools.product是生成器,不会一次性加载所有组合,内存占用极低,而且速度更快:

import itertools
import string

# 定义各位置的字符集
first_two = string.ascii_lowercase[:6]  # 对应a-f
third = string.ascii_uppercase
fourth = string.digits
last_two = string.ascii_lowercase

with open('words.txt', 'w') as output_file:
    # 生成所有组合,逐个写入文件
    for combo in itertools.product(first_two, first_two, third, fourth, last_two, last_two):
        output_file.write(''.join(combo) + '\n')

这个脚本运行时内存占用几乎可以忽略,适合资源有限的服务器。

补充说明

生成的words.txt文件大小大概是6327360 × 7字节 ≈ 44MB,你的服务器磁盘空间肯定足够,所以不用担心存储问题,重点就是避免一次性加载所有组合到内存。

内容的提问来源于stack exchange,提问作者ducktalez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:41:33