Отправка сообщения электронной почты оповещения, если время выполнения команды завивки превышает 1 сек.

Это определенно проблема с Unity и терминалом GNOME. Я попытался воссоздать эту проблему с четырьмя другими версиями Ubuntu (хотя я не думаю, что кто-либо использовал терминал GNOME), и он делает это только с Unity.

Это не совсем проблема для проблемы но я могу сказать, что я установил xfce4-terminal и попробовал. Он вышел из полноэкранного режима, когда окно стандартного размера не было максимально.

Не ответ, а обходной путь. Если это то, что вы хотели бы, и оно работает для вас, вы можете изменить свой вариант по умолчанию, чтобы при использовании ярлыка CTRL + ALT + T он запустил терминал xfce4, а не терминал GNOME, вы можете использовать следующее:

sudo update-alternatives --config x-terminal-emulator

и выберите /usr/bin/xfce4-terminal.wrapper

. Это изменит ваш терминал по умолчанию на xfce.

0
задан 8 May 2018 в 21:42

9 ответов

Я бы сохранил PID процесса curl, sleep секунду и просто проверил, продолжает ли он работать с kill:

curl … & pid=$! sleep 1 if kill -0 $pid &>/dev/null; then mailx -r me@domain.tld -s ALERT fi

Вы можете легко проверить это с помощью sleep 1 или sleep 2 соответственно:

$ sleep 1 & pid=$!; sleep 1; if kill -0 $pid &>/dev/null; then echo running; fi [1] 27520 [1]+ Done sleep 1 $ sleep 2 & pid=$!; sleep 1; if kill -0 $pid &>/dev/null; then echo running; fi [1] 27599 running
1
ответ дан 17 July 2018 в 14:51

По внешнему виду результат завитки, похоже, не имеет значения.

Итак, я предлагаю убить команду, если она занимает более одной секунды, используя тайм-аут. Вот один лайнер:

timeout 1s curl {URI} || mailx -r me@domain.tld -s ALERT

Если он истекает, он возвращает ошибку и запускается команда mailx.

Не тестировалось, но это должно работать.

1
ответ дан 17 July 2018 в 14:51

У Curl есть опция для этого, --max-time (и --connect-time, если вы хотите контролировать затраты времени на этапе подключения в сеансе). Если произойдет таймаут, curl вернет код ошибки 28.

Так что-то вроде этого:

curl --max-time 60 <URL> if [ $? -eq 28 ] then mailx -r me@domain.tld -s ALERT fi

должно это сделать.

Я нашел этот сайт Все Curl, который описывает возможности Curl.

1
ответ дан 17 July 2018 в 14:51

Я бы сохранил PID процесса curl, sleep секунду и просто проверил, продолжает ли он работать с kill:

curl … & pid=$! sleep 1 if kill -0 $pid &>/dev/null; then mailx -r me@domain.tld -s ALERT fi

Вы можете легко проверить это с помощью sleep 1 или sleep 2 соответственно:

$ sleep 1 & pid=$!; sleep 1; if kill -0 $pid &>/dev/null; then echo running; fi [1] 27520 [1]+ Done sleep 1 $ sleep 2 & pid=$!; sleep 1; if kill -0 $pid &>/dev/null; then echo running; fi [1] 27599 running
1
ответ дан 20 July 2018 в 14:53

По внешнему виду результат завитки, похоже, не имеет значения.

Итак, я предлагаю убить команду, если она занимает более одной секунды, используя тайм-аут. Вот один лайнер:

timeout 1s curl {URI} || mailx -r me@domain.tld -s ALERT

Если он истекает, он возвращает ошибку и запускается команда mailx.

Не тестировалось, но это должно работать.

1
ответ дан 20 July 2018 в 14:53
  • 1
    Если этот ответ вашу проблему, пожалуйста, отметьте его как принятый ответ. – solsTiCe 8 May 2018 в 22:27

У Curl есть опция для этого, --max-time (и --connect-time, если вы хотите контролировать затраты времени на этапе подключения в сеансе). Если произойдет таймаут, curl вернет код ошибки 28.

Так что-то вроде этого:

curl --max-time 60 <URL> if [ $? -eq 28 ] then mailx -r me@domain.tld -s ALERT fi

должно это сделать.

Я нашел этот сайт Все Curl, который описывает возможности Curl.

1
ответ дан 20 July 2018 в 14:53

Я бы сохранил PID процесса curl, sleep секунду и просто проверил, продолжает ли он работать с kill:

curl … & pid=$! sleep 1 if kill -0 $pid &>/dev/null; then mailx -r me@domain.tld -s ALERT fi

Вы можете легко проверить это с помощью sleep 1 или sleep 2 соответственно:

$ sleep 1 & pid=$!; sleep 1; if kill -0 $pid &>/dev/null; then echo running; fi [1] 27520 [1]+ Done sleep 1 $ sleep 2 & pid=$!; sleep 1; if kill -0 $pid &>/dev/null; then echo running; fi [1] 27599 running
1
ответ дан 20 July 2018 в 15:18

По внешнему виду результат завитки, похоже, не имеет значения.

Итак, я предлагаю убить команду, если она занимает более одной секунды, используя тайм-аут. Вот один лайнер:

timeout 1s curl {URI} || mailx -r me@domain.tld -s ALERT

Если он истекает, он возвращает ошибку и запускается команда mailx.

Не тестировалось, но это должно работать.

1
ответ дан 20 July 2018 в 15:18
  • 1
    Если это ответ на вашу проблему, отметьте ее как принятый ответ. – solsTiCe 8 May 2018 в 22:27

У Curl есть опция для этого, --max-time (и --connect-time, если вы хотите контролировать затраты времени на этапе подключения в сеансе). Если произойдет таймаут, curl вернет код ошибки 28.

Так что-то вроде этого:

curl --max-time 60 <URL> if [ $? -eq 28 ] then mailx -r me@domain.tld -s ALERT fi

должно это сделать.

Я нашел этот сайт Все Curl, который описывает возможности Curl.

1
ответ дан 20 July 2018 в 15:18

Другие вопросы по тегам:

Похожие вопросы: