nohup и sed, перенаправляя stderr и stdout - PullRequest
1 голос
/ 08 декабря 2011

На моем сервере nohup sleep 1 > nohup.out & не выдает справочного сообщения.Хорошо.
Запустив ту же команду на моем ноутбуке, я получаю: nohup: ignoring input and redirecting stderr to stdout.Хотя команда все еще выполняется и завершается правильно, я не понимаю, почему существует разница в сообщении этого сообщения между двумя моими машинами.К счастью, однако, я могу решить эту проблему на своем ноутбуке, просто перенаправив stderr и stdout в файл: nohup sleep 1 &> nohup.out &

Итак ... я пытаюсь реализовать более полезную команду намой ноутбук:

На моем сервере нормально работает следующее, и сообщений не сообщается:
nohup ls -1 *.txt | sed -e "s%\(.*\)%/home/user/scripts/script.pl -find \1 %" | sh > nohup.out &

Эта строка кода "nohups" передает по конвейеру список файлов в sed, гдеони последовательно запускаются через script.pl и выполняются в оболочке.script.pl печатает данные в несколько файлов, а также печатает некоторую информацию на стандартный вывод.Я фиксирую эту информацию, записывая ее в файл с именем nohup.out

Теперь, когда я запускаю эту однострочную версию на своем ноутбуке, я получаю nohup: ignoring input and redirecting stderr to stdout.Это ожидается (но по неизвестным мне причинам).Но когда я изменяю строку для перенаправления stderr и stdout:
nohup ls -1 *.txt | sed -e "s%\(.*\)%/home/user/scripts/script.pl -find \1 %" | sh &> nohup.out &

я все равно получаю сообщение nohup: ignoring input and redirecting stderr to stdout

Как я могу исправить свою однострочную работу так, чтобы она работалана моем ноутбуке без получения сообщения?

1 Ответ

10 голосов
/ 08 декабря 2011

Я могу вам помочь:

nohup ls -1 *.txt 2>/dev/null | .....

Причина в том, что nohup выдает предупреждающее сообщение для stderr, поэтому направление stderr в никуда 2>/dev/null бросает его.

...