Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 02-04-2017 04:14:57

Eidolon
Membre
Distrib. : Debian Jessie
Noyau : 3.16.0-4-amd64
(G)UI : gnome-3.14
Inscription : 31-10-2016

[Résolu] Comment effacer proprement des fichiers de log

Bonjour,

En parcourant la doc de deban je suis tombé sur ca : https://www.debian.org/doc/manuals/debi … e_contents

9.7.6. Effacer le contenu d’un fichier

Pour effacer le contenu d’un fichier comme, par exemple, un fichier journal, n’utilisez pas la commande rm(1) pour supprimer le fichier et recréer ensuite un fichier vide parce qu’on peut encore accéder au fichier dans l’intervalle entre les commandes. Voici la manière sûre d’effacer le contenu d’un fichier :

$ :>fichier_a_effacer



J'ai voulu tenter avec mon fichier error.log d'apache qui fait plusieurs centaine de Mo
(edit: je suis dans /var/log/apache2/ )

sudo :>error.log


-bash: error.log: Permission non accordée



Je veux bien une aide pour comprendre, car je crois que je ne saisis ni la commande ni la réponse big_smile
- "permission non accordé" pourquoi ? j'ai rien de mieux en stock que sudo pour monter en grade...
- apres un sudo j'ai l'habitude de mettre un programme (apt, nano...)... c'est bash mon programme ?
- il me semble que le chevron redirige dans error.log, mais il redirige quoi ? google n'est pas tres bavard quand on cherche de la ponctuation sad

merci d'avance
Ed

Dernière modification par Eidolon (02-04-2017 21:50:11)


La théorie, c’est quand on sait tout et que rien ne fonctionne.
La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi.
Ma Debian allie parfaitement la théorie et la pratique : rien ne fonctionne et je ne sais pourquoi

Hors ligne

#2 02-04-2017 04:29:40

otyugh
Membre
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016

Re : [Résolu] Comment effacer proprement des fichiers de log

Eidolon a écrit :

- "permission non accordé" pourquoi ? j'ai rien de mieux en stock que sudo pour monter en grade...


Aucune idée, essaye en vrai root voir (sudo su) ? Et de donner la nature du fichier "file fichier" et "ls -ld fichier" ?

- apres un sudo j'ai l'habitude de mettre un programme (apt, nano...)... c'est bash mon programme ?


man bash


COMMANDES INTERNES DE L'INTERPRÉTEUR
       : [arguments]
              Sans effet ; cette commande ne fait rien d'autre que  développer
              les  arguments  et effectuer toute redirection indiquée. Un code
              final de zéro est renvoyé.



plus loin

Redirection de sortie
       Une redirection de sortie conduit à l'ouverture en écriture du  fichier
       dont  le  nom résulte du développement du mot avec comme descripteur de
       fichier n ou en tant que sortie standard (descripteur de fichier 1)  si
       n  n'est  pas  indiqué.  Si  le fichier n'existe pas, il est créé. S'il
       existait déjà, sa taille est réduite à zéro.

       Le format général des redirections de sortie est le suivant :

              [n]>mot



Donc à priori :

#rien faire et appliquer la redirection... Qui cree/initalise un fichier à partir de l'entrée standard
:>fichier
# et vu que ":" renvoie <vide> quel que soit la commande qui précède ça rend équivalent à ce qui suit...

echo "">fichier

#mais en ce cas on peut encore plus facilement faire
>fichier
#et du coup je comprend pas pourquoi on fait pas juste ça. D'autant que ça fonctionne pareil avec dash, son ancêtre.
 


C'est le même effet trois fois : vider le contenu du fichier, ou le créer.
Pfiouh, c'est du détail, et je suis sûr que je manque une subtilité ou deux au passage de pourquoi ils conseillent une syntaxe plutôt que l'autre.

Dernière modification par otyugh (02-04-2017 05:05:16)


