github.com/crowdsecurity/crowdsec@v1.6.1/test/lib/init/crowdsec-daemon (about)

     1  #!/usr/bin/env bash
     2  
     3  set -eu
     4  script_name=$0
     5  
     6  die() {
     7      echo >&2 "$@"
     8      exit 1
     9  }
    10  
    11  about() {
    12      die "usage: ${script_name} [ start | stop ]"
    13  }
    14  
    15  #shellcheck disable=SC1007
    16  THIS_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
    17  cd "${THIS_DIR}"/../../
    18  #shellcheck disable=SC1091
    19  . ./.environment.sh
    20  
    21  # you have not removed set -u above, have you?
    22  
    23  [[ -z "${CROWDSEC-}" ]] && die "\$CROWDSEC must be defined."
    24  [[ -z "${LOG_DIR-}" ]] && die "\$LOG_DIR must be defined."
    25  [[ -z "${PID_DIR-}" ]] && die "\$PID_DIR must be defined."
    26  
    27  if [[ ! -f "${CROWDSEC}" ]]; then
    28      die "${CROWDSEC} is missing. Please build (with 'make bats-build') or install it."
    29  fi
    30  
    31  DAEMON_PID=${PID_DIR}/crowdsec.pid
    32  
    33  start() {
    34      daemonize \
    35          -p "${DAEMON_PID}" \
    36          -e "${LOG_DIR}/crowdsec.err" \
    37          -o "${LOG_DIR}/crowdsec.out" \
    38          "${CROWDSEC}"
    39      ./bin/wait-for-port 6060
    40  }
    41  
    42  start_pid() {
    43      start
    44      cat "$DAEMON_PID"
    45  }
    46  
    47  stop() {
    48      if [[ -f "${DAEMON_PID}" ]]; then
    49         # terminate quickly with extreme prejudice, all the application data will be
    50         # thrown away anyway. also terminate the child processes (notification plugin).
    51         PGID="$(ps -o pgid= -p "$(cat "${DAEMON_PID}")" | tr -d ' ')"
    52         # ps above should work on linux, freebsd, busybox..
    53         if [[ -n "${PGID}" ]]; then
    54             kill -- "-${PGID}"
    55         fi
    56  
    57         rm -f -- "${DAEMON_PID}"
    58      fi
    59  }
    60  
    61  
    62  # ---------------------------
    63  
    64  [[ $# -lt 1 ]] && about
    65  
    66  case "$1" in
    67      start)
    68          start
    69          ;;
    70      start-pid)
    71          start_pid
    72          ;;
    73      stop)
    74          stop
    75          ;;
    76      *)
    77          about
    78          ;;
    79  esac;
    80