Я пытаюсь захватить вывод команды Linux needrestart, но безуспешно...
После интенсивного поиска в Google я ожидаю, что сработает следующее:
root@NASLG2:/home/erik# needrestart 2> /home/erik/needrestartoutput.txt
Но /home/erik/needrestartoutput.txt остаётся пустым...
Есть предположения?
(Моя цель — проверить, содержит ли вывод needrestart подстроку Service restarts being deferred:.)
Редактировать:
Следующие действия также не влияют на needrerstartoutput.txt:
root@NASLG2:/home/erik# needrestart > /home/erik/needrestartoutput.txt
Решение:
needrestart -v > /home/erik/needrestartoutput.txt
Еще немного информации:
На самом деле я собирался создать это:
#!/bin/bash
NEEDRESTART=$(needrestart -v)
STRINGTOSEARCH = "Service restarts being deferred"
if [[ "$NEEDRESTART" =~ "$STRINGTOSEARCH" ]]
then
reboot
fi
Вышеупомянутый вопрос возник, потому что я хотел увидеть вывод в файле, поскольку мне не удалось получить его как переменную. Но сам файл мне не нужен.
Тот же (не) результат...
Вы видите вывод на терминале вместо файла?
Если вы не видите вывод на терминале или в файле, значит, он просто ничего не печатает. Попробуйте использовать -v для подробного вывода.
needrestart -v > /home/erik/needrestartoutput.txt сделал свое дело!
Некоторые программы генерируют разные выходные данные по умолчанию в зависимости от того, записывают ли они в терминал или в файл/канал. Кажется, needrestart именно такой.
Как я могу пометить этот вопрос как решенный...?





Судя по всему, needrestart не производит вывод по умолчанию, когда его вывод перенаправляется. Добавьте опцию -v для подробного вывода.
needrestart -v > filename
Вы записываете в файл вывод ошибки, а не стандартный вывод. Это то что ты хочешь?
stdoutпишется с помощью>, а не2>.