Intereting Posts

выход хвостовой программы в файл в Linux

Я знаю, что мы можем использовать ниже формат для перенаправления вывода экрана в файл:

$ your_program > /tmp/output.txt 

Однако, когда я использовал команду ниже, он говорит : «-bash: /home/user/errors.txt: Permission denied»

 sudo tail /var/log/apache2/error.log > ~/errors.txt 

Могу ли я узнать, как это сделать? ~ / Errors.txt не существует. Мне нужно создать этот файл txt прежде, чем я буду использовать команду redirect?

Судя по трубе, судо не работает. Я не знаю, почему вы не можете писать в свой дом – возможно, файл принадлежит root?

  sudo tail /var/log/apache2/error.log | sudo tee ~/errors.txt 

Возможно, вам нужен другой пользователь за трубой. Конечно, вам не нужен существующий файл.

Когда вы пишете sudo somecommand > ~/errors.txt , оболочка, вызывающая sudo (и работающая как вы), является той, которая выполняет перенаправление и открывает ~/errors.txt . См. « Перенаправление stdout» в файл, на который у вас нет разрешения на запись . Обычно проблема в том, что вы хотите, чтобы root записывал файл; см. связанный вопрос о способах этого.

Здесь странно, что вы не можете писать в файл в своем домашнем каталоге. Скорее всего, вы ранее сохранили некоторый вывод с правами root в /home/user/errors.txt , и этот файл теперь существует и принадлежит root. Удалите файл (вы можете это сделать, если у вас есть разрешение на запись на /home/user , а затем вы сможете создать его как своего пользователя.

 rm ~/errors.txt sudo tail /var/log/apache2/error.log > ~/errors.txt 

Если файл действительно не существует, то у вас нет разрешения на запись в вашем домашнем каталоге. Хотя это технически возможно и на самом деле иногда полезно для некоторых пользователей с ограниченным доступом, это очень необычно.