rolo 1.1.5 → 1.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +32 -18
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 82ea3f5c3cee515188ac61aa8a6beb901c6004b0
|
4
|
+
data.tar.gz: 07ef8d73ea6442cc998bb67732370542189ffa2b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ff13f29f79c69cfc1192e51846b5969e55abe0fb6e839feaa3a41ae1432d77de4295d3c1a542cb355969fc2116edcee27011646702a0af360f3415b309e11bc
|
7
|
+
data.tar.gz: 1f27e193943af59075b20005f0a2be6ccc8bcbda22a546cb20585734b15d4b9e329cb3c4d857738b3a8714cf3f294afc1f1f41b40ed99bbaa1cf9ba51e445434
|
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
+
[](https://travis-ci.org/icy/rolo)
|
2
|
+
|
1
3
|
## NAME
|
2
4
|
|
3
|
-
`rolo
|
5
|
+
`rolo` -- Prevents a program from running more than one copy at a time
|
4
6
|
|
5
7
|
## SYNOPSIS
|
6
8
|
|
@@ -12,7 +14,7 @@
|
|
12
14
|
checking if there is a network socket that is open by the application
|
13
15
|
and/or by `rolo`.
|
14
16
|
|
15
|
-
`rolo
|
17
|
+
`rolo` prevents a program from running more than one copy at a time;
|
16
18
|
it is useful with cron to make sure that a job doesn't run before a
|
17
19
|
previous one has finished. `robo.rb` is a ruby version of Timothy
|
18
20
|
program <https://github.com/timkay/solo> with some more options.
|
@@ -40,16 +42,16 @@
|
|
40
42
|
the port is open by another program and it will only check if that port
|
41
43
|
is open or not. Otherwise, see below.
|
42
44
|
|
43
|
-
Before starting your `<command>` (using `exec`), `rolo
|
45
|
+
Before starting your `<command>` (using `exec`), `rolo` will open a
|
44
46
|
socket on a local address (or address specified by option `--address`.)
|
45
47
|
This socket will be closed after your command exits, and as long as
|
46
48
|
your command is running, we have a chance to check its status by
|
47
|
-
checking the status of this socket. If it is still open when `rolo
|
48
|
-
is invoked, `rolo
|
49
|
+
checking the status of this socket. If it is still open when `rolo`
|
50
|
+
is invoked, `rolo` exits without invoking a new instance of command.
|
49
51
|
|
50
52
|
However, if your `<command>` closes all file descriptors at the time it
|
51
|
-
is executed, `rolo
|
52
|
-
a trick when using `rolo
|
53
|
+
is executed, `rolo` will be sucked. (See `EXAMPLE` for details and for
|
54
|
+
a trick when using `rolo` with `ssh`.) If that the cases, you may
|
53
55
|
use the option `--address` and `--port` to specify a socket that your
|
54
56
|
command binds on.
|
55
57
|
|
@@ -57,7 +59,7 @@
|
|
57
59
|
|
58
60
|
Here are some simple examples and applications. Feel free to contribute.
|
59
61
|
|
60
|
-
### Create SSH tunnels
|
62
|
+
### Create SSH tunnels (OpenSSH older than 5.6p1)
|
61
63
|
|
62
64
|
To create tunnel to a remote server, you can use this ssh command
|
63
65
|
|
@@ -70,46 +72,58 @@
|
|
70
72
|
|
71
73
|
To keep this tunnel persistent, you can add this to your crontab
|
72
74
|
|
73
|
-
rolo
|
75
|
+
rolo -p 4567 \
|
74
76
|
ssh remote -fNL localhost:1234:localhost:10000
|
75
77
|
|
76
|
-
and allows this line to be executed once every 5 minutes. `rolo
|
78
|
+
and allows this line to be executed once every 5 minutes. `rolo`
|
77
79
|
will check if your ssh command is still running. If 'yes', it will
|
78
|
-
simply exit; if 'no', `rolo
|
80
|
+
simply exit; if 'no', `rolo` will start the ssh command.
|
79
81
|
|
80
82
|
### With OpenSSH 5.6p1 or later
|
81
83
|
|
82
84
|
However, if you use *OpenSSH 5.6p1* (or later), `ssh` will close all file
|
83
85
|
descriptors from the parent (except for `STDIN`, `STDOUT` and `STDERR`).
|
84
|
-
As the socket opened by `rolo
|
86
|
+
As the socket opened by `rolo` is closed, `rolo` will always
|
85
87
|
start new instance of the `ssh` tunnel. (Actually I had process `bomb`
|
86
88
|
on my system when I used the original program `solo` to launch my
|
87
89
|
tunnels.)
|
88
90
|
|
89
91
|
Fortunately, `ssh` has option to bind on the local address.
|
90
|
-
Using this option we can trick `rolo
|
92
|
+
Using this option we can trick `rolo` as below
|
91
93
|
|
92
|
-
rolo
|
94
|
+
rolo -p 4567 \
|
93
95
|
ssh remote -fN \
|
94
96
|
-L localhost:1234:localhost:10000 \
|
95
97
|
-L %address:%port:localhost:12345
|
96
98
|
|
97
99
|
The last use of option `-L` will ask `ssh` to open a socket on
|
98
|
-
`%address:%port` (the real values will be provided by `rolo
|
99
|
-
and it will be checked by `rolo
|
100
|
+
`%address:%port` (the real values will be provided by `rolo`),
|
101
|
+
and it will be checked by `rolo` in its next run. Please note that
|
100
102
|
we use a random port `12345` to prevent local connections to
|
101
103
|
`%address:%port` from being forwarded to remote.
|
102
104
|
|
103
105
|
Another way is to use option `--address`
|
104
106
|
|
105
|
-
rolo
|
107
|
+
rolo -p 1234 -a 127.0.0.1 \
|
106
108
|
ssh remote -fNL localhost:1234:localhost:10000
|
107
109
|
|
108
110
|
And this is another way
|
109
111
|
|
110
|
-
rolo
|
112
|
+
rolo -p 1234 -a 127.0.0.1 \
|
111
113
|
ssh remote -fNL %address:%port:localhost:10000
|
112
114
|
|
115
|
+
### Create ssh tunnels: the cleanest way
|
116
|
+
|
117
|
+
Within the `--no-bind` option, you can event do something cleaner
|
118
|
+
|
119
|
+
rolo --no-bind -p 1234 -a 127.0.0.1 \
|
120
|
+
ssh remote -fN -L localhost:1234:localhost:10000
|
121
|
+
|
122
|
+
Because `ssh` would listen on the local port `1234`, we may just ask
|
123
|
+
`rolo` to check if that port is open. If `yes`, it's sure that our
|
124
|
+
tunnel is running and `rolo` will simply exit. Otherwise, `ssh` may
|
125
|
+
exit and `rolo` will start new `ssh` tunnel.
|
126
|
+
|
113
127
|
### Start VirtualBox guests
|
114
128
|
|
115
129
|
To make sure that your VirtualBox Windows guest is always running,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rolo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anh K. Huynh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-08-27 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Start an application and/or prevent it from running twice by simply checking
|
14
14
|
if there is a network socket that is open by the application and/or by `rolo`
|
@@ -22,7 +22,7 @@ files:
|
|
22
22
|
- bin/rolo
|
23
23
|
homepage: https://github.com/icy/rolo
|
24
24
|
licenses:
|
25
|
-
- GPL
|
25
|
+
- GPL-2.0
|
26
26
|
metadata: {}
|
27
27
|
post_install_message:
|
28
28
|
rdoc_options: []
|
@@ -30,18 +30,18 @@ require_paths:
|
|
30
30
|
- lib
|
31
31
|
required_ruby_version: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
|
-
- -
|
33
|
+
- - ">="
|
34
34
|
- !ruby/object:Gem::Version
|
35
35
|
version: '0'
|
36
36
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
requirements: []
|
42
42
|
rubyforge_project:
|
43
|
-
rubygems_version: 2.
|
43
|
+
rubygems_version: 2.6.11
|
44
44
|
signing_key:
|
45
45
|
specification_version: 4
|
46
|
-
summary:
|
46
|
+
summary: "`rolo` prevents a program from running more than one copy at a time"
|
47
47
|
test_files: []
|