Das Starten von Resque Worker per Skript funktioniert nicht, das manuelle Starten schon

Das Starten von Resque Worker per Skript funktioniert nicht, das manuelle Starten schon

Ich versuche herauszufinden, warum mein Prozess nicht funktioniert, wenn er über ein Skript gestartet wird, aber einwandfrei funktioniert, wenn er manuell gestartet wird.

Hier sind die Details:

Skript ist ein Resque Worker-Startskript. Der Skriptspeicherort ist /etc/monit/conf.d/start_resque.sh. Die Berechtigungen sind 755 und Eigentum von Ubuntu:ubuntu

Wenn ich das Skript ausführe, erhält die Protokollausgabe eine PID und es heißt „starting worker ip-xx-xxx-xxx-xx:26732 (oder was auch immer die PID ist)“. Wenn ich jedoch ps aux | grep 26732 eingebe, wird nichts als ausgeführt angezeigt. Wenn ich genau denselben Befehl manuell in meinem Rails-Projektverzeichnis ausführe, wird dieselbe Ausgabe „starting worker“ angezeigt und der Prozess wird tatsächlich gestartet und läuft weiter. Eine Sache ist zu beachten: Wenn er manuell gestartet wird, wird eine zusätzliche Ausgabe angezeigt: „nohup: ignoring input“

Eine andere Frage, bei der mir vielleicht jemand helfen kann, ist, warum BACKGROUND=yes meinen Worker nicht tatsächlich zum Daemon macht. Daher greife ich auf nohup zurück, was anscheinend gut funktioniert.

Hier ist mein Skript (der Befehl, den ich manuell ausführe, kommt nach der CD):

#!/bin/bash
echo "starting worker.."
workercount="$(ps aux | grep -c resque)"
currentdir="/var/www/apps/myapp/current"
logdir=$currentdir/log/resque_worker.log
pidfile=$currentdir/tmp/pids/resque_worker_$workercount.pid
cd $currentdir
nohup bundle exec rake environment resque:work RAILS_ENV=production QUEUE='*' VERBOSE=1 PIDFILE=$pidfile >> $logdir 2>&1 &
echo "started worker $workercount! view log at $logdir. view pidfile at $pidfile"

Zusätzliche Hinweise: Unter Ubuntu 12.04 bin ich verbunden, sshwährend ich sowohl das Skript als auch den manuellen Befehl ausführe.

Antwort1

Ok, ich bin zu Sidekiq gewechselt und es „funktioniert einfach“. Ich habe viel Zeit damit verloren, mit Resque und Deployment herumzuspielen, aber ich habe etwas XP gewonnen und meine Sysadmin-Fähigkeiten fast verbessert. Sidekiq scheint eine bessere Option zu sein – es nutzt Threads und hat ein tolles Wiki, eine aktualisierte Weboberfläche, eine Pro-Option und ein wirklich cooles Ninja-Symbol auf der Homepage.

verwandte Informationen