【发布时间】:2026-01-11 05:35:02
【问题描述】:
我是 Linux 的初学者,也是 bash 脚本的重要初学者。我正在尝试编写一个 bash 脚本来备份我的主目录并向我显示进度。我发现了一个名为 bar 的脚本,它允许我在压缩 tar.bz2 文件时显示进度条,但在创建文件时却不能。我找到了您的代码并正在尝试它,但它给了我一个错误: lsof: 未指定进程 ID lsof 4.81
我从此页面获取您的代码: How to add a progress bar to a shell script? 代码如下:
#! /bin/bash tar -jcf userhomeBU$(date +%Y&m&d)".tar.bz2" /home/user lsof -o0 -o -p $PID | 啊啊啊 开始 { CONVFMT = "%.2f" } $4 ~ /^[0-9]+r$/ && $7 ~ /^0t/ { 偏移量 = substr($7, 3) fname = $9 "stat -f %z '\''" fname "'\''" |获取线 长度 = $0 打印 fname, offset / len * 100 "%" } '我的主目录备份得很好,但由于错误,我没有进度条。
看起来这将使用 PID 来观察它何时完成。我认为它使用 PID 而不是文件的名称,因为在脚本的一开始名称将是未知的。你能解释一下这个脚本到底在做什么,以及为什么我没有得到一个 PID 供它观看。我已经把我的备份代码放在前面和最后,但它没有显示一个栏,而且我在不同的时间得到了同样的错误。
救命!
【问题讨论】:
标签: bash progress-bar