Есть ли способ отладки GNU Parallel? - PullRequest
1 голос
/ 08 марта 2019

У меня есть пример сценария, который я пытаюсь запустить:

#!/bin/zsh

echo "i,rt,fifo,depth,rate,burst" > sweep_srcq.csv

parallel --bar --gnu -j4 --header : \
    '
    sem --id 0 echo {i},{rt},{fifo},{depth},{rate},{burst} >> sweep_srcq.csv | cat'\
    ::: i 5 \
    ::: rt 0 1 \
    ::: fifo 1 \
    ::: rate 5 6 8 A D 14 21 32 64 \
    ::: depth 128 \
    ::: burst 1 \

Когда я запускаю этот скрипт на одном из моих компьютеров, он отлично работает, и я вижу файл результатов:

i,rt,fifo,depth,rate,burst
5,0,1,128,8,1
5,0,1,128,5,1
5,0,1,128,A,1
5,0,1,128,6,1
5,0,1,128,D,1
5,0,1,128,14,1
5,0,1,128,21,1
5,0,1,128,32,1
5,0,1,128,64,1
5,1,1,128,5,1
5,1,1,128,6,1
5,1,1,128,8,1
5,1,1,128,A,1
5,1,1,128,D,1
5,1,1,128,14,1
5,1,1,128,21,1
5,1,1,128,32,1
5,1,1,128,64,1

Но на одной из моих других машин этот код просто не выполняется ..

Мой таймер остается на 0s, и в основном он остается там, пока я не убью его. Есть ли способ отладки, что может быть не так на моей машине?

enter image description here

1 Ответ

0 голосов
/ 12 марта 2019

Если это ваш полный сценарий, вы можете сделать это, что короче и быстрее:

echo "i,rt,fifo,depth,rate,burst" > sweep_srcq.csv

parallel --bar -j4 --header : echo {i},{rt},{fifo},{depth},{rate},{burst} \
  ::: i 5 \
  ::: rt 0 1 \
  ::: fifo 1 \
  ::: rate 5 6 8 A D 14 21 32 64 \
  ::: depth 128 \
  ::: burst 1 \
  >> sweep_srcq.csv

Но я чувствую, что это не ваш полный сценарий, и есть причина, по которой вы звоните sem from parallel.

Первое, что меня поражает, это то, что вы дважды перенаправляете стандартный вывод:

sem [...] >> sweep_srcq.csv | cat

Хотите добавить стандартный вывод к .csv?Или вы хотите, чтобы его отправили на cat?Если вы хотите и то и другое, вам следует вместо этого использовать tee -a.

Ваша проблема может заключаться в том, что серверы интерпретируют эту строку по-разному, и что остановленный сервер запускает cat, который читает с вашей клавиатуры.

...