Bash脚本安装AzCopy后执行报Segmentation fault错误求助
AzCopy安装后执行报Segmentation Fault,仅手动复制后正常的问题排查
问题根源
你的安装脚本中tar解压步骤的后台执行逻辑错误,导致cp命令在AzCopy二进制文件尚未完全解压完成时就执行,复制了不完整的文件到/usr/local/bin,最终触发Segmentation Fault错误。
看脚本中的这行关键代码:
tar --strip-components=1 --exclude=*.txt -xzvf downloadazcopy-v10-linux & > /dev/null && echo "Unpacking OK" || (echo "Unpacking failed - aborting"; exit 1)
这里的&会让tar进程在后台运行,脚本不会等待解压完成就直接执行后续的复制操作。此时/tmp/azcopy还处于写入状态,复制的是不完整的二进制文件,自然无法正常运行。而脚本执行结束后,后台的tar已经完成解压,所以此时手动复制或直接运行/tmp/azcopy都能正常工作。
修复方案
- 修正tar解压命令
移除tar命令后的&,让解压操作在前台执行,确保文件完全生成后再进行后续步骤;同时修正错误的重定向写法(& > /dev/null改为&> /dev/null,合并标准输出和错误输出到空设备):
tar --strip-components=1 --exclude=*.txt -xzvf downloadazcopy-v10-linux &> /dev/null && echo "Unpacking OK" || (echo "Unpacking failed - aborting"; exit 1)
- 增加文件完整性校验(生产环境推荐)
在复制完成后添加哈希校验步骤,确保目标文件和源文件完全一致:
echo "Verifying copied file integrity..." tmp_sha=$(sha256sum /tmp/azcopy | awk '{print $1}') dest_sha=$(sha256sum /usr/local/bin/azcopy | awk '{print $1}') if [ "$tmp_sha" != "$dest_sha" ]; then echo "ERROR - Copied file is corrupted" exit 1 fi echo "File integrity verified"
验证修复
修改脚本后重新执行安装,此时/usr/local/bin/azcopy应为完整的二进制文件,执行azcopy命令即可正常输出帮助信息,不会再出现Segmentation Fault。
内容的提问来源于stack exchange,提问作者Wojtek_B
相关产品推荐
相关产品推荐

