Я использую Debian 6.0.6. Я отредактировал root crontab несколько дней назад, чтобы добавить эту строку:

00,10,20,30,40,50 * * * * /root/Scripts/con_switch6.sh >> /var/log/con_switch_diario.log 2>&1

Я подключаюсь к этому серверу Linux с помощью Putty. Тем временем консоль Putty открывается и подключается, и каждые 10 минут внутри файла "con_switch_diario.log" создается строка (т.е. скрипт выполняется).

Но когда я закрыл консоль Putty (то есть соединение ssh завершилось), а затем снова открыл ее, я обнаружил, что за этот промежуток времени в этом файле журнала нет записей. Я провел несколько тестов и обнаружил, что когда консоль закрыта, скрипт не выполняется crontab.

Содержание сценария таково:

#!/bin/sh

IPcorreo="83.25.10.84"
IP1="192.168.10.125" 
IP2="192.168.10.154"
maxPloss="15"


IPfirewall=`traceroute -m 3 $IPcorreo | grep $IP1`

if [ $? -eq  0 ]
then
  echo "$IPfirewall: `date`"

  ploss=$(ping -q -w30 $IPcorreo | grep -o "[0-9]*%" | tr -d %) > /dev/null 2>&1

  if [ "$ploss" -gt "$maxPloss" ] 
  then
    /usr/bin/expect /root/Scripts/delete.exp
    sleep 60   
    echo "Switch Email: `date`" | mail -s System system@domain.com
  fi
else
  traceroute -m 3 $IPcorreo | grep $IP2
fi 

Я не знаю, как я мог решить эту проблему. Спасибо за помощь.

PS: на том же сервере, внутри crontab, я определил другие скрипты ... все они работают нормально каждый день. Единственное различие, которое я нашел между ними, заключается в том, что они используют

#!/bin/bash

вместо

#!/bin/sh

Но даже если я изменил его в моем скрипте, чтобы использовать bash, у меня все еще остается та же проблема.

1 ответ1

0

проблема исправлена. Причиной была эта линия

ploss=$(ping -q -w30 $IPcorreo | grep -o "[0-9]*%" | tr -d %) > /dev/null 2>&1

однажды я изменил это на

ploss=`ping -q -w30 $IPcorreo | grep -o "[0-9]*%" | tr -d %`

все стало работать нормально.

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