
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
Ambos são trabalhos dentro do cron executados em intervalos de 10 minutos às 17:30, o segundo começando e o primeiro 1735 começando, evitando a eliminação do primeiro trabalho por segundo antes de realmente começar.
O primeiro script consiste no seguinte código
#!/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
O segundo script consiste no código a seguir.
#!/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
O problema é que quando executo os dois scripts, infelizmente, sym_start.sh não está sendo executado. Mas quando eu removo o stop.sh e executo manualmente o script stop, o único script no cron está sendo executado corretamente. por que isso acontece? qualquer ideia?
Responder1
A descrição do seu crontab mostra que ambos serão executados ao mesmo tempo. Seu script inicial tem um sono de 30 segundos, imagino para tentar ajudar com o pedido. Se você deseja executar os dois trabalhos sequencialmente, você deve reescrevê-los como um único script que faz isso na ordem desejada. Talvez algo assim:
#!/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