zwei Crons laufen nicht gleichzeitig?

zwei Crons laufen nicht gleichzeitig?
MAILTO=""
*/10 * * * *  /bin/bash /var/www/sym_monitor/sym_start.sh > /var/www/migrate/root_start.txt 2>&1
*/10 * * * *  /bin/bash /var/www/sym_monitor/stop.sh > /var/www/migrate/root_stop.txt 2>&1

Bei beiden handelt es sich um Jobs innerhalb von Cron, die in 10-Minuten-Intervallen ausgeführt werden. Der zweite Job startet um 17:30 Uhr und der erste um 17:35 Uhr. Dadurch wird vermieden, dass der erste Job um eine Sekunde vor seinem tatsächlichen Start beendet wird.

Das erste Skript besteht aus dem folgenden Code

#!/bin/bash
value=$(</var/www/sym_monitor/man.txt)


if [ "$value" == "true" ]; then

     ps -ef|grep sym |grep -v grep |awk '{ print $2 }'|sudo  xargs kill -9;

fi

Das zweite Skript besteht aus dem folgenden Code.

#!/bin/bash
value=$(</var/www/sym_monitor/man.txt)

if [ "$value" == "true" ]; then

sleep 30;
cd /var/www/symmetric-ds-3.1.6/bin;
(sudo ./sym --port 8082 --server);

fi

Das Problem ist, dass sym_start.sh leider nicht ausgeführt wird, wenn ich beide Skripte ausführe. Aber wenn ich stop.sh entferne und das Stoppskript manuell ausführe, wird das einzige Skript im Cron ordnungsgemäß ausgeführt. Warum passiert das? Irgendeine Idee?

Antwort1

Ihre Crontab-Beschreibung zeigt, dass beide gleichzeitig ausgeführt werden. Ihr Startskript enthält eine 30-sekündige Ruhepause, die vermutlich bei der Reihenfolge helfen soll. Wenn Sie die beiden Jobs nacheinander ausführen möchten, sollten Sie es als einzelnes Skript umschreiben, das dies in der gewünschten Reihenfolge tut. Vielleicht so etwas wie das hier:

#!/bin/bash

value=$(</var/www/sym_monitor/man.txt)

if [ "$value" == "true" ]; then
    ps -ef|grep sym |grep -v grep |awk '{ print $2 }'|sudo  xargs kill -9;
fi
sleep 30;
if [ "$value" == "true" ]; then
    cd /var/www/symmetric-ds-3.1.6/bin;
    (sudo ./sym --port 8082 --server);
fi

verwandte Informationen