如何在JavaScript中计算Linux上的空闲磁盘空间

How do I calculate free disk space on Linux in JavaScript?

本文关键字:磁盘 空间 Linux JavaScript 计算      更新时间:2023-09-26

我想计算和显示家庭文件系统的空闲空间,但是有3-4个用户,并且都应该在javascript中,我们该怎么做?

我知道在linux shell中,我们可以这样做:

df -h

但是在javascript中不是

Node diskusage将执行此操作。有关该软件包的更多信息,请参考diskusage文档:

import { check } from "diskusage";
const log = console.log.bind(console);
async function getFreeSpace(path) {
  const diskUsage = await check(path);
  log(`Disk space available to the current user: ${diskUsage.free}`);
  log(`Disk space physically free: ${diskUsage.free}`);
  log(`Total disk space (free + used): ${diskUsage.free}`);
}
getFreeSpace("/home/mike");

NodeJS,在v19.6中,增加了对statfsstatfsSync的支持。

import { statfs } from 'fs';
// path in mounted volume
const pathToCheck = '/';
const space = statfs(pathToCheck, (err, stats) => {
  if (err) {
    throw err
  }
  console.log('Total free space',stats.bsize*stats.bfree);
  console.log('Available for user',stats.bsize*stats.bavail);
})

您使用的是什么JavaScript环境?NodeJS有一个childprocess模块,你可以用它来生成df命令,详见http://nodejs.org/api/child_process.html。

我想您不会在基于浏览器的JavaScript沙箱中尝试此操作。

无耻插头https://www.npmjs.com/package/microstats

还可以配置为在磁盘空间超过用户定义的阈值时提醒用户。适用于linux, macOS和windows。

您可以使用diskusage npm和child_process。执行('df/-h')获取该参数。但是diskusage NPM更可靠,也更易于使用。如果您使用cp.exec('…'),您应该自己处理返回的字符串以检索所需的参数。

执行命令df -h > df.txt,将df -h的输出写入名为df.txt的文件中。然后你可以读取文件并匹配一个正则表达式。

const { execSync } = require('child_process');
const { readFileSync, unlinkSync } = require('fs')
var space;
execSync('df -h > df.txt');
space = readFileSync('df.txt', (data, err) => {
  if (err) {
    throw err
  }
}).toString().match(/[0-9]+'.[0-9]+?../)[0]
console.log(space)