Запускать сценарий файла bat каждые 5 секунд с помощью команды linux [closed]

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

Я ищу способ запустить команды 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 занимает минимум минуту. Поэтому я погуглил и нашел способ планировать его каждые 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

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

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