Comment limiter la taille max d'un fichier ?

Comment limiter la taille max d'un fichier ? - Installation - Linux et OS Alternatifs

Marsh Posté le 15-05-2003 à 09:37:00    

Hello,  
Ca fait 2 ou 3 fois qu'on (au boulot) sature l'espace disque avec des process pas killés en partant le soir. Existe-t-il un moyen simple (config dans /proc par ex) pour limiter la taille max des fichiers, sans passer par la gestion des quotas utilisateurs si possible. ;)  
Merci les gens  :hello:
 
edit précision :  
redhat 7.3 noyau 2.4.18-3  
partition en question :  
/dev/hda4          1355      3904  20482875   83  Linux


Message édité par zerod le 15-05-2003 à 09:39:14
Reply

Marsh Posté le 15-05-2003 à 09:37:00   

Reply

Marsh Posté le 15-05-2003 à 11:10:46    

Et un coup de logrotate ça marcherait pas ? C'est quoi tes fichiers en  question ?

Reply

Marsh Posté le 15-05-2003 à 11:23:16    

des sorties log toutes cons, mais parfois on oublie de tuer un daemon en partant et il continue à écrire  :pt1cable:

Reply

Marsh Posté le 15-05-2003 à 11:26:06    

Et t'as pas moyen
 - de faire logguer vers /dev/null ou pas du tout
 - de mettre un logrotate pour limiter la casse

Reply

Marsh Posté le 15-05-2003 à 11:56:08    

bein disons que c'est un peu le but du process de créer ce fichier, c'est une sortie si tu veux à part que des fois il continue à écrire alors qu'il devrait pas. Je sais pas si je me fais bien comprendre, mais les fichiers énormes sont d'habitude pas si gros que ca (qques dizaines voire centaines de meg) mais sont importants, fô pas les perdre  :non: (sauf que j'aimerai les limiter à par ex 800 - 900 Mo)


Message édité par zerod le 15-05-2003 à 11:56:39
Reply

Marsh Posté le 15-05-2003 à 11:57:04    

pourquoi tu compresses pas à la volée?

Reply

Marsh Posté le 15-05-2003 à 12:02:11    

sinon à telle heure quand tout le monde est parti, dans ta crontab, pan "killall processus"

Reply

Marsh Posté le 15-05-2003 à 12:06:22    

zerod a écrit :

fô pas les perdre  :non: (sauf que j'aimerai les limiter à par ex 800 - 900 Mo)

sinon (je trouve pas d'exe qui va bien), tu fais un programme qui ecrit dans un fichier au plus n octec
 
processus | auplus 1000000

Reply

Marsh Posté le 15-05-2003 à 13:13:47    

logrotate ca me parait parfait pour ça :)

Reply

Marsh Posté le 15-05-2003 à 13:14:14    

mouais c'est des idées mais je pesais qu'on pouvait limiter la taille max d'un fichier dans un fichier de conf comme on limite la taille des mémoires partagées et autres... Il me semble bien pourtant...

Reply

Marsh Posté le 15-05-2003 à 13:14:14   

Reply

Marsh Posté le 15-05-2003 à 13:17:44    

tu as la commande ulimit qui ressemble à ça.
 
c'est une commande du bash :
 

Citation :

ulimit [-SHacdflmnpstuv [limite]]
              fournit, sur les systèmes qui le  permettent,  un  mécanisme  de
              contrôle  des  ressources  disponibles pour le shell et pour les
              processus qu'il lance. La valeur de la limite peut être un  nom-
              bre (utilisant les unités particulières de la ressources), ou la
              valeur unlimited.  Les options H et S  précisent  si  la  limite
              doit être dure (Hard), ou souple (Soft). Une limite dure ne peut
              pas être augmentée une fois qu'elle a été positionnée. Une  lim-
              ite  souple  peut être augmentée jusqu'à la hauteur de la limite
              dure correspondante.  Par défaut, les limites fixées  sont  sou-
              ples.  Si la limite est omise, on affiche la valeur de la limite
              souple pour la  ressource  indiquée,  sauf  si  l'option  H  est
              fournie.  Quand plusieurs ressources sont indiquées, leurs noms,
              et leurs unités respectives sont affichés avant les valeurs. Les
              options sont interprétées ainsi :
              -a     affichage de toutes les limites actuelles
              -c     la taille maximale pour la création d'un fichier core
              -d     la taille maximale du segment de données d'un processus
              -f     la taille maximale d'un fichier créé par le shell
              -l     la taille maximale que l'on peut verrouiller en mémoire
              -m     la taille maximale de la partie résidente d'un processus
              -n     le nombre maximal de descripteurs de fichiers ouverts (la
                     plupart des systèmes ne permettent pas de modification)
              -p     La taille d'un tuyau (pipe) en blocs de 512 octets  (par-
                     fois non modifiable)
              -s     la taille maximale de la pile
              -t     la  durée maximale, en seconde, de temps CPU accordé à un
                     processus.
              -u     le nombre maximal de processus  autorisés  pour  un  seul
                     utilisateur
              -v     la quantité de mémoire virtuelle disponible pour le shell
                                                                                               
              Si une limite est fournie, la ressource  correspondante  recevra
              cette limite (l'option -a ne permet que l'affichage).  Si aucune
              option n'est indiquée, la ressource -f est prise par défaut. Les
              valeurs  s'expriment  en  kilo-octets,  sauf  pour  -t, ou elles
              s'expriment en secondes, -p, qui utilise des unités de blocs  de
              512  octets,  ainsi  que  -n  et  -u, qui n'ont pas d'unités. La
              valeur renvoyée est 0 sauf si une option illégale est  détectée,
              si  un  argument  non-numérique  autre  que unlimited est fourni
              comme limite, ou si une erreur se produit durant la modification
              de la limite.


Message édité par philou_a7 le 15-05-2003 à 13:18:34
Reply

Marsh Posté le 15-05-2003 à 13:19:59    

cool j'essaye cet aprem ;)  

Reply

Marsh Posté le 15-05-2003 à 13:22:09    

Mais si le fichier est créé par un processus sans passer par bash, ça va pas marcher.
 
Dans ce cas : 3 solutions = quota ou logrotate ou modifier le programme pour qu'il gère proprement ses logs lui même ;)

Reply

Marsh Posté le 15-05-2003 à 14:09:04    

ban ok sinon ya solution 4 bourrer le crane des utilisateurs pour qu'ils pensent à faire un ps avant de partir :lol:


Message édité par zerod le 15-05-2003 à 14:09:19
Reply

Marsh Posté le 15-05-2003 à 14:15:54    

Où comme qqun d'autre te l'a proposé avant : une tâche cron qui passe à 19h ou 20h (par exemple) quand y a plus personne et qui tue tous les processus d'une liste d'utilisateurs ;)

