Невозможно перенаправить стандартную ошибку openmpi в csh в файл

Я прочитал этот вопрос и ответ - Перенаправить stderr в stdout, но ничего, кажется, не работает, чтобы перехватить ошибку программного обеспечения под названием OpenMPI на Ubuntu 16.04 LTS.

У меня есть команды OpenMPI в сценарии оболочки, набирая

mpirun -np 4 command 

и затем в командной строке я набираю

job_script >& logs 

Это захватывает ошибки прикладного программного обеспечения и вывод, но не захватывает ошибки OpenMPI, которые бросает сценарий. Как мне перехватить ошибки OpenMPI, так как сейчас они уходят в стандартную ошибку?

0
15.06.2017, 01:36
2 ответа

Оператор >&перенаправляет стандартный вывод ошибок и стандартный вывод в одно и то же место назначения. Перенаправление стандартных ошибок — это одна из самых известных вещей, которые не может сделать csh , поэтому, если вы хотите сделать это, ответ будет таким: это невозможно. (Конечно, это возможно — но только при использовании другой программы, такой как sh. )Однако вы хотите перенаправлять stdout так же, как и stderr, и >&делает именно это.

Если job_script >& logsвыдает какие-то выходные данные, значит, приложение записывает напрямую в терминал. Вы не можете захватить это с перенаправлением. Вы можете использовать команду scriptдля регистрации всего, включая вывод терминала, в файл.

script -c 'job_script' logs >/dev/null

При этом на дворе 2017 год. Прошло около 15 лет с тех пор, как (t )csh имел какое-либо преимущество перед bash в интерактивном использовании, около 25 лет перед zsh, а csh никогда не умел писать сценарии. Это больше, чем время, чтобы уйти в отставку.

1
28.01.2020, 02:45

В командной строке cshellсделайте это, чтобы разделить потоки stdout/stderr:

( job_script > stdout.log ) >& stderr.log
0
28.01.2020, 02:45

Теги

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