Запускать скрипт bat-файла каждые 5 секунд, используя linux cmd [closed]

Название вводит в заблуждение.

I Я ищу способ запуска команд Windows из Jenkins. Первоначально у меня есть этот скрипт для запуска файла python:

SET PATH=%PATH%;%PYTHON_PATH%
@echo off
cmd /k "cd /c C:\path\venv\Scripts & activate & cd /c C:\path\project_name & python C:\path\project_name\whatever.py runserver"

echo "SUCCESS RUN ALL PYTHON SCRIPTS!"

Я настроил его запускать каждую минуту в Jenkins: * * * * * . Это работает нормально.

Однако мне нужно запускать скрипт на Python каждые 5 секунд, и, к сожалению, cron занимает не менее минуты. Поэтому я нашел Google и нашел способ планировать его каждые 5 секунд с помощью команды linux:

[https://askubuntu.com/questions/800/how-to-run-scripts-every-5-seconds] [1]

(sleep 5 && /path/to/task) &
(sleep 10 && /path/to/task) &
(sleep 15 && /path/to/task) &
(sleep 20 && /path/to/task) &
(sleep 25 && /path/to/task) &
(sleep 30 && /path/to/task) &
(sleep 35 && /path/to/task) &
(sleep 40 && /path/to/task) &
(sleep 45 && /path/to/task) &
(sleep 50 && /path/to/task) &
(sleep 55 && /path/to/task) &
(sleep 60 && /path/to/task) &

Итак, у меня мало знаний в области сценариев. Я решил, что мне следует создать файл bat , состоящий из сценария, который я показал выше как to_run.bat , и реализовать его в сценарии оболочки следующим образом:

chmod +x to_run.bat

(sleep 5 && ./to_run.bat) &
(sleep 10 && ./to_run.bat) &
(sleep 15 && ./to_run.bat) &
(sleep 20 && ./to_run.bat) &
(sleep 25 && ./to_run.bat) &
(sleep 30 && ./to_run.bat) &
(sleep 35 && ./to_run.bat) &
(sleep 40 && ./to_run.bat) &
(sleep 45 && ./to_run.bat) &
(sleep 50 && ./to_run.bat) &
(sleep 55 && ./to_run.bat) &
(sleep 60 && ./to_run.bat) &

Однако он не работает. Как мне этого добиться? Помогите, пожалуйста. Есть ли способ, которым я мог бы просто запустить Windows CMD итеративно, используя Windows CMD без использования Linux? Это кажется более эффективным решением ...

0
задан 24 July 2020 в 04:38

1 ответ

Сценарий .bat является файлом сценария Windows. Вы не можете использовать команды Linux и наоборот.

Я предполагаю, что вы пытаетесь использовать оболочку ubuntu, включенную в Windows? Затем вы должны создать скрипт bash (обычно заканчивающийся .sh )

. В этом случае я также советую переписать свой первоначальный скрипт to_run.bat с помощью команд Linux, потому что я сомневаюсь Даже встроенная в Windows оболочка Ubuntu может запускать пакетные сценарии Windows. Вероятно, что-то вроде:

PATH="$PATH;$PYTHON_PATH"

/mnt/c/path/venv/Scripts/activate & cd /mnt/c/path/project_name & python whatever.py runserver

echo "SUCCESS RUN ALL PYTHON SCRIPTS!"

Наконец, я бы также рекомендовал использовать цикл вместо копирования вашей строки 12 раз

for N in {1..12}
do
   sleep 5
   ./to_run.sh &
done
0
ответ дан 30 July 2020 в 22:03

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

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