Agenda du libre : se faire dépanner/dépanner IRL ! Le libre n'est pas qu'un phénomène internet.
Framapad sur les balados : Emissions audio pro/amateur, votre radio sur-mesure !

Hors ligne

#3 02-04-2017 07:39:02

IceF0x
Membre
Distrib. : Jessie 8.7
Noyau : Linux 3.16.0-4-amd64
(G)UI : OpenBox
Inscription : 05-02-2012

Re : [Résolu] Comment effacer proprement des fichiers de log

Tu ne peux pas utiliser sudo pour une redirection, il faut être root.

su - # ou sudo -i



Ton mot de passe sera demandé

Mot de passe :
root@debian:~#



Ensuite tu pourras vider ton fichier de log

> fichier.log

Dernière modification par IceF0x (02-04-2017 12:04:16)


1475862269.gif

Hors ligne

#4 02-04-2017 07:39:10

kyodev
Banni(e)
Lieu : Lyon
Distrib. : Debian
Noyau : probablement stretch
(G)UI : variable selon l'humeur de naguam
Inscription : 18-08-2013

Re : [Résolu] Comment effacer proprement des fichiers de log

fichier error.log d'apache qui fait plusieurs centaine de Mo

et surtout faire tourner les logs apache avec logrotate:
man fr:
http://www.delafond.org/traducmanfr/man … ate.8.html
howto:
https://debian-handbook.info/browse/fr- … d-1.14.5.9
https://debian-administration.org/artic … _logrotate


[mode aéré]

Hors ligne

#5 02-04-2017 10:36:24

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Comment effacer proprement des fichiers de log

Pour effacer le contenu d’un fichier comme, par exemple, un fichier journal, n’utilisez pas la commande rm(1) pour supprimer le fichier et recréer ensuite un fichier vide parce qu’on peut encore accéder au fichier dans l’intervalle entre les commandes.


Cette explication me semble fumeuse. Je ne vois pas comment on pourrait "encore accéder au fichier dans l’intervalle entre les commandes", et, de toute façon, en quoi cela serait un problème. On pouvait y accéder avant le rm, alors si on y accède encore jusqu'à la recréation du fichier ça ne change pas grand-chose.