Reply

Marsh Posté le 15-05-2003 à 14:28:34    

non c'est pas trés faisable ca, ya effectivement des tests longue durée qui sont succeptibles de durer des nuits entière et faut pas les killer, non vraiment c'est du cas par cas donc la seule soluce c'était la limite en dur.  
Je suis suis pourtant quasiement sur de l'avoir vu ce truc  :(

Reply

Marsh Posté le 15-05-2003 à 16:57:30    

et le coup du pipe, c'est pas faisable?

Reply

Marsh Posté le 15-05-2003 à 17:28:59    

si certainement mais ca met à contribution les utilisateurs, donc on introduit le facteur "merde j'ai oublié de mettre le pipe" équivelent au : "merde j'ai pas vérifié mes process avant de partir" :lol:

Reply

Marsh Posté le 15-05-2003 à 17:29:52    

vous etes sur que la commande ulimit n'affecte que les programmes lancés par bash ? Parceque ça fait exactement ce qu'il cherche.
 
Faudrait que tu testes à la limite

Reply

Marsh Posté le 15-05-2003 à 18:25:48    

ok je verrai ca demain

Reply

Marsh Posté le 26-05-2003 à 02:33:30    

Je sais pas si t'as trouvé une solution depuis le temps, mais je suis tombé par hasard sur le fichier /etc/limits, qui détient aparament les infos dont t'as besoin (man limits)
Maintenant, je sais pas du tout d'où ça sort, donc c'est pas sur que tu l'aies aussi.

Reply

Marsh Posté le 26-05-2003 à 09:23:08    

je regarderai merci, je suis en congés et sous win là  :ange:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed