Завершить процесс, подождать случайное количество времени, а затем снова запустить процесс? - PullRequest
0 голосов
/ 05 ноября 2018

Я недавно начал программировать на python и все еще на начальном уровне по программированию. Я создал собственный скрипт Python для командной строки, который запускаю на Raspberry PI. Этот скрипт работает нормально, но мне нужно время от времени сбрасывать его.

Мне было интересно, есть ли способ создать сценарий .sh, который будет выполнять следующий цикл:

  1. Запустить скрипт Python
  2. Подождите случайное количество времени от 60 минут до 100 минут (Эхо количество времени, в течение которого скрипт будет работать)
  3. Затем завершите процесс и подождите от 5 минут до 15 минут. - Охладитесь (Эхо, как долго он будет охлаждаться)
  4. Затем вернитесь к началу

Я знаю, что может быть очень простое решение, но эй, я все еще учусь! Спасибо!

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Если ваша система имеет команду timeout, это действительно просто:

while true; do
    t="$(shuf -i 60-100 -n 1)"
    echo "run for $t minutes"
    timeout "$t"m python yourScript
    t="$(shuf -i 5-15 -n 1)"
    echo "pause for $t minutes"
    sleep "$t"m
done

Если у вас нет команды timeout, замените строку timeout ... на

python yourScript &
sleep "$t"m
kill %+
0 голосов
/ 05 ноября 2018
#!/usr/bin/bash

MINUTESTOSLEPP=$1
MINUTESTOSLEPP=$MINUTESTOSLEPP"m"



function sleep_and_run_rasberry_pi()
{
    echo $MINUTESTOSLEPP
    python rasberry_pi.py
    sleep $MINUTESTOSLEPP
    echo "The Script has been halted for "$MINUTESTOSLEPP" minutes"

    kill -9 `ps -ef | grep rasberry_pi | awk '{print $2}' | head -n1`

    sleep 10m
}

################# MAIN Function #####################
while 1
do
  sleep_and_run_rasberry_pi
done

Запустите скрипт с помощью следующей команды
sh testscript.sh 45
Это означает, что он будет спать 45 минут и уничтожит процесс raspberry_pi

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...