GNU-Screen session module handler for NodeJs
npm install gnu-screenThis was build to handle and manage minecraft servers first, but actually only use Linux so if you have another OS you may have some bugs.
* Required
* Installation
* Functions
* Screen
* Exemple
* NodeJs: 12.16.0
* GNU-Screen: 4.08.00
First make sure you have gnu-screen installed:
```
$ apt-get install screen
To run this project, install it locally using npm:
``
$ npm i gnu-screen
Return all available Screens.Screen
Create a representation of gnu-screen session :
Screen(id, mode="").
If you want to save logs change mode to 's'.
Extend events.EventEmitter.Events:
-
close When screen is closed.
- stdout String When something new is append in logFile.Methods:
-
Screen.exist() Check if screen's session is running.
- Screen.setup() Fetch self variable with running session.
- Screen.setRule(...rules) Rules to apply in screen session.
- Screen.write(...stdins) Write something in screen session.
- Screen.setStdout(state) Watch over logFile to call stdout Event.
- Screen.logFile() Return logFile.
- Screen.run(stdin=null) Connect/create to screen session.
- Screen.close() Close screen session.
- Screen.kill(signal="SIGKILL") Kill screen session.KeyValues:
-
Screen.id String | null Screen session's id.
- Screen.logFilePath String | null Path of logFile is there one.
- Screen.pid Int | null Pid of screen session if is running.
- Screen.date String | null Date of screen session if is running.
- Screen.state String | null State of screen session if is running.Exemple
`js
const SC = require("gnu-screen")// Generate 10 screens session
for (n = 0; n < 10; n++) {
scr = new SC.Screen(id=
test n°${n});
console.log(scr);
scr.run();
}// Find and close the 10 screens session
SC.getAll().forEach((scr) => {
console.log(scr);
scr.close();
})
// Create and start a screen session
test = new SC.Screen(id="final test", mode="s");
test.run();
console.log(test);
// Allow "stdout" event
test.setStdout()
// Close the screen session
function close() {
test.close();
if (!test.pid) {
console.log("Closed final test's screen session");
} else {
test.kill();
console.log("Killed test's screen session");
}
//self kill
process.exit();
}
// Get stdout from screen session
test.on("stdout", log => {
console.log("stdout:", log);
if (log.includes("!close")) {
close();
}
});
// Pipe input to the screen session
process.stdin.on('data', (stdin) => test.write(stdin));
// Capture Ctrl + C to close screen session
process.on('SIGINT', () => close());
``