Makefile:sha256sum 永远挂起,CPU 使用率为 0%

问题描述 投票:0回答:1

我的 Makefile 的行为绝对混乱:

我有用于备份的Makefile。备份目录的名称格式为:

2023-09-11
,包含 3 个磁盘映像文件,每个文件都有 sha256 校验和:

# ls -1 2023-09-11/
home.img
home.img.sha256
root.img
root.img.sha256
var.img
var.img.sha256

所以基本上,我首先从U盘传输备份目录,然后检查校验和是否正确:

这是我的 makefile:

all: rsync shasum


rsync:
    @rsync -rt --delete /mnt/udisk/LAPTOP/ . 


shasum: home root var

home:
    @cd 20??-??-??/ && sha256sum -c home.img.sha256

root:
    @cd 20??-??-??/ && sha256sum -c root.img.sha256

var:
    @cd 20??-??-??/ && sha256sum -c var.img.sha256

当我运行它时,

rsync
目标成功完成并且字段被传输。然而,
shasum
目标以最奇怪的方式挂起:它检查第一个校验和
home
并打印OK。然后它永远挂起,什么也没有发生。
ps
确实显示了第二个目标
sha256sum -c root.img.sha256
但 CPU 使用率为 0%

0.0  0.0  /usr/bin/make
0.0  0.0     /bin/sh -c cd 20??-??-??/ && sha256sum -c root.img.sha256
0.0  0.0        sha256sum -c root.img.sha256

我的 Makefile 有什么问题?

makefile rsync sha
1个回答
0
投票

在黑暗中猜测。但是您的

home
规则将
cd
放入子目录中,然后执行
sha256sum
命令。但在开始下一条规则之前,它实际上并没有移回父目录。 (即,您需要在每个 sha256sum 之后执行
cd ..
)。然后后续规则执行自己的
cd
命令,这可能会失败,因为 cwd 是您想要的位置。

老实说,在 Makefile 脚本中更改当前工作目录似乎有点容易出错。也许只使用完整路径?

home:
    @sha256sum -c 20??-??-??/home.img.sha256

root:
    @sha256sum -c 20??-??-??/root.img.sha256

var:
    @sha256sum -c 20??-??-??/var.img.sha256
© www.soinside.com 2019 - 2024. All rights reserved.