【问题标题】:Change system / OS time with nodejs使用 nodejs 更改系统/操作系统时间
【发布时间】:2019-09-27 16:51:48
【问题描述】:

有没有办法/库可以改变系统时间?就我而言,我需要更新 linux 机器(Debian)的时间。我知道有一种方法可以使用 shell 命令设置时间,我要问的是是否有抽象库或其他方式?

【问题讨论】:

  • 执行此操作的 Unix 系统调用是 settimeofday。看看你是否能找到一个提供调用它的方法的库。我做了几次谷歌搜索,没有找到任何东西。

标签: javascript node.js linux systemtime


【解决方案1】:

如果您使用机器的date 命令,这非常简单。但是,要做到这一点,您需要从 NodeJS 脚本中调用系统命令。这可以通过 NodeJS 的 exec 命令实现。你可以阅读更多关于它的信息here。它基本上是一种从 NodeJS 代码内部调用系统函数的方法。它是异步运行的,因此它需要一个包含 NodeJS errorstdoutstderror 的回调。

const { exec } = require('child_process');

const timestamp = '20190927 10:00:00';

exec(`/bin/date --set="${timestamp}"`, (err, stdout, stderr) => {
  if (err || stderr) {
    console.error(err);
    console.log(stderr);
  } else {
    console.log(stdout);
    console.log(`Successfully set the system's datetime to ${stdout}`);
  }
}));

您可能没有$PATH 可用。因此,您需要指定日期的确切路径。您可以通过在终端中运行 which date 并将输出复制到 exac 语句中来找到它。对于我的 Ubuntu 18.04 机器,它位于 /bin/date

【讨论】:

  • 这最后多了一个)。此外,这种方法似乎至少在某些 Docker 容器中不起作用。它产生一个错误:/bin/date: cannot set date: Operation not permitted
最近更新 更多