Параллельное выполнение нескольких сценариев bash с разными именами

Я не уверен в этом, но дать вам намек: Может быть, вы должны позволить Windows диск, прикрепленный во время установки арки? Потому что вы устанавливаете syslinux с системой арки, так что, возможно, syslinux должен обнаружить установленные операционные системы?

-121--89135-

Поскольку вы уже используете awk, возможно, самый простой способ сделать поплавковое сравнение в пределах этого языка:

MAX_LOAD=10.0
if !  max_load }'
then
    echo Alert
fi

Обратите внимание, что происходит немного хитрости: ! оператор отменяет тест. Это необходимо, поскольку логическое выражение в awk и код состояния, который получает конструкция , если имеет значения противоположные значения. используется для управления файлом /proc/loadavg в стандартный вход awk. Вызов awk с помощью -vmax _ load = $ MAX _ LOAD устанавливает переменную awk max _ load в значение переменной оболочки MAX _ LOAD .

В вашем конкретном случае, так как ваш MAX_LOAD является целым, и все, что вы читаете первый float из файла, решение ad-hoc будет:

if [ $(

Вызов cut извлечет неотъемлемую часть первого номера в /proc/loadavg . Идея разрушается, если какое-либо из предположений однако сказанное выше становится ложным.

-121--89138-

Для этого можно рекомендовать использовать syncthing . Моя единственная проблема заключается в том, что иногда это приводит к увеличению загрузки ЦП, но вы можете управлять этим с помощью его тщательной конфигурации. Это действительно быстро, хотя не так быстро, как rsync + ssh.

Дайте нам знать, как это работает для вас, что вы будете делать в конечном итоге, потому что, хотя в настоящее время я довольно успешно использую syncthing для похожего (на ваш) сценария использования, я все еще не уверен, что сделал правильный выбор.

1
11.04.2018, 21:14
2 ответа

Быстрая демонстрация параллельного выполнения скриптов, как описано, без использования каких-либо внешних инструментов:

#!/bin/bash
datanames='KQPW KMMX KMKO KZAO'
datanamesarray=($datanames)
for item in ${datanamesarray[@]}; do
  (./${item}.csh; sleep 10 ) &
done
echo waiting..
wait
echo done

При выполнении этого действия отобразится waiting.., за которым следует десятисекундная задержка, так как все подоболочки выполняются параллельно. waitприостановит выполнение родительского сценария до тех пор, пока все подоболочки не завершатся, прежде чем продолжить. Утверждения echo, sleepи waitприведены здесь в демонстрационных целях.

0
28.01.2020, 00:37

То, что вы делаете, должно сработать. Если вы можете сделать:

$ KMMX.csh

тогда GNU Parallel также сможет запустить скрипт. Первым шагом отладки является запуск parallelс --dry-run, который сообщит вам, что выполняется :

.
cat run.txt | parallel --dry-run

Однако в вашем вопросе есть несколько моментов, которые меня озадачивают:

  • В заголовке вопроса упоминается bash, но вы называете свои скрипты *.cshЯвляется ли ваша интерактивная оболочка bashфайлами скриптов csh-?
  • Вы не упомянули, что поместили файлы в каталог в вашем $PATH, но вы не ссылаетесь на скрипты с путем (, например../KMMX.csh). Это может объяснить, почему он не работает. Хотя вы должны получить сообщение об ошибке.
  • Вы не упомянули, что у вас есть chmod +xфайлы. Это может объяснить, почему он не работает. Хотя вы должны получить сообщение об ошибке.

Но больше всего меня беспокоит то, что ты делаешь это тяжелее, чем нужно. GNU Parallel предназначен для создания команд из шаблона, и это звучит так, как будто ваши файлы*.csh-также созданы из шаблона с единственным изменением — именем данных.

Я предполагаю, что вы можете изменить настройки на:

$ parallel doit {} ::: KQPW KMMX KMKO KZAO

, где doit— скрипт/функция, которая принимает имя данных в качестве аргумента.

Я настоятельно рекомендую вам посмотреть вводные видеоролики для быстрого ознакомления.:http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1Затем посмотрите ПРИМЕРЫ после списка ОПЦИИ (Используйте LESS=+/EXAMPLE :man parallel ). Это даст вам представление о том, на что способен параллелизм GNU. Затем потратьте пару часов на изучение туториала (man parallel _туториала ).

Ваша командная строка полюбит вас за это.

0
28.01.2020, 00:37

Теги

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