Мне нужно запустить три блокирующие команды linux (command1, command2 & command3), и я выполнил синхронизацию, так что если пользователь запускает команду2 с помощью терминала2, а command1 выполняется в терминале1, мой сервер возвращает ошибку говоря, что команда1 все еще выполняется. То же самое для command3. Но если я делаю петлю, как показано нижеПроблема с синхронизацией с запущенными командами linux в фоновом режиме
for i in {1..3}; do { command$i & }; done
Все три запускаются параллельно, что нежелательно. Это ошибка синхронизации, или я не должен запускать эти команды таким образом? Выполняют ли команды в фоновом режиме не то же самое, что запускать их в разных терминалах?
Я чувствую, что здесь отсутствует нечто очевидное. Пожалуйста, просветите меня.
Я понимаю это. Но мой вопрос, почему они вообще начинаются? Это моя ошибка синхронизации? Если я попробую запустить command2, используя другой терминал, пока команда1 все еще выполняется, я получаю ожидаемую ошибку, говорящую, что command1 все еще выполняется. – yalkris
Возможно, работа 2 начинается до того, как будет установлена синхронизация, которую вы выполняете на задании 1. Суть? – seanmcl
Извините за путаницу. Я не хочу, чтобы они запускались последовательно. Мой вопрос заключается исключительно в обеспечении синхронизации, поэтому они не работают при параллельном запуске. Я соответствующим образом отредактировал свой вопрос. – yalkris