xterm
не пишет в стандартный вывод;скорее он отображает вывод любой команды, которую он вызывает в своем окне.Вам нужно перенаправить вывод ProgramOne
, а не вывод xterm
.
И что-то, чего я не заметил, когда изначально писал этот ответ: ваше перенаправление неверно.Вы передаете /tmp/logs/p1.txt
в качестве аргумента xterm
.2>&1
перенаправляет stderr в stdout, но не принимает аргумент имени файла.(Да, вы можете смешивать перенаправления с аргументами программы. Например, echo >hello.out hello
будет записывать hello
в hello.out
)
Например, изменить
xterm -e ProgramOne progone.config 2>&1 /tmp/logs/p1.txt &
на
xterm -e 'ProgramOne progone.config >/tmp/logs/p1.txt 2>&1' &
(я предполагаю, что вы хотите отправить ProgramOne
s stdout и stderr на tmp/logs/p1.txt
.)
(Вы также можете указать xterm
записать его вывод в файл, используя опцию -l
, но это может быть отключено, и вывод может включать форматирование символов, которые вы, вероятно, не хотите.)