Как читать команды из файла?

У меня есть некоторые скрипты php которые я запускаю в следующем порядке:

 php index.php import file1 --offline && php index.php import file2 --deleteUnused && php index.php import file3 

Теперь я недавно открыл parallel команду, и я попробовал что-то вроде этого:

 parallel -j 3 -- "php index.php import file1 --offline" "php index.php import file2 --deleteUnused" "php index.php import file3" 

И он отлично работает.

Возможно ли, что у меня может быть файл, в который включены все вышеприведенные команды, и начать parallel с возможностью читать команды из файла?

Что-то вроде этого:

 parallel -XX myFileWithCommands.txt 

2 Solutions collect form web for “Как читать команды из файла?”

Создайте myFileWithCommands.txt :

 php index.php import file1 --offline php index.php import file2 --deleteUnused php index.php import file3 

Затем выполните параллель следующим образом:

 parallel -j 3 -- < myFileWithCommands.txt 

Ну, есть два простых способа сделать это, что я могу себе представить. Вы можете либо передать содержимое файла в parallel , либо написать сценарий оболочки. Если все, что вы хотите выполнить, это конкретный набор задач, тогда сценарий оболочки может иметь больше смысла. Он был бы очень коротким, сладким и точным, а также:

 #!/bin/sh parallel -j 3 -- "php index.php import file1 --offline" "php index.php import file2 --deleteUnused" "php index.php import file3" 

Теперь, если вам нужно что-то более обобщаемое (т. Е. Что-то, что вы можете сделать несколько наборов команд для загрузки в виде группы), тогда может быть проще придумать простой формат файла, а затем передать содержимое файла в parallel .

Самый простой способ сделать это – если у вас есть текст, включайте команды verbatim, которые вы хотите запустить.

Например, если это был ваш текстовый файл ( test.txt ):

 "php index.php import file1 --offline" "php index.php import file2 --deleteUnused" "php index.php import file3" 

Затем вы можете запустить следующее, и это может сработать нормально:

 $ cat test.txt | parallel -j 3 -- 

Вы также можете поэкспериментировать с немного более сложным форматом файла (например, каждая команда на новой строке и не окружена кавычками). Если вам нужно спуститься по этой дороге, вам нужно будет выполнить небольшой маразм в файле, прежде чем прокладывать его parallel что может быть выполнено довольно легко, скажем, например, awk .

Однако, если вы решите создать более гибкий формат файла, возможно, было бы полезно создать сценарий (или функцию) вспомогательной оболочки, который избавит вас от необходимости вводить awk '<whatever patterns you match> { do something }' | parallel -j3 -- awk '<whatever patterns you match> { do something }' | parallel -j3 -- каждый раз.

  • Как скрипт Bash может сказать, как он был запущен?
  • Взаимодействие с запущенной интерактивной консольной программой из другого процесса
  • Как последовательно запустить командную строку Vim, чтобы сделать картографирование в любом режиме?
  • Идеи для анализа результатов netstat для активных подключений
  • Как автоматически определять и записывать в usb с переменными пространствами в его имени
  • Точная разница между данными строк в двух файлах в Linux
  • Условие скрипта Bash всегда передается, даже когда grep не должен возвращать ничего
  • Как сбросить USB-устройство с помощью скрипта?
  • Почему ssh -nq -t не может видеть переменную окружения?
  • Запуск скрипта во время загрузки / запуска; init.d vs cron @reboot
  • Разделить команду и аргументы и вставить в переменную в сценарий bash
  • Linux и Unix - лучшая ОС в мире.