Название вводит в заблуждение.
Я ищу способ запустить команды 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? Это кажется более эффективным решением ...
Сценарий .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