【发布时间】:2021-10-07 17:07:03
【问题描述】:
目的:
- 保存将数据写入磁盘的程序,以防止徒劳地尝试写入完整的文件系统;
- 节省带宽(如果没有地方存储就不要下载);
- 节省用户和程序员的时间和精力(通知他们问题所在,而不是让他们通过阅读误导性错误消息和“为什么这个软件不工作!”)。
问题分为两部分:
- 报告所有文件系统或相关路径所属文件系统的存储空间统计信息(可用、已用、总计等)。
- 在空间不足时报告文件系统错误。
第 1 部分
请NATIVE分享Raku替代品(TIMTOWTDIBSCINABTE "Tim Toady Bicarbonate")到:
raku -e 'qqx{ df -P $*CWD }.print'
在这里,raku-executes df(无磁盘)外部程序通过 shell 引用插入 qqx{},输入 -Portable-format 参数和 $*CWD 当前工作目录,然后是 .print s df 的输出。
sn-p 最初被写为raku -e 'qqx{ df -hP $*CWD }.print'——同时包含-human-readable 和-Portable——但结果证明它不是一个普遍有效的命令。 In OpenBSD 7.0,退出并报错:df: -h and -i are incompatible with -P.
为了增加人类可读性,您可以考虑Number::Bytes::Human module
【问题讨论】:
-
嗨。欢迎使用 SO 和
[raku]标签。 :) 这对我来说就像XY question。例如,在已经有类似df的程序的操作系统上,明智的做法是使用它(但出于安全考虑,使用run而不是qx)。在一个out类似df程序的操作系统上——也就是说,一个非常不成熟的操作系统——Raku 可能没有机会进行补偿。但是你还没有谈到这些方面。那么也许您的真正目的是了解 Raku?不管是什么,我认为如果您编辑您的问题以添加您的问题背后的真正内容,将会有很大帮助。 -
@raiph 嗨,raiph。感谢您的关注。确实存在沟通问题,在这种情况下,坦率地说,我在我的问题中没有看到任何错误陈述。底线“目的”可能有些措辞沉重,但它准确地描述了我想要的。 sn-p 正是我想要的,除了不是本地的。好的,1。我手头的任务是:我需要下载并保存一些东西,然后对其进行整形以保存中间缓存,最后保存结果。这会消耗存储空间,因此我发现事先检查可用空间并在课程期间进行检查是一个不错的主意。 [继续下一条评论]
-
@raiph 2. 我知道
run 'df', '-hP', $*CWD可能更安全,因为这种形式便于仔细提供零件,但run «df -hP $*CWD»是否比qqx{}更安全?你也可以随意扔一些垃圾! 3. 我选择qqx{}而不是run,因为前者使输出完全可用。我会split它然后以编程方式检查可用空间。 [继续下一条评论] -
@raiph 4. 是的,我学习 Raku,犯了明显的错误。 5. 如果主题超出 Raku,是不是关于操作系统和文件系统架构而不是关于 Raku? 6. 尽管如此,凭借 Raku 的力量,我对“非本地人”的答案耸了耸肩。至少我希望docs.raku.org/language/nativecall 方法类似于docs.raku.org/language/… 或modules.raku.org/search/?q=inline
-
你好@uxer。我同意你的观点,没有任何错误陈述。更一般地说,您所写的内容没有任何错误。但是您添加的信息极大地改善了您的问题。从那以后,我遇到了a GH issue(很可能被您打开/关闭,但无论哪种方式都无关紧要),这是一个很好的激励示例。这是可以避免的痛苦和烦恼;我们肯定可以(而且必须)做得更好吗?
标签: raku diskspace linux-disk-free