A mon avis, le problème est ailleurs : si le fichier était ouvert par un processus (typiquement le processus qui écrit dedans dans le cas d'un fichier journal), alors rm ne le supprime pas vraiment : il ne fait que supprimer l'entrée de répertoire et le rendre invisible dans l'arborescence. Le fichier en tant que tel (inode) et son contenu ne sera supprimé et l'espace qu'il occupait libéré que lorsque le processus l'aura refermé ou se sera terminé. Embêtant si le but est de libérer de l'espace disque rapidement.

Eidolon a écrit :

- "permission non accordé" pourquoi ? j'ai rien de mieux en stock que sudo pour monter en grade...
- apres un sudo j'ai l'habitude de mettre un programme (apt, nano...)... c'est bash mon programme ?


Oui, c'est bash. Dans cette commande, la redirection est exécutée par le bash qui exécute sudo, et non par sudo. Donc avec les privilèges de l'utilisateur qui lance la commande, et non root.
Je réécris la commande avec des parenthèses pour illustrer l'ordre d'exécution :

(sudo :)>error.log


Pour que la redirection se fasse dans le contexte root, il faudrait la mettre dans la commande passée à sudo pour que le résultat soit équivalent à :

sudo (:>error.log)


On peut le faire en lançant un sous-shell qui va exécuter la redirection :

sudo sh -c ":>error.log"


bloc à supprimer si la commande n’affiche rien


IceF0x a écrit :

sudo su


L'usage de su est superflu avec sudo. sudo -s ou -i pour lancer un shell root avec sudo.

Hors ligne

#6 02-04-2017 12:33:41

IceF0x
Membre
Distrib. : Jessie 8.7
Noyau : Linux 3.16.0-4-amd64
(G)UI : OpenBox
Inscription : 05-02-2012

Re : [Résolu] Comment effacer proprement des fichiers de log

raleur a écrit :

IceF0x a écrit :

sudo su


L'usage de su est superflu avec sudo. sudo -s ou -i pour lancer un shell root avec sudo.


Corrigé merci.


1475862269.gif

Hors ligne

#7 02-04-2017 21:47:57

Eidolon
Membre
Distrib. : Debian Jessie
Noyau : 3.16.0-4-amd64
(G)UI : gnome-3.14
Inscription : 31-10-2016

Re : [Résolu] Comment effacer proprement des fichiers de log

ok merci pour vos réponses

otyugh a écrit :

man bash


c'est vrai que j'ai pas l'habitude d'aller voir dans le man (ou plutot quand je cherche qqchose de précis - une option que je connais mais dont j'ai oublié la lettre - j'y vais, mais sinon il y a tellement de tout dedans que quand je débute sur une commande, ou que je cherche une explication je n'y trouve jamais rien hmm)

raleur a écrit :

sudo sh -c ":>error.log"


parfait ! ca a fonctionné wink

kyodev a écrit :

et surtout faire tourner les logs apache avec logrotate


je m'y suis un peu interessé, apparement je l'ai deja, de ce que j'ai trouvé dans la config pour apache2 il me change defichier tous les jours et il conserve 14 rotations
en fait j'essaye de me faire un cloud avec pydio, du coup toutes les erreurs que je fais avec mes bidouillages me créent plein de log,  ca ira mieux quand ca fonctionnera correctement en attendant ca me permet de purger les logs a la fin de mes séances


La théorie, c’est quand on sait tout et que rien ne fonctionne.
La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi.
Ma Debian allie parfaitement la théorie et la pratique : rien ne fonctionne et je ne sais pourquoi

Hors ligne

#8 02-04-2017 22:17:34

kyodev
Banni(e)
Lieu : Lyon
Distrib. : Debian
Noyau : probablement stretch
(G)UI : variable selon l'humeur de naguam
Inscription : 18-08-2013

Re : [Résolu] Comment effacer proprement des fichiers de log

logrotate est d'origine pour gérer les logs système, mais regardes la config pour apache, car il fait 'tourner" les logs périodiquement, les compresse, mais peut aussi (doit) plafonner le nombre de logs archivés. car plusieurs centaine de Mo de logs, c'est pas raisonnable, de quoi stopper le fonctionnement du système brutalement ...

[mode aéré]

Hors ligne

#9 03-04-2017 01:06:13

Eidolon
Membre
Distrib. : Debian Jessie
Noyau : 3.16.0-4-amd64
(G)UI : gnome-3.14
Inscription : 31-10-2016

Re : [Résolu] Comment effacer proprement des fichiers de log

en effet j'ai trouvé une option size pour limiter la taille des logs, mais je ne la vois ni dans mon

/etc/logrotate.conf


ni dans mon

/etc/logrotate.d/apache2



si je l'ajoute a mon logrotate.conf est ce qu'elle est appliquée automatiquement a toutes les configurations de logrotate.d qui ne l'ont pas définie ou je dois editer chacun des services a la main pour l'ajouter ?


La théorie, c’est quand on sait tout et que rien ne fonctionne.
La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi.
Ma Debian allie parfaitement la théorie et la pratique : rien ne fonctionne et je ne sais pourquoi

Hors ligne

#10 03-04-2017 11:34:26

kyodev
Banni(e)
Lieu : Lyon
Distrib. : Debian
Noyau : probablement stretch
(G)UI : variable selon l'humeur de naguam
Inscription : 18-08-2013

Re : [Résolu] Comment effacer proprement des fichiers de log

a mon avis, il faut (fallait) le faire manuellement, car j'ai déjà entendu parler de serveurs web en carafe, car logrotate n'avait pas été configuré, et le système se bloque

[mode aéré]

Hors ligne

Pied de page des forums