init
This commit is contained in:
commit
b5c2e7709d
35
README.md
Normal file
35
README.md
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
## esv
|
||||||
|
|
||||||
|
esv is a simple service manager, compatible with sysv init scripts. It is intended to interface well wtith
|
||||||
|
busybox init, however it also works well with sysvinit.
|
||||||
|
|
||||||
|
## Get started
|
||||||
|
|
||||||
|
esv requires the following packages:
|
||||||
|
|
||||||
|
- Bash (esv runtime)
|
||||||
|
|
||||||
|
To install esv, clone the everest-tools repository:
|
||||||
|
```
|
||||||
|
git clone https://git.everestlinux.org/EverestLinux/everest-tools
|
||||||
|
```
|
||||||
|
Inside `src/esv/esv3`, edit install.conf.dist and ensure all options are adequate, and save as install.conf:
|
||||||
|
```
|
||||||
|
EDITOR=your_editor_here
|
||||||
|
$EDITOR install.conf.dist
|
||||||
|
```
|
||||||
|
Run `build.sh` as root:
|
||||||
|
```
|
||||||
|
doas ./build.sh install
|
||||||
|
# OR
|
||||||
|
sudo ./build.sh install
|
||||||
|
# OR
|
||||||
|
su -c ./build.sh install
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
```
|
||||||
|
esv {start,stop,restart} SERVICE_NAME # start a service
|
||||||
|
esv {-h,--help} # show a help message
|
||||||
|
esv {-v,--version} # show the version
|
||||||
|
```
|
111
src/bin/esv
Executable file
111
src/bin/esv
Executable file
@ -0,0 +1,111 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# esv - Everest Service Manager
|
||||||
|
|
||||||
|
if [ ! -f "/etc/esv.conf" ]; then
|
||||||
|
printf "error: unable to parse /etc/esv.conf, does it exist?\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source /etc/esv.conf
|
||||||
|
|
||||||
|
helpmsg_big() {
|
||||||
|
printf "${0} - Everest Service Manager\n"
|
||||||
|
printf "usage: ${0} [start] [stop] [restart] [-h] [-v] SERVICE NAME\n"
|
||||||
|
printf "\n"
|
||||||
|
printf "${0} {start} start a service\n"
|
||||||
|
printf "${0} {stop} stop a service\n"
|
||||||
|
printf "${0} {restart} restart a running service\n"
|
||||||
|
printf "${0} {-h/--help} print this message and exit\n"
|
||||||
|
printf "${0} {-v/--version} print the version and exit\n"
|
||||||
|
printf "\n"
|
||||||
|
printf "This program is free software.\n"
|
||||||
|
printf "See the GNU GPL version 3 for details.\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
helpmsg_small() {
|
||||||
|
printf "usage: ${0} [start] [stop] [restart] [-h] [-v] SERVICE NAME\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
check_if_exists() {
|
||||||
|
SV="${@}"
|
||||||
|
for SRV in ${SV[@]}; do
|
||||||
|
if [ ! -f "${SRV_DIR}/${SRV}" ]; then
|
||||||
|
printf "${red}service ${SRV} does not exist${reset}\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
startsv() {
|
||||||
|
SV="${@}"
|
||||||
|
if [ "$SV" = "" ]; then
|
||||||
|
printf "${red}you must specify a service name${reset}\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "${blue}starting: $SV...${reset}\n"
|
||||||
|
for SRV in ${SV[@]}; do
|
||||||
|
source ${SRV_DIR}/${SRV}
|
||||||
|
run
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
stopsv() {
|
||||||
|
SV="${@}"
|
||||||
|
if [ "$SV" = "" ]; then
|
||||||
|
printf "${red}you must specify a service name${reset}\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "${blue}stopping: $SV...${reset}\n"
|
||||||
|
for SRV in ${SV[@]}; do
|
||||||
|
source ${SRV_DIR}/${SRV}
|
||||||
|
stop
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
restartsv() {
|
||||||
|
SV="${@}"
|
||||||
|
if [ "$V" = "" ]; then
|
||||||
|
printf "${red}you must specify a service name${reset}\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "${blue} restarting: $SV...${reset}\n"
|
||||||
|
for SRV in ${SV[@]}; do
|
||||||
|
source ${SRV_DIR}/${SRV}
|
||||||
|
restart
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
printver() {
|
||||||
|
printf "${blue}esv v3.0.0${reset}\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
-h|--help)
|
||||||
|
helpmsg_big
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
-v|--version)
|
||||||
|
printver
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
start)
|
||||||
|
shift
|
||||||
|
check_if_exists "$@"
|
||||||
|
startsv "$@"
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
shift
|
||||||
|
check_if_exists "$@"
|
||||||
|
stopsv "$@"
|
||||||
|
;;
|
||||||
|
restart)
|
||||||
|
shift
|
||||||
|
check_if_exists "$@"
|
||||||
|
restartsv "$@"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
helpmsg_small "$@"
|
||||||
|
esac
|
13
src/etc/esv.conf
Executable file
13
src/etc/esv.conf
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
# /etc/esv.conf
|
||||||
|
|
||||||
|
# Where services are stored.
|
||||||
|
# On Everest, this is /etc/init.d
|
||||||
|
export SRV_DIR="/etc/init.d"
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
export red="\033[1;31m"
|
||||||
|
export green="\033[1;32m"
|
||||||
|
export blue="\033[1;34m"
|
||||||
|
export reset="\033[m"
|
||||||
|
|
||||||
|
# end /etc/esv.conf
|
30
src/man/esv.1
Normal file
30
src/man/esv.1
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
.\" Manpage for esv.
|
||||||
|
.TH man 1 "24 March 2023" "3.0" "Everest Linux Manual"
|
||||||
|
.SH NAME
|
||||||
|
esv \- start, stop, and restart services from sysv-style init scripts
|
||||||
|
.SH SYNPOSIS
|
||||||
|
esv [start] [stop] [restart] [-h] [-v]
|
||||||
|
.SH DESCRIPTION
|
||||||
|
esv is a service manager for Everest Linux which interfaces with already-existing sysv-style init scripts. It is written in POSIX sh, and as such interfaces well with these scripts.
|
||||||
|
.SH OPTIONS
|
||||||
|
.TP
|
||||||
|
.BR start
|
||||||
|
starts a daemon
|
||||||
|
.TP
|
||||||
|
.BR stop
|
||||||
|
stops a daemon
|
||||||
|
.TP
|
||||||
|
.BR restart
|
||||||
|
restarts a daemon
|
||||||
|
.TP
|
||||||
|
.BR \-h
|
||||||
|
shows a help message
|
||||||
|
.TP
|
||||||
|
.BR \-v
|
||||||
|
shows the version
|
||||||
|
.SH SEE ALSO
|
||||||
|
ecrypt(1) gpkg(8)
|
||||||
|
.SH BUGS
|
||||||
|
Report all bugs on the issues page at https://git.everestlinux.org/EverestLinux/esv
|
||||||
|
.SH AUTHOR
|
||||||
|
Liam Waldron (liamwaldron@everestlinux.org)
|
Loading…
Reference in New Issue
Block a user