First actual commit
This commit is contained in:
parent
504170bf37
commit
2bd257245a
3 changed files with 86 additions and 3 deletions
37
README.md
37
README.md
|
@ -1,4 +1,35 @@
|
||||||
simple-pid
|
# simple-pid
|
||||||
==========
|
|
||||||
|
|
||||||
Stupid simple PID management
|
Stupid simple PID management.
|
||||||
|
|
||||||
|
## Why another PID module?
|
||||||
|
|
||||||
|
I know, there’s already quite a few other PID modules out there but for me they
|
||||||
|
all seemed to fall into the poorly documented or the overly complex categories.
|
||||||
|
I just wanted a way to see if a process was already running and if not, run
|
||||||
|
the damn code. I also wanted to do this in a very simple fashion, by way of a
|
||||||
|
callback. And thus, I give you `simple-pid`.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var pid = require('simple-pid');
|
||||||
|
|
||||||
|
pid.lock('process-name', function() {
|
||||||
|
// All your awesome logic
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
## But what’s it do?
|
||||||
|
|
||||||
|
Great question! All it does is checks to see if a PID file was already created,
|
||||||
|
based on the passed process name. If the PID inside of the PID file is still
|
||||||
|
active, the callback is not executed. If it isn’t running (or the PID file
|
||||||
|
simply doesn't exist) the PID file will be created (with the current PID) and
|
||||||
|
the code in the callback will be executed.
|
||||||
|
|
||||||
|
## Any gotchas?
|
||||||
|
|
||||||
|
You know it! Because this module writes to the `/var/run` directory it requires
|
||||||
|
write access to that directory. This is best accomplished by running your script
|
||||||
|
as root or by way of `sudo`.
|
||||||
|
|
24
index.js
Normal file
24
index.js
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
var fs = require('fs-extra');
|
||||||
|
var running = require('running');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
lock: function(name, callback) {
|
||||||
|
var filename = '/var/run/' + name + '.pid';
|
||||||
|
|
||||||
|
// Checks if PID file exists
|
||||||
|
if (fs.existsSync(filename)) {
|
||||||
|
// Checks if the PID is still active
|
||||||
|
var pid = fs.readFileSync(filename, 'utf8');
|
||||||
|
|
||||||
|
if (running(pid)) {
|
||||||
|
console.log('PID ' + pid + ' found in ' + filename + ' is running.');
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Writes the PID
|
||||||
|
fs.writeFileSync(filename, process.pid);
|
||||||
|
|
||||||
|
callback && callback();
|
||||||
|
}
|
||||||
|
};
|
28
package.json
Normal file
28
package.json
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
{
|
||||||
|
"name": "simple-pid",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "Stupid simple PID management",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/fetchlogic/simple-pid.git"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"pid",
|
||||||
|
"process",
|
||||||
|
"management"
|
||||||
|
],
|
||||||
|
"author": "Josh Sherman (http://joshtronic.com/)",
|
||||||
|
"license": "MIT",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/fetchlogic/simple-pid/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/fetchlogic/simple-pid",
|
||||||
|
"dependencies": {
|
||||||
|
"fs-extra": "^0.12.0",
|
||||||
|
"running": "0.0.1"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue