温馨提示×

linux strings报错怎么办

小樊
44
2026-09-26 16:34:33
栏目: 智能运维

strings 是 Linux 下常用的一个命令(通常来自 binutils),用于从二进制文件、内存 dump、日志等里面提取可打印字符串。如果你遇到 strings 报错,可以按下面思路排查。


一、常见报错及解决办法

1. command not found: strings

原因:系统没装 binutils,或不在 PATH 中。

解决:

# Debian / Ubuntu
sudo apt update
sudo apt install binutils

# CentOS / RHEL
sudo yum install binutils
# 或
sudo dnf install binutils

# Arch
sudo pacman -S binutils

验证:

which strings
strings --version

2. strings: command not found(在容器/最小化系统)

很多 Alpine / 容器镜像 默认没有 strings。

解决:

# Alpine
apk add binutils

# 或换用 busybox
busybox strings file

3. strings: invalid option -- 'x'

原因:参数写错(不同版本支持不同)。

常见正确用法:

strings file
strings -n 6 file        # 最小长度 6
strings -a file          # 扫描整个文件
strings -e l file        # 指定编码(l=16-bit little endian)

查看帮助:

strings --help
man strings

4. strings: No such file or directory

原因:文件路径错或没权限。

解决:

ls -l file
file file
# 加权限
sudo strings file

5. strings: File truncated / Cannot read

原因:

  • 文件正在被写
  • 是设备文件 / 管道
  • 磁盘损坏

解决:

cp file file.bak
strings file.bak

或:

strings < file

6. 大文件 / 内存文件导致卡死或崩溃

解决:

strings -n 8 bigfile | head
strings bigfile | less

二、替代方案(没有 strings 时)

用 grep

grep -a -o '[[:print:]]\{4,\}' file

用 od

od -c file | grep '   '

用 Python

with open("file","rb") as f:
    data=f.read()
import re
print("\n".join(re.findall(rb"[ -~]{4,}", data).decode()))

三、调试建议

如果你愿意,可以贴出:

  • 具体报错信息(完整)
  • Linux 发行版
  • 使用的命令

我可以更精准地帮你定位问题。

0 踩