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

Оба эти задания выполняются внутри cron с 10-минутным интервалом при 17:30 секундах, один запускается, а 1735 первый запускается, избегая уничтожения первого задания за секунду до его фактического запуска.

Первый скрипт состоит из следующего кода

#!/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

Второй скрипт состоит из следующего кода.

#!/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

Проблема в том, что когда я запускаю оба сценария, к сожалению, sym_start.sh не выполняется. Но когда я удаляю файл stop.sh и вручную запускаю скрипт остановки, тогда единственный скрипт в cron выполняется правильно. почему так происходит? любая идея?

1 ответ1

1

Ваше описание crontab показывает, что оба будут запущены одновременно. Ваш стартовый скрипт имеет 30-секундный сон, я думаю, чтобы попытаться помочь с заказом. Если вы хотите запустить два задания последовательно, вы должны переписать его в виде единого сценария, который делает это в нужном вам порядке. Может быть, что-то вроде этого:

#!/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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .