システム全体のファイル制限を10 GBに設定しようとしています。走るとulimit -f
帰ってくるunlimited.
を実行すると、ulimit -a
ファイルサイズが単位で表示されますblocks
。これをバイトに変換するには?
答え1
Bashでは、デフォルトは1024バイトですが、POSIXモードでは512バイトです(手動):
オプションが与えられない場合は
-f
仮定されます。値は1024バイト単位で増加します。[その他]、POSIXモード(Bash POSIXモードを参照)、-c
512-f
バイトの増分。
(POSIXはもちろん、512バイトブロックが必要.)
$ bash -c 'ulimit -Sf 1000;
head -c1024000 < /dev/zero > /tmp/test && echo ok;
echo x >> /tmp/test && echo ok'
ok
File size limit exceeded
答え2
またはを使用して、/proc/partitions
特定のパーティションのブロック数を確認し、パーティションのサイズをバイト単位で確認できます。ブロックで割ったバイト数は、ブロックのバイトサイズを提供します。lsblk
df
たとえば、私のデスクトップでは次のようになります。
$ 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