Definir limite no tamanho do arquivo em todo o sistema

0

Estou tentando definir o limite de 10 GB em todo o sistema. Quando ulimit -f é executado, recebo de volta unlimited.

Quando ulimit -a é executado, vejo que as unidades do tamanho do arquivo são blocks . Como isso se converte em bytes?

    
por MadPhysicist 18.12.2017 / 19:23

2 respostas

1

No Bash, por padrão 1024 bytes, mas 512 bytes no modo POSIX ( manual ):

If no option is given, then -f is assumed. Values are in 1024-byte increments, except [some others] and, when in POSIX Mode (see Bash POSIX Mode), -c and -f, which are in 512-byte increments.

(POSIX, é claro, exige blocos de 512 bytes .)

$ bash -c 'ulimit -Sf 1000; 
    head -c1024000 < /dev/zero > /tmp/test && echo ok;
    echo x >> /tmp/test && echo ok'
ok
File size limit exceeded
    
por 18.12.2017 / 20:45
-1

Você pode verificar /proc/partitions para ver o número de blocos em uma determinada partição e usar lsblk ou df para verificar o tamanho da partição em bytes. O número de bytes separados pelos blocos fornecerá o tamanho de bytes de um bloco.

Por exemplo, na minha área de trabalho:

$ cat /proc/partitions
major minor  #blocks  name

   8        0  312571224 sda
   8        1  308392960 sda1
   8        2          1 sda2
   8        5    4175872 sda5
  11        0      19930 sr0
   8       16  244198584 sdb
km0@mkdisplay:~$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 298.1G  0 disk
├─sda1   8:1    0 294.1G  0 part /
├─sda2   8:2    0     1K  0 part
└─sda5   8:5    0     4G  0 part [SWAP]
sdb      8:16   0 232.9G  0 disk
sr0     11:0    1  19.5M  0 rom
$ python
Python 2.7.13 |Anaconda, Inc.| (default, Sep 22 2017, 00:47:24)
[GCC 7.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 298.1*1024*1024*1024/312571224.
1024.03040701661
    
por 18.12.2017 / 20:47