Compare commits
11 Commits
Author | SHA1 | Date | |
---|---|---|---|
b17e0376bc
|
|||
250654bfdb
|
|||
edbabda2df
|
|||
9d13a0576b
|
|||
27bcdec74f
|
|||
6815946574
|
|||
f4e12ec2e1
|
|||
533d0e6250
|
|||
3a69fa0a14
|
|||
b9aad0805e
|
|||
f27c7d4a1b
|
105
README.md
105
README.md
@@ -1,7 +1,106 @@
|
|||||||
# Runit-Service-Manager
|
# `rsm` - Runit Service Manager
|
||||||
|
|
||||||
- This is the CLI Runit Service Manager {rsv}, forked from Void Service Manager {vsv} https://github.com/bahamas10/vsv/blob/master/vsv
|
- This is the CLI Runit Service Manager {rsm}, forked from Void Service Manager {vsv} https://github.com/bahamas10/vsv/blob/master/vsv
|
||||||
|
|
||||||
- Terminal Commands are exactly the same as sv, but produces a beautified layout.
|
- Terminal Commands are exactly the same as sv, but produces a beautified layout.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
## Manage and view runit services.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
Quick Examples:
|
||||||
|
|
||||||
|
- `rsm` - show all services
|
||||||
|
- `rsm status` - same as above
|
||||||
|
- `rsm stop <svc>` - stop a service
|
||||||
|
- `rsm start <svc>` - start a service
|
||||||
|
- `rsm restart <svc>` - restart a service, or start service right after `rsm enable <svc>`
|
||||||
|
- `rsm enable <svc>` - enable a service (autostart at boot)
|
||||||
|
- `rsm disable <svc>` - disable a service (no autostart at boot)
|
||||||
|
- `rsm hup <svc>` - refresh a service (`SIGHUP`)
|
||||||
|
|
||||||
|
Status:
|
||||||
|
|
||||||
|
The `status` subcommand has the following fields:
|
||||||
|
|
||||||
|
- `SERVICE` - the service (directory) name.
|
||||||
|
- `STATE` - the service state: output from `.../$service/supervise/stat`.
|
||||||
|
- `ENABLED` - if the service is enabled (lacks the `.../$service/down` file).
|
||||||
|
- `PID` - the pid of the process being monitored.
|
||||||
|
- `COMMAND` - arg0 from the pid being monitored (first field of `/proc/$pid/cmdline`.
|
||||||
|
- `TIME` - time the service has been in whatever state it is in.
|
||||||
|
|
||||||
|
Command Usage:
|
||||||
|
|
||||||
|
[rsm] Manage and view runit services
|
||||||
|
[rsm] Made specifically for Void Linux but should work anywhere
|
||||||
|
[rsm] Author: Dave Eddy <dave@daveeddy.com> (bahamas10)
|
||||||
|
|
||||||
|
USAGE:
|
||||||
|
rsm [OPTIONS] [SUBCOMMAND] [<ARGS>]
|
||||||
|
rsm [-u] [-d <dir>] [-h] [-t] [SUBCOMMAND] [...]
|
||||||
|
|
||||||
|
OPTIONS:
|
||||||
|
-c <yes|no|auto> Enable/disable color output, defaults to auto
|
||||||
|
-d <dir> Directory to look into, defaults to env SVDIR or /var/service if unset
|
||||||
|
-h Print this message and exit
|
||||||
|
-l Show log processes, this is a shortcut for 'status -l'
|
||||||
|
-t Tree view, this is a shortcut for 'status -t'
|
||||||
|
-u User mode, this is a shortcut for '-d ~/runit/service'
|
||||||
|
-v Increase verbosity
|
||||||
|
-V Print the version number and exit
|
||||||
|
|
||||||
|
ENV:
|
||||||
|
SVDIR The directory to use, passed to the 'sv' command, can
|
||||||
|
be overridden with '-d <dir>'
|
||||||
|
|
||||||
|
SUBCOMMANDS:
|
||||||
|
status [-lt] [filter] Default subcommand, show process status
|
||||||
|
'-t' enables tree mode (process tree)
|
||||||
|
'-l' enables log mode (show log processes)
|
||||||
|
'filter' is an optional string to match service names against
|
||||||
|
|
||||||
|
enable <svc> [...] Enable the service(s) (remove the "down" file, does not start service)
|
||||||
|
|
||||||
|
disable <svc> [...] Disable the service(s) (create the "down" file, does not stop service)
|
||||||
|
|
||||||
|
Any other subcommand gets passed directly to the 'sv' command, see sv(1) for the
|
||||||
|
full list of subcommands and information about what each does specifically.
|
||||||
|
Common subcommands:
|
||||||
|
|
||||||
|
start <service> Start the service
|
||||||
|
stop <service> Stop the service
|
||||||
|
restart <service> Restart the service
|
||||||
|
reload <service> Reload the service (send SIGHUP)
|
||||||
|
|
||||||
|
EXAMPLES:
|
||||||
|
rsm Show service status in /var/service
|
||||||
|
rsm status Same as above
|
||||||
|
rsm -t Show service status + pstree output
|
||||||
|
rsm status -t Same as above
|
||||||
|
rsm status tty Show service status for any service that matches tty*
|
||||||
|
rsm check uuidd Check the uuidd svc, wrapper for 'sv check uuidd'
|
||||||
|
rsm restart sshd Restart sshd, wrapper for 'sv restart sshd'
|
||||||
|
rsm -u Show service status in ~/runit/service
|
||||||
|
rsm -u restart ssh-agent Restart ssh-agent in ~/runit/service/ssh-agent
|
||||||
|
|
||||||
|
Syntax
|
||||||
|
------
|
||||||
|
|
||||||
|
This project uses:
|
||||||
|
|
||||||
|
- Bash Style Guide: https://www.daveeddy.com/bash/
|
||||||
|
- `shellcheck`: https://github.com/koalaman/shellcheck
|
||||||
|
|
||||||
|
```
|
||||||
|
$ make check
|
||||||
|
shellcheck rsm
|
||||||
|
```
|
||||||
|
|
||||||
|
License
|
||||||
|
-------
|
||||||
|
|
||||||
|
MIT License
|
||||||
|
124
rsm
124
rsm
@@ -1,14 +1,19 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
#
|
||||||
# Void Linux service manager (runit)
|
# Artix Linux service manager (runit)
|
||||||
|
# Forked and further developed, by: linuxer <linuxer@artixlinux.org>
|
||||||
|
# Fork Date: August 15, 2020 as rsv
|
||||||
|
# Renamed and further developed as rsm from: January 10, 2021
|
||||||
#
|
#
|
||||||
# Author: Dave Eddy <dave@daveeddy.com>
|
# Original Author (vsv): Dave Eddy <dave@daveeddy.com>
|
||||||
# Date: August 29, 2018
|
# Date: August 29, 2018
|
||||||
# License: MIT
|
# License: MIT
|
||||||
|
|
||||||
RSM_VERSION='v1.3.4'
|
RSM_VERSION='v1.4.0'
|
||||||
|
|
||||||
export SVDIR=${SVDIR:-/run/runit/service/}
|
export SVDIR=${SVDIR:-/run/runit/service/}
|
||||||
|
export FLDIR=${FLDIR:-/etc/runit/sv/}
|
||||||
|
|
||||||
|
|
||||||
charup='✔'
|
charup='✔'
|
||||||
chardown='X'
|
chardown='X'
|
||||||
@@ -115,14 +120,15 @@ usage() {
|
|||||||
logo=$(getlogo)
|
logo=$(getlogo)
|
||||||
|
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
$colormagenta ______ ____ _ _
|
$colormagenta ______ ____ __ __
|
||||||
$colormagenta | | \ \ / ___\ | \/ | $colorgreen Runit Service Manager ($RSV_VERSION)
|
$colormagenta | | \ \ / ___\ | \/ | $colorgreen Runit Service Manager for Artix Linux ($RSM_VERSION)
|
||||||
$colormagenta | |_/ / \____ | || | $colorgreen Source: https://github.com/bahamas10/vsv
|
$colormagenta | |_/ / \____ | || | $colorgreen Source: https://gitea.artixlinux.org/linuxer/Runit-Service-Manager
|
||||||
$colormagenta | | \ \ \____/ | || | $colorgreen MIT License
|
$colormagenta | | \ \ \____/ | || | $colorgreen MIT License
|
||||||
|
|
||||||
$logo $colorblue Manage and view runit services
|
$logo $colorblue Manage and view runit services
|
||||||
$logo $colorblue Made specifically for Void Linux but should work anywhere
|
$logo $colorblue Made specifically for Void Linux but should work anywhere
|
||||||
$logo $colorblue Author: Dave Eddy <dave@daveeddy.com> (bahamas10)
|
$logo $colorblue Author: Dave Eddy <dave@daveeddy.com> (bahamas10)
|
||||||
|
$logo $colorblue Forked specifically for Artix Linux and renamed to rsm, for further development
|
||||||
|
|
||||||
${coloryellow}USAGE:${colorgreen}
|
${coloryellow}USAGE:${colorgreen}
|
||||||
$progname [OPTIONS] [SUBCOMMAND] [<ARGS>]
|
$progname [OPTIONS] [SUBCOMMAND] [<ARGS>]
|
||||||
@@ -449,7 +455,7 @@ do_enable_disable() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ensure service exists
|
# ensure service exists
|
||||||
if ! [[ -d $svc ]]; then
|
if ! [[ -d ${FLDIR}${svc} ]]; then
|
||||||
rmsg -1 "service directory '$svc' does not exist" >&2
|
rmsg -1 "service directory '$svc' does not exist" >&2
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
@@ -462,6 +468,8 @@ do_enable_disable() {
|
|||||||
if ! rm -f "$file"; then
|
if ! rm -f "$file"; then
|
||||||
rmsg 1 "failed to enable '$svc'"
|
rmsg 1 "failed to enable '$svc'"
|
||||||
ret=1
|
ret=1
|
||||||
|
else
|
||||||
|
ln -s ${FLDIR}${svc} ${SVDIR}
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
disable)
|
disable)
|
||||||
@@ -469,6 +477,8 @@ do_enable_disable() {
|
|||||||
if ! disable_message "$svc" > "$file"; then
|
if ! disable_message "$svc" > "$file"; then
|
||||||
rmsg 1 "failed to disable '$svc'"
|
rmsg 1 "failed to disable '$svc'"
|
||||||
ret=1
|
ret=1
|
||||||
|
else
|
||||||
|
unlink ${SVDIR}${svc}
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@@ -482,6 +492,92 @@ do_enable_disable() {
|
|||||||
return "$ret"
|
return "$ret"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# show logs
|
||||||
|
do_show_logs() {
|
||||||
|
local LOGDIR="/var/log/"
|
||||||
|
monitors_array=($(xrandr -q))
|
||||||
|
local cmd=$1
|
||||||
|
local svc
|
||||||
|
local ret=0
|
||||||
|
local file
|
||||||
|
shift
|
||||||
|
|
||||||
|
# Loop all arguments as services
|
||||||
|
msg "Running $progname $cmd $*"
|
||||||
|
|
||||||
|
for svc in "$@"; do
|
||||||
|
# Validate service name
|
||||||
|
if ! [[ $svc =~ $svc_re ]]; then
|
||||||
|
rmsg -1 "unexpected characters in name: '$svc'" >&2
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if ! [[ -d ${SVDIR}${cmd} ]]; then
|
||||||
|
printf "\n%20s\n" "${colorgreen}The following log files found:"
|
||||||
|
local logs_files_array=($(ls /var/log/$cmd/*.*))
|
||||||
|
printf "\n$colorblue"
|
||||||
|
printf '%s\n' "${logs_files_array[@]}"
|
||||||
|
|
||||||
|
printf "\n$colormagenta"
|
||||||
|
read -n 1 -s -r -p "Press any key to continue"
|
||||||
|
|
||||||
|
printf "\n"
|
||||||
|
printf "\n${colorcyan}Log files full output:\n"
|
||||||
|
printf "${coloryellow}\n"
|
||||||
|
printf "${coloryellow}${opt}"
|
||||||
|
|
||||||
|
tail -n 10 ${LOGDIR}${cmd}/*.* | more
|
||||||
|
printf "\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
rmsg "$ret" "[$progname $cmd $*], exit code: $ret"
|
||||||
|
return "$ret"
|
||||||
|
}
|
||||||
|
|
||||||
|
# show error logs
|
||||||
|
do_show_err_logs() {
|
||||||
|
local LOGDIR="/var/log/"
|
||||||
|
monitors_array=($(xrandr -q))
|
||||||
|
local cmd=$1
|
||||||
|
local svc
|
||||||
|
local ret=0
|
||||||
|
local file
|
||||||
|
shift
|
||||||
|
|
||||||
|
# Loop all arguments as services
|
||||||
|
msg "Running $progname $cmd $*"
|
||||||
|
|
||||||
|
for svc in "$@"; do
|
||||||
|
# Validate service name
|
||||||
|
if ! [[ $svc =~ $svc_re ]]; then
|
||||||
|
rmsg -1 "unexpected characters in name: '$svc'" >&2
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if ! [[ -d ${SVDIR}${cmd} ]]; then
|
||||||
|
printf "\n%20s\n" "${colorgreen}The following log files found:"
|
||||||
|
local logs_files_array=($(ls /var/log/$cmd/*.*))
|
||||||
|
printf "\n$colorblue"
|
||||||
|
printf '%s\n' "${logs_files_array[@]}"
|
||||||
|
|
||||||
|
printf "\n$colormagenta"
|
||||||
|
read -n 1 -s -r -p "Press any key to continue"
|
||||||
|
|
||||||
|
printf "\n"
|
||||||
|
printf "\n${colorcyan}Log files full output:\n"
|
||||||
|
printf "${coloryellow}\n"
|
||||||
|
printf "${coloryellow}${opt}"
|
||||||
|
|
||||||
|
tail -n 10 ${LOGDIR}${cmd}/*error*.* | more
|
||||||
|
printf "\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
rmsg "$ret" "[$progname $cmd $*], exit code: $ret"
|
||||||
|
return "$ret"
|
||||||
|
}
|
||||||
|
|
||||||
# handle any other subcommand
|
# handle any other subcommand
|
||||||
do_sv_cmd() {
|
do_sv_cmd() {
|
||||||
if (($# < 2)); then
|
if (($# < 2)); then
|
||||||
@@ -500,7 +596,7 @@ colors_set=false
|
|||||||
tree=false
|
tree=false
|
||||||
log=false
|
log=false
|
||||||
do_usage=-1
|
do_usage=-1
|
||||||
verbosity=0
|
verbosity=1
|
||||||
while getopts 'c:d:hltuvV' option; do
|
while getopts 'c:d:hltuvV' option; do
|
||||||
case "$option" in
|
case "$option" in
|
||||||
c) setcolors "$OPTARG"; colors_set=true;;
|
c) setcolors "$OPTARG"; colors_set=true;;
|
||||||
@@ -510,7 +606,7 @@ while getopts 'c:d:hltuvV' option; do
|
|||||||
t) tree=true; cmd='status';;
|
t) tree=true; cmd='status';;
|
||||||
u) SVDIR=~/runit/service;;
|
u) SVDIR=~/runit/service;;
|
||||||
v) ((verbosity++));;
|
v) ((verbosity++));;
|
||||||
V) echo "$RSV_VERSION"; exit 0;;
|
V) echo "$RSM_VERSION"; exit 0;;
|
||||||
*) do_usage=1;;
|
*) do_usage=1;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
@@ -540,6 +636,16 @@ case "$cmd" in
|
|||||||
enable|disable)
|
enable|disable)
|
||||||
do_enable_disable "$cmd" "$@"
|
do_enable_disable "$cmd" "$@"
|
||||||
;;
|
;;
|
||||||
|
logs)
|
||||||
|
do_show_logs "$@"
|
||||||
|
;;
|
||||||
|
alllogs)
|
||||||
|
do_show_logs "$@"
|
||||||
|
;;
|
||||||
|
errorlogs)
|
||||||
|
do_show_err_logs "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
if $tree; then
|
if $tree; then
|
||||||
rmsg -1 "-t can only be specified with 'status'"
|
rmsg -1 "-t can only be specified with 'status'"
|
||||||
|
Reference in New Issue
Block a user