我目前正在更改充满文件的 4TB HDD 的权限和所有权。是否可以监控 chmod 和 chown 等命令的进度?
答案1
您可以附加到正在运行的进程并查看它现在正在做什么。这会让您知道它在哪里。
strace -p1234
其中1234
是进程的进程 ID chmod
。请注意,许多系统限制非 root 用户只能监视子进程,因此您必须以 root 身份执行此操作;看升级后 gdb 将不会附加到进程。
了解当前正在处理什么文件并不能提供一种了解已处理内容的简单方法。chmod
按深度优先顺序遍历文件树,按目录顺序( 的顺序,与一般的ls -U
的顺序不同)遍历各个目录。ls
最好知道进程已经处理了多少个文件,并且至少可以通过知道进程进行了多少个系统调用来大致确定,但据我所知,Linux 不跟踪有多少个系统调用进程已进行的调用。
答案2
chmod $(whoami) -Rv /my/folder | pv --line-mode > /dev/null
-R
- 递归地chown文件夹的内容-v
- 打印每个文件或目录的诊断信息pv --line-mode
- 计算已处理的文件和文件夹(它们的诊断行)> /dev/null
- 丢弃诊断数据
答案3
一般来说,不,没有一些标志来显示程序正在做什么,该标志是在进程启动时指定的。 (如果您确实使其变得冗长,请务必将其放入screen
或tmux
会话中,以便您可以根据需要重新连接到该会话......)
一些实用程序(例如dd
)接受用户信号来切换详细程度(例如通过信号USR1
,pkill -USR1 dd
),但这因应用程序而异(USR1
默认情况下仅终止进程;谨慎使用)。
间接指示是另一种方法,例如 run top
,假设进程生成足够的 CPU 或 I/O 负载以使其脱颖而出(等待网络结果的东西可能看起来没有做太多事情)。
进程跟踪也是可能的,尽管可能会严重减慢系统速度(例如strace
);用于此类检查的较便宜的工具将是dtrace
或类似的,它可以采样并报告chmod
在一段时间内进行了多少相关系统调用的摘要。
答案4
你可以看看pv
命令。目前我的系统上还没有它,但它可以帮助您监控管道流量。
我假设你正在做类似的事情:
find stuff -exec chmod 664 {} \;
您可以使用管道分解命令,然后插入 pv 或 tee 来监视事物的位置。
我意识到我没有给出答案,但也许这些想法会有所帮助。