reboot
v0.2.0
Published
Directly reboot Linux/macOS with no systemd or fork()ing of /sbin/shutdown
Readme
node-reboot
Immediately reboot or halt Linux/macOS from Node.js or Bun.
This package calls the operating system reboot APIs directly. It does not call
systemd, shell out, or fork /sbin/shutdown.
Runtimes supported
- Node.js v24+.
- Bun 1.3+.
- Linux and macOS.
Older Node.js versions may work as well.
Why?
node-reboot is intended for watchdog-style applications that need to force an
immediate machine restart when graceful shutdown is not an option anymore.
For example, this package was built for a cluster of Linux servers that boot read-only and run memory-intensive workloads. When a bad runtime condition is detected, the watchdog needs to reboot the server immediately instead of asking around nicely.
Install
npm install rebootor:
bun add rebootUsage
The module exports two methods, reboot and halt. Both accept a single boolean argument, which skips sync() of filesystems if true.
Sync filesystems, then reboot
import { reboot } from 'reboot';
reboot();Reboot immediately without syncing filesystems
import { reboot, rebootImmediately } from 'reboot';
reboot(true); // Hasta la vista babyThe function should not return. If it does return, the process probably does not have permission to reboot the system.
Halt
The package also exports halt/power off helper. It will try to power off the computer on Linux or nobody knows what happens on macOS.
import { halt, haltImmediately } from 'reboot';
// sync() then halt:
halt();
// or halt immediately:
halt(true);Permissions
On Linux, a non-root Node.js or Bun process needs the CAP_SYS_BOOT capability
to reboot the system:
sudo setcap CAP_SYS_BOOT=+ep "$(which node)" # or bunSee man capabilities for details.
