#!/bin/sh cd $(dirname $0)/.. app_root=$(pwd) sidekiq_pidfile="$app_root/tmp/pids/sidekiq.pid" sidekiq_logfile="$app_root/log/sidekiq.log" gitlab_user=$(ls -l config.ru | awk '{print $3}') warn() { echo "$@" 1>&2 } stop() { bundle exec sidekiqctl stop $sidekiq_pidfile >> $sidekiq_logfile 2>&1 } killall() { pkill -u $gitlab_user -f 'sidekiq [0-9]' } restart() { if [ -f $sidekiq_pidfile ]; then stop fi killall start_sidekiq -d -L $sidekiq_logfile >> $sidekiq_logfile 2>&1 } start_no_deamonize() { start_sidekiq >> $sidekiq_logfile 2>&1 } start_sidekiq() { bundle exec sidekiq -q post_receive -q mailers -q archive_repo -q system_hook -q project_web_hook -q gitlab_shell -q incoming_email -q runner -q common -q default -e $RAILS_ENV -P $sidekiq_pidfile "$@" } load_ok() { sidekiq_pid=$(cat $sidekiq_pidfile) if [ -z "$sidekiq_pid" ] ; then warn "Could not find a PID in $sidekiq_pidfile" exit 0 fi if (ps -p $sidekiq_pid -o args | grep '\([0-9]\+\) of \1 busy' 1>&2) ; then warn "Too many busy Sidekiq workers" exit 1 fi exit 0 } case "$1" in stop) stop ;; start) restart ;; start_no_deamonize) start_no_deamonize ;; start_foreground) start_sidekiq ;; restart) restart ;; killall) killall ;; load_ok) load_ok ;; *) echo "Usage: RAILS_ENV=your_env $0 {stop|start|start_no_deamonize|restart|killall|load_ok}" esac