Я запускаю два сценария. Оба кода, по сути, представляют собой один и тот же код, но они должны выполняться с интервалом в 5 минут, чтобы предотвратить конфликт. Первый сценарий:#!/ Бен / ш

# First run
line="Bonus check"
        stamp=$(date +%Y%m%d-%H%M)
      # sleep 90s
        echo "$stamp\t $line" >> /home/rdanner3/Desktop/CardParty.log
        {
export DISPLAY=:0.0
google-chrome [URL masked]
        }
sleep 45s
# google-chrome
pkill -f chrome

# Second run to seventh run identical to above; stripped for brevity.

Второй сценарий (обратите внимание, что это по сути один и тот же код; оба действительно должны быть циклами для здравомыслия!)

#!/bin/sh

# 1st run
line="Bonus checked."
stamp=$(date +%Y%m%d-%H%M)
# sleep 90s
echo "$stamp\t $line" >> /home/rdanner3/Desktop/Slots.log
{
export DISPLAY=:0.0
google-chrome [URL masked]
}
sleep 45s
# google-chrome
pkill -f chrome

# 2nd run to 7th run identical to above code...stripped for brevity

Что происходит, когда сценарии достигают второго запуска? Они запускаются в течение нескольких секунд, несмотря на то, что задания cron, которые первоначально запускают их, находятся на расстоянии 5 минут. Совершенно очевидно (из файлов журнала, которые пишут два сценария), что они запускаются с разницей в несколько секунд, а не в правильном порядке. Поможет ли переключение второго сценария на (скажем) ash или bash, чтобы команды сна двух сценариев не смешивали друг друга? Или я делаю какую-то другую ошибку (например, мне нужно раскомментировать второй запуск Google-Chrome, чтобы позволить pkill очистить эфир)

Заметил проблему вчера, решил, что мне нужно немного помочь. Так что я пришел сюда за это.

1 ответ1

2

Ошибка, вероятно, заключается в том, чтобы полагаться на сон для абсолютного времени вместо относительного времени Вещи перед сном могут занимать различное количество времени.

После удаления повторов кода я, возможно, использовал бы в цикле at или, более вероятно, использовал бы более изощренное использование cron .

Если бы точное время запуска не имело значения, я бы вызывал две функции последовательно в простом цикле. Объединение обоих скриптов.

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