Helpers - компьютеры, интернет, программирование

Bash дождаться завершения задания и выполнить следующую команду

У меня проблема с моим скриптом bash:

cmd1='/usr/bin/wget http://mysite/folder/'
$cmd1 > "/var/www/html/log/data.log" 2>&1 & 

cmd2='/usr/bin/indexer --rotate --all' 
$cmd2 > "/var/www/html/log/$(date +%Y-%m-%d_%H:%M)" 2>&1 & 

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

Как я могу проверить, завершен ли wget, и выполнить следующую команду. Спасибо!

PS: я пытался использовать сон между этими командами, и вторая команда выполняется несколько раз. Мне нужно только один раз.

20.03.2019

Ответы:


1

Избавьтесь от конечных &s. & заставляет команды выполняться в фоновом режиме. Поведение по умолчанию, когда они работают на переднем плане, — это то, что вам нужно.

cmd1='/usr/bin/wget http://mysite/folder/'
$cmd1 > "/var/www/html/log/data.log" 2>&1

cmd2='/usr/bin/indexer --rotate --all' 
$cmd2 > "/var/www/html/log/$(date +%Y-%m-%d_%H:%M)" 2>&1

Примечание: вам действительно не следует хранить команды в переменных. Используйте функции. Также нет причин выписывать /usr/bin.

cmd1() { wget http://mysite/folder/; }
cmd1 > /var/www/html/log/data.log 2>&1

cmd2() { indexer --rotate --all; }
cmd2 > /var/www/html/log/"$(date +%Y-%m-%d_%H:%M)" 2>&1

Теперь вы можете хранить всю команду, перенаправления и все остальное в functions; вы, возможно, заметили, что не можете сделать это при использовании переменных.

cmd1() { wget http://mysite/folder/ > /var/www/html/log/data.log 2>&1; }
cmd2() { indexer --rotate --all > /var/www/html/log/"$(date +%Y-%m-%d_%H:%M)" 2>&1; }

cmd1
cmd2
20.03.2019
Новые материалы

Интуитивное понимание тензоров в машинном обучении
Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

Почему объяснимость так важна прямо сейчас?
По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

Анимированный математический анализ
Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

Создание простого слайдера изображений с помощью JavaScript
Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

Создание базы данных с помощью супергероя «Python»
В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

ИИ для чайников: руководство для начинающих по пониманию будущего технологий
Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..