salida del programa de cola al archivo en Linux

salida del programa de cola al archivo en Linux

Sé que podemos usar el siguiente formato para redirigir la salida de la pantalla a un archivo:

$ your_program > /tmp/output.txt

Sin embargo, cuando utilicé el siguiente comando, dice"-bash: /home/user/errors.txt: Permiso denegado"

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

¿Puedo saber cómo hacer que funcione esta salida? El ~/errors.txt no existe. ¿Necesito crear este archivo txt primero antes de usar el comando de redirección?

Respuesta1

Detrás de la tubería, el sudo no funciona. No sé por qué no puedes escribir en tu casa. ¿Quizás el archivo pertenece al root?

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

Quizás necesites un usuario diferente detrás de la tubería. Por supuesto, no necesita un archivo preexistente.

Respuesta2

Cuando escribe sudo somecommand > ~/errors.txt, el shell que llama sudo(y se ejecuta como usted) es el que realiza la redirección y abre ~/errors.txt. VerRedirigir stdout a un archivo en el que no tienes permiso de escritura. Generalmente el problema en ese caso es que desea que root escriba en el archivo; consulte la pregunta vinculada para conocer formas de hacer esto.

Aquí, es extraño que no puedas escribir en un archivo en tu directorio de inicio. Lo más probable es que previamente hayas guardado algún resultado como root en /home/user/errors.txt, y ese archivo ahora exista y pertenezca a root. Elimine el archivo (puede hacerlo siempre que tenga permiso de escritura /home/usery luego podrá crearlo como su usuario).

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

Si el archivo realmente no existe, entonces no tienes permiso de escritura en tu directorio de inicio. Si bien es técnicamente posible y, en ocasiones, útil para algunos usuarios restringidos, es muy inusual.

información relacionada