printf, перенаправление, crontab

У меня возникли проблемы с перенаправлением операторов C printf в файл с программой, запущенной как root.

У меня есть программа с несколькими информационными заявлениями printf и другими библиотеками, которые печатают ошибки через stderr. Я хотел бы записать их в файл. Если я запускаю программу из командной строки, я могу видеть сообщения stderr и stdout.

sudo ./myprogram

Если я попытаюсь перенаправить, так же,

sudo ./myprogram >> log_file 2>&1

Файл log_ содержит только stderr и stdout исчезает.

Я подозреваю, что проблема связана с тем, что пользователь root не подключен к stdout, но я не нашел решения.

Моя конечная цель - запустить эту программу при запуске системы с правами root, при записи stderr и stdout в файл log_file. Я пытаюсь использовать crontab,

 sudo crontab -e

и добавляет строку,

@reboot bin/myprogram >> log_file 2>&1

Это генерирует сообщения stderr, но stdout исчезает, как и в командной строке. [!d8 ]

Любая помощь приветствуется, спасибо!

Edits & amp; Обновления: Тестирование сегодня утром, перенаправление ведет себя так же без sudo. Типичный оператор printf выглядит так:

printf("info: passed safety check\n");

Я использую настройку по умолчанию для ubuntu 14.04 на процессоре ARM, поэтому я считаю, что использую bash. Я подтвердил,

echo $SHELL

производит

/bin/bash
1
задан 30 July 2014 в 18:43

1 ответ

TLDP HowTo имеет этот хороший синтаксис для перенаправления как stdout, так и stderr:

  @reboot /path/to/program &> /path/to/log

HowTo говорит, что это иногда подходит для записей cron.

0
ответ дан 24 May 2018 в 05:09
  • 1
    У Cron нет @redirect, я пробовал это. @reboot /path/to/program &> /path/to/log, и он создал stderr в журнале, но не stdout – user2977486 30 July 2014 в 18:34
  • 2
    @ user2977486 помогает ли обратное перенаправление? Первый stderr для файла, затем stdin, чтобы ошибиться? [F1]? – muru 30 July 2014 в 18:43
  • 3
    тот же результат, это приводит к сообщениям об ошибках, но нет сообщений printf в журнале – user2977486 30 July 2014 в 18:45
  • 4
    @ user2977486 И просто перенаправление stdout, оставив stderr нетронутым? – muru 30 July 2014 в 18:46

Другие вопросы по тегам:

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