Vous n'êtes pas identifié(e).
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/ )
Je veux bien une aide pour comprendre, car je crois que je ne saisis ni la commande ni la réponse
- "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
merci d'avance
Ed
Dernière modification par Eidolon (02-04-2017 20: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
- "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 ?
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 :
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 04:05:16)
Hors ligne
Ton mot de passe sera demandé
Ensuite tu pourras vider ton fichier de log
Dernière modification par IceF0x (02-04-2017 11:04:16)
Hors ligne
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
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.
- "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 :
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 à :
On peut le faire en lançant un sous-shell qui va exécuter la redirection :
sudo su
L'usage de su est superflu avec sudo. sudo -s ou -i pour lancer un shell root avec sudo.
Il vaut mieux montrer que raconter.
Hors ligne
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.
Hors ligne
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 )
sudo sh -c ":>error.log"
parfait ! ca a fonctionné
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
[mode aéré]
Hors ligne
ni dans mon
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
[mode aéré]
Hors ligne