From 726b4e25fde3c495d2a8ded8ada8707b9afe000b Mon Sep 17 00:00:00 2001 From: maximesrd <42911617+maximesrd@users.noreply.github.com> Date: Sun, 2 Sep 2018 17:25:28 +0200 Subject: [PATCH] Update INSTALL.md Rewriting of sysvinit script to make it works properly --- docs/INSTALL.md | 128 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 90 insertions(+), 38 deletions(-) diff --git a/docs/INSTALL.md b/docs/INSTALL.md index 024b326d..6c337c0f 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -271,55 +271,107 @@ WantedBy=multi-user.target This script can also be useful if you are using SysVinit. ```bash -#!/bin/bash -# -# chkconfig: 35 90 12 -# description: Plume -# +#!/bin/sh +### BEGIN INIT INFO +# Provides: +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Start daemon at boot time +# Description: Federated blogging +# Based on https://raw.githubusercontent.com/fhd/init-script-template/master/template +### END INIT INFO -# Get function from functions library -. /etc/init.d/functions +dir="/home/plume/Plume" +cmd="/home/plume/.cargo/bin/cargo run" +user="plume" -# Start Plume -start() { - initlog -c "echo -n Démarrage de Plume: " - cd /home/plume/Plume & cargo run - ### Create the lock file ### - touch /var/lock/subsys/plume - success $"Plume est prêt !" - echo +name=`basename $0` +pid_file="/var/run/$name.pid" +stdout_log="/home/plume/Plume/plume.log" +stderr_log="/home/plume/Plume/plume.err" + +get_pid() { + cat "$pid_file" } -# Restart Plume -stop() { - initlog -c "echo -n Arrêt de Plume: " - killproc cargo run - ### Now, delete the lock file ### - rm -f /var/lock/subsys/plume - echo +is_running() { + [ -f "$pid_file" ] && ps -p `get_pid` > /dev/null 2>&1 } -### main logic ### case "$1" in - start) - start - ;; - stop) - stop - ;; - status) - status FOO - ;; - restart|reload|condrestart) - stop - start - ;; - *) - echo $"Usage: $0 {start|stop|restart|reload|status}" + start) + if is_running; then + echo "Already started" + else + echo "Starting $name" + cd "$dir" + if [ -z "$user" ]; then + sudo $cmd >> "$stdout_log" 2>> "$stderr_log" & + else + sudo -u "$user" $cmd >> "$stdout_log" 2>> "$stderr_log" & + fi + echo $! > "$pid_file" + if ! is_running; then + echo "Unable to start, see $stdout_log and $stderr_log" + exit 1 + fi + fi + ;; + stop) + if is_running; then + echo -n "Stopping $name.." + kill `get_pid` + for i in 1 2 3 4 5 6 7 8 9 10 + # for i in `seq 10` + do + if ! is_running; then + break + fi + + echo -n "." + sleep 1 + done + echo + + if is_running; then + echo "Not stopped; may still be shutting down or shutdown may have failed" + exit 1 + else + echo "Stopped" + if [ -f "$pid_file" ]; then + rm "$pid_file" + fi + fi + else + echo "Not running" + fi + ;; + restart) + $0 stop + if is_running; then + echo "Unable to stop, will not attempt to start" exit 1 + fi + $0 start + ;; + status) + if is_running; then + echo "Running" + else + echo "Stopped" + exit 1 + fi + ;; + *) + echo "Usage: $0 {start|stop|restart|status}" + exit 1 + ;; esac exit 0 + ``` ## Caveats: