This repository has been archived by the owner on Sep 21, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
177 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,38 @@ | ||
# screend | ||
## ScreenD - Daemon with smaller daemons | ||
Simple screen daemon written in Go. | ||
|
||
### Installation | ||
- `sudo su -` | ||
- `cd /root` | ||
- `git clone https://github.com/OkaeriPoland/screend` | ||
- `cd screend` | ||
- `go build -o screend` | ||
- `chmod +x screend` | ||
- `mv screend.sh /etc/init.d/screend` | ||
- `chmod 755 /etc/init.d/screend` | ||
- `chown root:root /etc/init.d/screend` | ||
- `update.rc screend defaults` | ||
- `/etc/init.d/screend start` | ||
|
||
### Removal | ||
- `update.rc screend remove` | ||
- `sudo rm -rf /root/screend /etc/init.d/screend` | ||
|
||
### Configuration | ||
To add own screen to screend create new .ini file in `/root/screend/daemons`, then run `/etc/init.d/screend restart` | ||
|
||
```ini | ||
[Screen] | ||
name = Example Daemon | ||
user = example | ||
|
||
[Execution] | ||
run_directory = /home/example | ||
command = bash | ||
|
||
[Daemon] | ||
enabled = true | ||
``` | ||
|
||
### Protip | ||
As current installation method sucks, you can edit `screend.sh` and install screend in way you like. If you know what you are doing, of course. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,140 @@ | ||
#!/bin/sh | ||
### BEGIN INIT INFO | ||
# Provides: screend | ||
# Required-Start: $remote_fs $syslog | ||
# Required-Stop: $remote_fs $syslog | ||
# Default-Start: 2 3 4 5 | ||
# Default-Stop: 0 1 6 | ||
# Short-Description: screend init script | ||
### END INIT INFO | ||
|
||
PATH=/sbin:/usr/sbin:/bin:/usr/bin | ||
DESC="screend" | ||
NAME="screend" | ||
CWD=/root/screend | ||
USER=root | ||
GROUP=root | ||
EXEC=/root/screend/screend | ||
PIDFILE=/var/run/$NAME.pid | ||
SCRIPTNAME=/etc/init.d/$NAME | ||
|
||
# Load the VERBOSE setting and other rcS variables | ||
. /lib/init/vars.sh | ||
|
||
# Define LSB log_* functions. | ||
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present | ||
# and status_of_proc is working. | ||
. /lib/lsb/init-functions | ||
|
||
# | ||
# Function that starts the daemon/service | ||
# | ||
do_start() | ||
{ | ||
# Return | ||
# 0 if daemon has been started | ||
# 1 if daemon was already running | ||
# 2 if daemon could not be started | ||
start-stop-daemon --start \ | ||
--quiet \ | ||
--pidfile $PIDFILE \ | ||
--user $USER \ | ||
--exec $EXEC \ | ||
--test > /dev/null \ | ||
|| return 1 | ||
start-stop-daemon --start \ | ||
--quiet \ | ||
--make-pidfile \ | ||
--pidfile $PIDFILE \ | ||
--chuid $USER \ | ||
--user $USER \ | ||
--group $GROUP \ | ||
--chdir $CWD \ | ||
--background \ | ||
--exec $EXEC \ | ||
|| return 2 | ||
} | ||
|
||
# | ||
# Function that stops the daemon/service | ||
# | ||
do_stop() | ||
{ | ||
# Return | ||
# 0 if daemon has been stopped | ||
# 1 if daemon was already stopped | ||
# 2 if daemon could not be stopped | ||
# other if a failure occurred | ||
start-stop-daemon --stop \ | ||
--quiet \ | ||
--user $USER \ | ||
--pidfile $PIDFILE \ | ||
--exec $EXEC \ | ||
--retry=TERM/30/KILL/5 | ||
RETVAL="$?" | ||
[ "$RETVAL" = 2 ] && return 2 | ||
rm -f $PIDFILE | ||
return "$RETVAL" | ||
} | ||
|
||
# | ||
# Function that checks if the daemon is running | ||
# | ||
do_status() | ||
{ | ||
start-stop-daemon \ | ||
--start \ | ||
--test \ | ||
--oknodo \ | ||
--pidfile $PIDFILE \ | ||
--user $USER \ | ||
--exec $EXEC | ||
} | ||
|
||
case "$1" in | ||
start) | ||
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" | ||
do_start | ||
case "$?" in | ||
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; | ||
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; | ||
esac | ||
;; | ||
|
||
stop) | ||
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" | ||
do_stop | ||
case "$?" in | ||
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; | ||
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; | ||
esac | ||
;; | ||
|
||
status) | ||
do_status | ||
;; | ||
|
||
restart|force-reload) | ||
|
||
log_daemon_msg "Restarting $DESC" "$NAME" | ||
do_stop | ||
case "$?" in | ||
0|1) | ||
do_start | ||
case "$?" in | ||
0) log_end_msg 0 ;; | ||
1) log_end_msg 1 ;; # Old process is still running | ||
*) log_end_msg 1 ;; # Failed to start | ||
esac | ||
;; | ||
*) | ||
# Failed to stop | ||
log_end_msg 1 | ||
;; | ||
esac | ||
;; | ||
*) | ||
echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 | ||
exit 3 | ||
;; | ||
esac |