我试图将整个系统的文件限制设置为 10GB。当ulimit -f
运行时,我回来unlimited.
运行时ulimit -a
,我看到文件大小的单位是blocks
.这些如何转换为字节?
答案1
在 Bash 中,默认为 1024 字节,但 POSIX 模式下为 512 字节(手动的):
如果没有给出选项,则
-f
假定。值以 1024 字节为增量,除了[其他一些]和 ,在 POSIX 模式下(请参阅 Bash POSIX 模式),-c
和-f
,以 512 字节增量。
(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