QUOTACTL(2) | Linux Programmer's Manual | QUOTACTL(2) |
이름¶
quotactl - 디스크 분할을 다룬다
사용법¶
#include <sys/types.h>
#include <sys/quota.h>
int quotactl (int cmd, const char *special, int id , caddr_t addr);
#include <linux/unistd.h>
_syscall4(int, quotactl, int, cmd, const char *, special , int, id, caddr_t, addr);
설명¶
quota system은 각각의 사용자나 그룹을 위해 주어진 파일 시스템상에서 사용할 수 있는 디스크 공간의 양을 soft limit나 hard limit로 묶어주는 것이다. hard limit는 연결될 수 없다. soft limit는 연결될 수 있다. 하지만 주의가 필요하다. 게다가, 덧붙여서 사용자는 디폴트 상태에서 한번에 일주일 이상 soft limit 상에 있을 수 없다. 일주일 후에는 hard limit로 계산된다.
quotactl 시스템 호출은 이 quota를 다룬다. 이것은 첫번째 독립변수는 QCMD(subcmd,type) 의 형태이다. type 은 USRQUOTA 나 GRPQUOTA (각각 사용자 quota와 그룹 quota)이고, subcmd 는 아래를 참조하자.
두번째 독립변수 special 는 quota에 적용되는 특별한 장치이다. 반드시 마운트 시켜야 한다.
세번째 독립변수 id 는 이 quota가 적용되는 사용자나 그룹의 id이다.
네번째 독립변수 addr 는 명령어에 따른 데이터 구조의 주소이다.
subcmd 는
- Q_QUOTAON
- 가능 quota중 하나 이다. addr 독립변수는 파일 시스템을 위한 quota를 포함하는 파일의 경로명이다.
- Q_QUOTAOFF
- quota 사용불가.
- Q_GETQUOTA
- limit과 현재 디스크 공간의 사용양을 가진다. addr 독립변수는 dqblk structure ( <sys/quota.h> 에 정의된 )를 가르키는 포인터이다.
- Q_SETQUOTA
- limit과 현재 사용양을 설정한다; addr 는 이전과 같이 쓰인다.
- Q_SETQLIM
- limit를 설정한다; addr 는 이전과 같이 쓰인다.
- Q_SETUSE
- 사용량 설정.
- Q_SYNC
- filesystems quotas의 Sync disk copy
- Q_GETSTATS
- 현제 상태를 가진다.
반환값¶
성공시, quotactl 는 0을 반환한다. 에러시, -1을 반환한다. errno 는 적절히 설정된다.
에러¶
- ENOPKG
- 커널이 quota 지원 없이 컴파일 되었다.The kernel was compiled without quota support.
- EFAULT
- 부적당한 addr 값.
- EINVAL
- type 이 알려지지 않은 type이다. 혹은, special 을 찾을 수 없다.
- ENOTBLK
- special 이 block special device이 아니다.
- ENODEV
- special 을 마운트 테이블에서 찾을 수 없다.
- EACCES
- quota가 일반 파일이 아니다.
- EIO
- quota 파일을 읽거나 쓸 수 없다.
- EMFILE
- 너무 많은 파일이 열려 있어서 quota파일을 열 수 없다.
- EBUSY
- Q_QUOTAON 이 요구되었지만, quota가 이미 사용되고 있다.
- ESRCH
- Q_GETQUOTA 나 Q_SETQUOTA 나 Q_SETUSE 난 Q_SETQLIM 가 quota가 가능한 파일시스템에게 요구되었다.
- EPERM
- The process was not root (for the file system), and Q_GETQUOTA 가 다른 이미 사용되고 있는 id 에게 요구되었다. 혹은 Q_GETSTATS 나 Q_SYNC 가 요구되었다.
호환¶
BSD
관련 항목¶
quota(1), getrlimit(2), setrlimit(2), ulimit(2), quotacheck(8), quotaon(8)
역자¶
ASPLINUX<man@asp-linux.co.kr>, 2000년 7월 29
14 April 1996 | Linux 1.3.88 |