First actual commit

This commit is contained in:
Josh Sherman 2014-11-25 23:47:04 -05:00
parent 504170bf37
commit 2bd257245a
3 changed files with 86 additions and 3 deletions

View file

@ -1,4 +1,35 @@
simple-pid # simple-pid
==========
Stupid simple PID management Stupid simple PID management.
## Why another PID module?
I know, theres 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 whats 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 isnt 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
View 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
View 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"
}
}