Wie man NGINX neu starten/neu laden von einem cron-job?
Ich versuche, starten Sie den NGINX-Dienst von einem Skript, welches aufgerufen wird über einen cron-job (er arbeitet bei der Ausführung in der Befehlszeile durch den Benutzer root) - ich bin nicht sicher, ob dies relevant ist aber der cron-job in Frage, wurde auch über ein script. Ich habe versucht mehrere Befehle, aber die jetzige, die ich verwende, ist die unten:
sudo /etc/init.d/nginx restart
Jede Hilfe zu diesem wäre toll!
UPDATE
Unten ist das script, das von cron ausgeführt wird und versucht neu zu laden die nginx-Dienst
#!/bin/bash
NGINX_CONFIG='/etc/nginx/sites-available'
NGINX_SITES_ENABLED='/etc/nginx/sites-enabled'
WEB_DIR='/var/www/vhosts/demos'
EMAIL=$1
DOMAIN=$2
SITE_DIR=$3
echo $DOMAIN
echo $SITE_DIR
# Remove the nginx configurtations
rm -Rf $NGINX_CONFIG/$DOMAIN.conf
rm -Rf $NGINX_SITES_ENABLED/$DOMAIN.conf
# Remove the access log
rm -Rf /var/log/nginx/$SITE_DIR.access.log
# Remove unicorn socket log
rm -Rf /tmp/unicorn.$SITE_DIR.sock
# Remove the DB
sudo psql -U postgres -c "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = '_$SITE_DIR' AND pid <> pg_backend_pid();"
dropdb -U postgres $SITE_DIR
# Remove the sites application from the server
rm -Rf $WEB_DIR/$SITE_DIR/
if [[ ! "$(/sbin/service nginx status)" =~ "start/running" ]]
then
/etc/init.d/nginx reload
fi
Warum müssen Sie nginx neu starten regelmäßig?
Ich brauche oder starten nginx regelmäßig, denn ich bin versucht, zu automatisieren, das entfernen von einer Website und im Gegenzug einen server block.
Sie brauchen nicht neu zu starten nginx Konfiguration wieder laden. Nur
Okay danke für den Tipp! Ich habe dies geändert aber es ist immer noch das gleiche problem.
Ich brauche oder starten nginx regelmäßig, denn ich bin versucht, zu automatisieren, das entfernen von einer Website und im Gegenzug einen server block.
Sie brauchen nicht neu zu starten nginx Konfiguration wieder laden. Nur
reload
.Okay danke für den Tipp! Ich habe dies geändert aber es ist immer noch das gleiche problem.
InformationsquelleAutor Simon Fletcher | 2014-09-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie machen Sie einen cron-job wie den root-Benutzer, so dass, add new cron job, melden Sie sich als Benutzer root mit su und dann ausführen crontab -e und fügen Sie es,
0 * * * * /etc/init.d/nginx reload
Oder Bearbeiten Sie Ihre
sich mit Ihren root-Benutzer und fügen Sie den cron
0 * * * * root /etc/init.d/nginx reload
(passen Sie den Zeitplan bei Bedarf, da die oben wird jede Stunde auf der Stunde)
Kippe Sie einen cron-whit sudo ( glaube ich ) die Sie benötigen, loggen Sie als root ein, oder Bearbeiten Sie die crontab als root an und fügen Sie Ihre comand.
Update**************+++
Warum nicht nur
Statt:
if [[ ! "$(/sbin/service nginx status)" =~ "start/ausführen" ]]
dann
/etc/init.d/nginx reload
fi
Oder besser, versuchen Sie dies:
Dort können Sie ein anderes, wenn nginx gestopt ist, um es neu zu starten oder sowas... forme arbeiten, ich benutze es auf meinem lite-monitoring-Skript http://kb.skamasle.com/2013/monitorear-servicios-ftp-mysql-apache-etc-y-levantar-si-esta-caido/
In irgendeiner Weise können wir auch dieses verwenden:
One-liner cron als nur prüfen, ob nginx pid ist es, wenn Sie es nicht neu starten
Zeig uns dein script... und denken Sie daran, wenn Sie whant, zu setzen, ein script in einem cron können Sie tun /bin/bash /Pfad/script oder /Pfad/Skript nur, wenn Sie tun, dass Sie tun müssen, ein chmod +x auf ein Skript...
Ich habe aktualisiert die Frage
Ich update meine Antwort..
Das klappte! Dank so viel Mann. Nur so verstehe ich die nächste Zeit... Den check ich Tat, funktionierte, wenn ich es lief in der Befehlszeile als root-Benutzer, aber nicht, wenn ich es lief wie ein mais-job warum ist das so?
InformationsquelleAutor Skamasle