termux-services-setup.sh
· 2.2 KiB · Bash
Raw
#!/data/data/com.termux/files/usr/bin/sh
# This script installs some service management utilities in a Termux environment.
#
# You can download and directly run this script in a Termux environment through:
# curl -sSL https://gist.manganiello.tech/fabio/termux-services-setup/raw/HEAD/termux-services-setup.sh | sh
#
# NOTE: It requires curl and termux-services to be already installed:
# pkg update && pkg install curl termux-services
TERMUX_HOME="$HOME/.termux"
BIN_PATH="$PREFIX/bin"
# Create directory for user scripts
mkdir -p "$TERMUX_HOME/scripts"
cat <<EOF > "$TERMUX_HOME/scripts/sv-log"
#!/data/data/com.termux/files/usr/bin/sh
# sv-log script: A utility journalctl-like script to view and follow logs from
# Termux services
usage() {
echo "Usage: \$0 [-h] [-f] [-n <lines>] <service>" >&2
exit 1
}
lines=25
while getopts "fhn:" opt; do
case "\${opt}" in
f)
follow=1
;;
n)
lines=\${OPTARG}
(echo -n "\$lines" | grep -E '^[0-9]+$' >/dev/null) || usage
;;
*)
usage
;;
esac
done
shift \$((OPTIND-1))
service="\$1"
[ -n "\$service" ] || usage
logfile="\$PREFIX/var/log/sv/\$service/current"
[ -f "\$logfile" ] || (
echo "No logs found for service \$service" >&2
exit 0
)
OPTS="-n -\${lines}"
[ -n "\$follow" ] && OPTS="-f \${OPTS}"
tail \$OPTS "\$logfile"
EOF
cat <<EOF > "$TERMUX_HOME/scripts/install-termux-services"
#!/data/data/com.termux/files/usr/bin/sh
# A script that supports the installation of custom Termux services
# by symlinking service directories from \$TERMUX_HOME/var/service
# to \$PREFIX/var/service and setting up log directories
TERMUX_HOME="\$HOME/.termux"
mkdir -p "\$HOME/.local/bin"
mkdir -p "\$PREFIX/var/service"
ln -sf "\$TERMUX_HOME/scripts/sv-log" "\$HOME/.local/bin"
find "\$TERMUX_HOME/var/service" -maxdepth 1 -type d | tail -n -1 | while read srv; do
ln -sf "\$srv" "\$PREFIX/var/service"
mkdir -p "\$PREFIX/var/log/sv/\$srv"
ln -sf "\$PREFIX/var/log/sv/\$srv" "\$srv/log"
done
EOF
# Copy sv-log and install-termux-services to bin path
install -m 700 "$TERMUX_HOME/scripts/sv-log" "$BIN_PATH/sv-log"
install -m 700 "$TERMUX_HOME/scripts/install-termux-services" "$BIN_PATH/install-termux-services"
| 1 | #!/data/data/com.termux/files/usr/bin/sh |
| 2 | |
| 3 | # This script installs some service management utilities in a Termux environment. |
| 4 | # |
| 5 | # You can download and directly run this script in a Termux environment through: |
| 6 | # curl -sSL https://gist.manganiello.tech/fabio/termux-services-setup/raw/HEAD/termux-services-setup.sh | sh |
| 7 | # |
| 8 | # NOTE: It requires curl and termux-services to be already installed: |
| 9 | # pkg update && pkg install curl termux-services |
| 10 | |
| 11 | TERMUX_HOME="$HOME/.termux" |
| 12 | BIN_PATH="$PREFIX/bin" |
| 13 | |
| 14 | # Create directory for user scripts |
| 15 | mkdir -p "$TERMUX_HOME/scripts" |
| 16 | |
| 17 | cat <<EOF > "$TERMUX_HOME/scripts/sv-log" |
| 18 | #!/data/data/com.termux/files/usr/bin/sh |
| 19 | |
| 20 | # sv-log script: A utility journalctl-like script to view and follow logs from |
| 21 | # Termux services |
| 22 | |
| 23 | usage() { |
| 24 | echo "Usage: \$0 [-h] [-f] [-n <lines>] <service>" >&2 |
| 25 | exit 1 |
| 26 | } |
| 27 | |
| 28 | lines=25 |
| 29 | |
| 30 | while getopts "fhn:" opt; do |
| 31 | case "\${opt}" in |
| 32 | f) |
| 33 | follow=1 |
| 34 | ;; |
| 35 | |
| 36 | n) |
| 37 | lines=\${OPTARG} |
| 38 | (echo -n "\$lines" | grep -E '^[0-9]+$' >/dev/null) || usage |
| 39 | ;; |
| 40 | |
| 41 | *) |
| 42 | usage |
| 43 | ;; |
| 44 | esac |
| 45 | done |
| 46 | |
| 47 | shift \$((OPTIND-1)) |
| 48 | service="\$1" |
| 49 | [ -n "\$service" ] || usage |
| 50 | |
| 51 | logfile="\$PREFIX/var/log/sv/\$service/current" |
| 52 | [ -f "\$logfile" ] || ( |
| 53 | echo "No logs found for service \$service" >&2 |
| 54 | exit 0 |
| 55 | ) |
| 56 | |
| 57 | OPTS="-n -\${lines}" |
| 58 | [ -n "\$follow" ] && OPTS="-f \${OPTS}" |
| 59 | tail \$OPTS "\$logfile" |
| 60 | EOF |
| 61 | |
| 62 | cat <<EOF > "$TERMUX_HOME/scripts/install-termux-services" |
| 63 | #!/data/data/com.termux/files/usr/bin/sh |
| 64 | |
| 65 | # A script that supports the installation of custom Termux services |
| 66 | # by symlinking service directories from \$TERMUX_HOME/var/service |
| 67 | # to \$PREFIX/var/service and setting up log directories |
| 68 | |
| 69 | TERMUX_HOME="\$HOME/.termux" |
| 70 | |
| 71 | mkdir -p "\$HOME/.local/bin" |
| 72 | mkdir -p "\$PREFIX/var/service" |
| 73 | ln -sf "\$TERMUX_HOME/scripts/sv-log" "\$HOME/.local/bin" |
| 74 | |
| 75 | find "\$TERMUX_HOME/var/service" -maxdepth 1 -type d | tail -n -1 | while read srv; do |
| 76 | ln -sf "\$srv" "\$PREFIX/var/service" |
| 77 | mkdir -p "\$PREFIX/var/log/sv/\$srv" |
| 78 | ln -sf "\$PREFIX/var/log/sv/\$srv" "\$srv/log" |
| 79 | done |
| 80 | EOF |
| 81 | |
| 82 | # Copy sv-log and install-termux-services to bin path |
| 83 | install -m 700 "$TERMUX_HOME/scripts/sv-log" "$BIN_PATH/sv-log" |
| 84 | install -m 700 "$TERMUX_HOME/scripts/install-termux-services" "$BIN_PATH/install-termux-services" |