Я не уверен в этом, но дать вам намек: Может быть, вы должны позволить 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 для похожего (на ваш) сценария использования, я все еще не уверен, что сделал правильный выбор.
Быстрая демонстрация параллельного выполнения скриптов, как описано, без использования каких-либо внешних инструментов:
#!/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
приведены здесь в демонстрационных целях.
То, что вы делаете, должно сработать. Если вы можете сделать:
$ 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 _туториала ).
Ваша командная строка полюбит вас за это.