시스템관리-Disk Quota와 스케줄링
1. Disk Quota
(1) 설명: 사용자들의 계정 용량을 제한할 경우에 사용한다. 그룹단위로도 용량을 제한할 수 있으며
웹호스팅 서비스를 하는 경우에 유용하다. 보통 블록단위의 용량제한과 inode의 갯수를 제
한한다.
(2) 관련명령어
1) quotacheck
ㄱ. 설명: 디스크를 사용하고 있는 파일 시스템을 체크하여 quota기록파일(quota.user 또는
quota.group)을 가장 최근의 상태로 업데이트 시키는 명령이다.
ㄴ. 사용법
quotacheck [option] 디렉토리명
ㄷ. option
-a : 모든 그룹과 사용자에 대한 quota를 체크한다.
-m : 읽기 전용 모드 등의 이유로 마운트를 하지 못할 경우 강제로 체크할 때 사용한다.
-f : 쿼터파일 초기생성시 잘 인식하지 못하는 경우 강제로 인식시킬 때 사용한다.
ㄹ. 사용예
a. [root@www /root]# quotacheck /home
=> 주의할점은 이 명령을 수행할 경우에는 파일의 손상의 위험이 있으므로 quotaoff상태
에서 해야한다.
b [root@www /root]# quotacheck -m /home
=> 강제로 /home을 체크한다.
2) edquota
ㄱ. 설명: 사용자에게 쿼타를 할당할때 사용한다.
ㄴ. 사용법
edquota [option]
ㄷ. option
-t : soft limit를 초과한 후부터 적용되는 시간제한을 설정하는 옵션이다.
-p : quota를 다른 사용자에게도 동일한 설정으로 적용한다.
-g : 그룹의 quota를 설정한다.
ㄹ. 사용예
a. [root@www /root]# edquota posein
=> posein이라는 사용자의 쿼터를 할당한다. 그러면 기본편집기(vi)가 실행되면서
다음과 같이 나온다.
Disk quotas for user posein (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/hda8 259556 0 0 248 0 0
=> (설명)
Filesystem : Quota가 설정되어 있는 파티션을 나타낸다.
Blocks : 현재 사용중인 용량을 나타낸다.
soft : 보통의 경우에는 사용할 수 있는 최대 용량을 나타낸다. 유예기간(grace
period)이 설정되어 있는 경우에는 사용용량 초과에 대한 경고를 받는 경계선
으로 사용된다.
hard : 유예기간이 설정되어 있는 경우에 작동하는 것으로 사용자가 사용할 수 있는
최대 용량을 의미한다.
inodes : 현재 사용중인 inode를 나타낸다.
b. [root@www /home]# edquota -t
=> 실행시키면 vi편집기가 실행되면서 다음과 같이 나타난다. 여기서 날짜를 변경하면
된다.
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/hda8 7days 7days
=> (설명)
Filesystme : Quota가 설정된 파일시스템을 나타낸다.
Block grace period : Block의 soft제한을 초과했을 경우의 유예기간이다.
Inode grace period : Inode의 soft제한을 초과했을 경우의 유예기간이다.
c. [root@www /home]# edquota -p posein prehee
=> prehee이라는 사용자의 설정을 posein의 설정과 동일하게 만든다.
3) quotaon
ㄱ. 설명: quota를 시작하기 위해 실행하는 명령이다.
ㄴ. 사용법
quotaon 디렉토리명
ㄷ. 사용예
[root@www /root]# quotaon /home
4) quotooff
ㄱ. 설명: quota를 종료시킨다.
ㄴ. 사용법
quota 디렉토리명
ㄷ. 사용예
[root@www /root]# quotaoff /home
5) repquota
ㄱ. 설명: quota의 설정 상황을 보여준다.
ㄴ. 사용법
repquota [option] 디렉토리명
ㄷ. option
-a : quota설정이 되어 있는 모든 파티션의 quota상태를 보여준다. 이 옵션을 사용하면 디렉
토리명을 지정할 필요는 없다.
-g : 그룹에 대한 quota상태를 보여준다.
-u : 사용자에 대한 quota상태를 보여준다.(기본값으로 설정되어 있음)
-v : 모든 quota상태를 보여준다.
ㄹ. 사용예
a. [root@www /home]# repquota /home
*** Report for user quotas on device /dev/hda6 (/home)
Block grace time: 7 days; Inode grace time: 7 days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 19372 0 0 231 0 0
nobody -- 28 0 0 6 0 0
posein -- 11608 50000 55000 398 0 0
b. [root@www /home]# repquota -g /home
=> 그룹단위로 쿼타상태를 보여준다.
6) quota
ㄱ. 설명: 자신의 쿼타 용량 상태를 보여준다.
ㄴ. 사용법
quota
ㄷ. 사용예
[posein@www posein]$ quota
Disk quotas for user posein(500):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda6 11608 50000 55000 398 0 0
7) convertquota
ㄱ.설명: 쿼타설정과 관련된 quota.user, quota.group을 새로운 형태의 aquota.user, aquota.g
roup파일 포맷으로 변경해준다. 레드햇 리눅스 2.4이상의 파일시스템에서 적용된다. 새
로운 파일 포맷은 32bit uids/gids를 지원하며, root권한으로 quota를 설정해야 하며,
bytes단위로 사용공간을 체크한다.
ㄴ. 사용법
convertquota [option] 디렉토리명
ㄷ. options
a. -u : 사용자 쿼타파일(quota.user)을 바꾼다. 기본값이다.
b. -g : 그룹의 쿼타파일(quota.group)을 바꾼다.
ㄹ. 사용예
a. [root@www /]# convertquota /home
=> 사용자 쿼타파일인 qutoa.user를 aquota.user 파일로 전환한다.
b. [root@www /]# convertquota -g /home
=> 그룹 쿼타파일인 qutoa.group를 aquota.group파일로 전환한다.
(3) 설정하기
1) /etc/fstab 설정
ㄱ. 설명: 만약 설정하려는 파티션이 /home이라면 보통 다음과 같이 설정되어 있다.
/dev/hda6 /home ext2 defaults 1 2
여기서 네번째필드에 usrquota라고 설정한다.
ㄴ. 예
/dev/hda6 /home ext2 defaults,usrquota 1 2
ㄷ. 참고: /etc/fstab파일을 변경했을 경우에는 시스템을 재부팅하거나 다시 마운트해야 한다.
mount -o remount /home
2) quota.user 파일 생성
ㄱ. 설명: 사용자의 쿼타정보를 가지고 있는 파일이 quota.user인데 이 파일을 생성해야 한다.
보통 설치하고자 하는 파티션의 최상위에 만든다.
ㄴ. 예
[root@www /root]# touch /home/quota.user
[root@www /root]# chmod 600 /home/quota.user
=> /home에 쿼터를 설정하려면 /home디렉토리에 만들며, root권한자만이 읽고 쓰기가
가능하도록 설정한다.
3) quotacheck 디렉토리
ㄱ. 설명: 설정된 값을 읽어들여서 반영한다.
ㄴ. 예
[root@www /root]# quotacheck -mf /home
4) convertquota 명령으로 aquota.user로 변환하기
ㄱ. 설명: 예전에 사용하던 quota.user파일을 최신의 aquota.user파일로 convert해야 한다.
convertquota명령은 커널 2.4이상의 시스템에서 적용된다.
ㄴ. 예
[root@www home]# convertquota -u /home
5) 사용자에 대한 쿼터설정
ㄱ. 설명: 제한하려는 용량을 설정한다. 옆에 나온 단위를 참조하여 값만 입력한다.
ㄴ. 예
[root@www /root]# edquota posein
6) quota를 시작한다.
[root@www /root]# quotaon /home
(4) 테스트
1) 쿼터확인
[root@www home]# repquota /home
*** Report for user quotas on device /dev/hda8
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 96 0 0 8 0 0
nobody -- 32 0 0 10 0 0
prehee -- 64 2000 3000 15 0 0
=> soft제한이 2M정도임을 알 수 있다.
2) 용량을 초과한뒤의 쿼타확인
[root@www home]# repquota -a
*** Report for user quotas on device /dev/hda8
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 112 0 0 9 0 0
nobody -- 32 0 0 10 0 0
prehee +- 2916 2000 3000 6days 16 0 0
=> 앞쪽에 -- => +- 기호로 바뀌었다. 즉 Block limits의 soft한도가 넘었다는 뜻이다. grace
에 6days라는 값이 표기되었다는 것은 6일동안은 soft한도를 넘어 사용을 해도 사용가능하다
는 뜻이다. 하지만 6일 이후에는 soft한도내로 용량을 줄여야지만 새로운 데이터를 올릴 수
있게 된다. 그러나 절대로 hard 한도는 넘을 수 없다. 이 한도를 넘게 되면 데이터를 저장할
수 없다는 메시지가 출력된다.
(5) 그룹쿼타 설정하기
1) /etc/fstab 설정
ㄱ. 설명: 만약 설정하려는 파티션이 /home이라면 보통 다음과 같이 설정되어 있다.
/dev/hda6 /home ext3 defaults 1 2
여기서 네번째필드에 grpquota라고 설정한다.
ㄴ. 예
/dev/hda6 /home ext3 defaults,grpquota 1 2
ㄷ. 참고: /etc/fstab파일을 변경했을 경우에는 시스템을 재부팅하거나 다시 마운트해야 한다.
mount -o remount /home
2) quota.group 파일 생성
ㄱ. 설명: 그룹의 쿼타정보를 가지고 있는 파일이 quota.group인데 이 파일을 생성해야 한다.
보통 설치하고자 하는 파티션의 최상위에 만든다.
ㄴ. 예
[root@www /root]# touch /home/quota.group
[root@www /root]# chmod 600 /home/quota.group
=> /home에 쿼터를 설정하려면 /home디렉토리에 만들며, root권한자만이 읽고 쓰기가
가능하도록 설정한다.
3) quotacheck 디렉토리
ㄱ. 설명: 설정된 값을 읽어들여서 반영한다.
ㄴ. 예
[root@www /root]# quotacheck -g -m /home
4) convertquota 명령으로 aquota.group로 변환하기
ㄱ. 설명: 예전에 사용하던 quota.group파일을 최신의 aquota.group파일로 convert해야 한다.
convertquota명령은 커널 2.4이상의 시스템에서 적용된다.
ㄴ. 예
[root@www home]# convertquota -g /home
5) 사용자에 대한 쿼터설정
ㄱ. 설명: 제한하려는 용량을 설정한다. 옆에 나온 단위를 참조하여 값만 입력한다.
ㄴ. 예
[root@www /root]# edquota -g terran
6) quota를 시작한다.
[root@www /root]# quotaon /home
7) quota의 확인
[root@www /]# repquota -g /home
2. 스케줄링
(1) 개요: 스케줄링이란 특정한 시간에 특정한 작업을 행하게 하는 것이다. 보통 리눅스에는 cron
과 at를 이용한다.
(2) at
1) 설명: 지정한 시간에 원하는 명령을 실행될 수 있도록 해준다. atd데몬에 의하여 실행되고,
지정한 작업은 큐(queue)에 저장되며 저장된 작업들은 /var/spool/at 디렉토리 아래
파일로 저정된다. 보통 한번 실행되는 경우에 사용된다. 명령은 기본적으로 표준 입력
장치를 통해받으며, 입력의 종료는 ctrl+d를 누른다.
2) 사용법
at [opion] 시간
3) option
-q queue : 작업의 대기 큐를 지정한다. 사용할 수 있는 큐는 a-z, A-Z까지이다. 지정하지
않으면 기본큐로 a를 사용한다.
-c job : 작업 리스트를 출력한다.
-d : 작업을 삭제한다. (atrm과 같음)
-l : 큐에 있는 작업들을 보여준다. root인 경우에는 모든 작업들의 목록을 보여준다.
(atq와 같음)
-m : 실행한 결과를 메일로 통보해 준다.
시간 : 실행할 시간을 기록한다. 시간지정은 HHMM,HH:MM형태로 가능하고 am,pm으로 구분가능
하다. 날짜의 경우는 MMDDYY, MM/DD/YY, MM.DD.YY형태로 나타낸다. 또한 now, tomorrow,
noon같은 문자열도 사용가능하다.
-f 파일명 : 표준입력이 아닌 지시된 파일에서 작업을 읽어온다.
4) 사용예
ㄱ. [posein@www posein]$ at 1:40am tomorrow
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
at> ls -al > list.txt
at> // 중단하려면 여기에서 ctrl+d키를 누른다.
job 3 at 2002-06-13 01:40
ㄴ. [posein@www posein]$ at -l
4 2002-06-12 01:48 a posein
=> 현재 예약된 작업의 리스트를 보여준다.
ㄷ. [posein@www posein]$ at 7:00pm March 20
=> 3월20일 오후 7시에 작업을 예약한다
ㄹ. [posein@www posein]$ at now+3hours
=> 3시간 후에 작업을 예약한다.
ㅁ. [posein@www posein]$ at now + 5 minutes
=> 5분 뒤에 작업을 예약한다.
ㅂ. [posein@www posein]$ at midnight + 10 minutes
=> 자정에서 10분뒤 즉, 00:10의 작업을 예약한다.
5) 관련명령어
ㄱ. atq
a. 설명: 큐에 저장된 작업들을 보여주는 명령으로 at -l 실행결과와 같다. 작업번호와
작업이 실행된 예정 시간, 작업이 저장되어 있는 큐를 보여준다.
b. 사용법
atq
c. 사용예
[posein@www posein]$ atq
3 2002-06-12 01:40 a posein
ㄴ. atrm
a. 설명: 예약된 작업을 취소할 때 사용하는 명령으로 큐에서 해당 작업을 삭제한다. at -d
를 사용하는 것과 같다.
b. 사용법
atrm 작업번호
c. 사용예
[posein@www posein]$ atrm 4
6) at 사용자제한
ㄱ. 설명: at데몬을 사용할 수 있는 사용자를 제한할 수 있다. /etc/at.allow파일과
/etc/at.deny파일을 이용한다. /etc/at.allow파일에 등록하면 등록된 사용자만이
사용가능하다. /etc/at.allow파일이 있다면 이 파일에 명단이 있는 사용자만이
at명령을 사용할 수 있다. 이 파일이 없으면 /etc/at.deny파일을 찾는다. /etc/at.
deny파일에 목록이 있는 사용자는 at를 사용할 수 없다. 두 파일 모두 찾지 못하면
오로지 슈퍼 유저만이 사용가능하다. 또한 /etc/at.deny파일이 비어있으면 모든
사용자가 at명령을 사용할 수 있다.
ㄴ. 설정: 한 줄에 한 계정만 적는다.
[root@www /root]# cat /etc/at.allow
posein
prehee
(3) cron
1) 설명: 같은 작업을 주기적으로 반복할 수 있도록 해준다. 보통 /etc/rc.d/init.d/crond에
의해 실행된다. 설정은 /usr/bin/crontab명령어를 사용한다.
2) 관련명령어 및 파일
ㄱ. crontab
a. 설명: cron작업을 설정하는 명령어이다. 실행시키면 기본편집기인 vi가 실행된다.
b. 사용법
crontab [option] [파일명]
c. option
-l : 현재 crontab에 의해 설정된 내용을 출력한다.
-e : crontab의 내용을 작성하거나 수정한다.
-r : crontab의 내용을 삭제한다.
-u : root권한자가 해당사용자의 crontab파일을 다룰때 사용한다.
d. 사용예
1. [root@www /root]# crontab -l
no crontab for root
=> 작업의 목록을 보여준다.
2. [posein@www posein]$ crontab -r
=> 등록된 작업을 삭제한다.
3. [root@www /root]# crontab -e -u posein
=> posein이라는 사용자의 crontab을 작성하거나 수정한다.
4. [posein@www posein]$ crontab aaa
=> aaa라는 파일을 crontab으로 사용한다. 이 경우에는 미리 aaa파일을 crontab의
형식에 맞게 입력해놔야 한다.
e. crontab의 작업형식 : 5개의 날짜 필드와 1개의 명령필드로 구성되어 있다.
MM HH DD mm d command
(설명)
MM : 분(Minute)을 의미한다.(0~59까지 사용)
HH : 시(Hour)를 의미한다.(0~23까지 사용)
DD : 날짜(Day of Month)를 의미한다.(1~31까지 사용)
mm : 달(Month)을 의미한다.(1~12까지 사용)
d : 요일(Day of Week)을 의미한다.(0~7까지 사용, 0과 7은 일요일을 나타냄)
command : 실행할 작업을 명기한다.
(참고)
위 형식에서 시간을 나타내는 각 필드에서 와일드 카드 '*'를 사용할 수 있고 각각의
요일을 구분할 때','를 사용하고, 연일을 나타낼 때는 '-'를 사용한다. 즉 월요일과
수요일은 '1,3'으로 월요일부터 금요일까지는 '1-5'로 표시할 수 있다.
ㄴ. /etc/crontab
a. 설명: 시스템이 정기적인 작업이 수행될 수 있도록 기본적으로 설정되어 있는 파일이다.
b. 설정예
[root@www /etc]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
0-59/5 * * * * root /usr/bin/mrtg.sh /usr/lib/mrtg/mrtg.cfg
=> run-parts는 디렉토리 이하의 스크립트를 순차적으로 실행하는 명령어이다.
ㄷ. /etc/cron.allow : at과 마찬가지로 사용자를 제한할 때 사용한다.
ㄹ. /var/spool/cron 디렉토리 : 각각의 사용자가 등록한 crontab은 이 디렉토리아래에 각
사용자의 계정이름으로 저장된다.
3) 설정하기
ㄱ. crontab -e 명령을 내린다.
ㄴ. 해당형식에 맞게 입력한다.
예) 0 12 * * 1-5 /home/posein/aaa
=> 월요일부터 금요일까지 /home/posein/aaa라는 스크립트를 실행시킨다.
ㄷ. 설정예
1) 0 12 1 1-12/2 * /home/posein/bbb
=> 1월부터 12월까지 2개월마다 /home/posein/bbb라는 스크립트를 실행시킨다.
2) 0 10 * * 1 cat /root/notice | mail -s "Notice" posein@mybestone.com
=> 월요일 오전 10시에 notice라는 문서의 내용을 메일로 발송한다.
(1) 설명: 사용자들의 계정 용량을 제한할 경우에 사용한다. 그룹단위로도 용량을 제한할 수 있으며
웹호스팅 서비스를 하는 경우에 유용하다. 보통 블록단위의 용량제한과 inode의 갯수를 제
한한다.
(2) 관련명령어
1) quotacheck
ㄱ. 설명: 디스크를 사용하고 있는 파일 시스템을 체크하여 quota기록파일(quota.user 또는
quota.group)을 가장 최근의 상태로 업데이트 시키는 명령이다.
ㄴ. 사용법
quotacheck [option] 디렉토리명
ㄷ. option
-a : 모든 그룹과 사용자에 대한 quota를 체크한다.
-m : 읽기 전용 모드 등의 이유로 마운트를 하지 못할 경우 강제로 체크할 때 사용한다.
-f : 쿼터파일 초기생성시 잘 인식하지 못하는 경우 강제로 인식시킬 때 사용한다.
ㄹ. 사용예
a. [root@www /root]# quotacheck /home
=> 주의할점은 이 명령을 수행할 경우에는 파일의 손상의 위험이 있으므로 quotaoff상태
에서 해야한다.
b [root@www /root]# quotacheck -m /home
=> 강제로 /home을 체크한다.
2) edquota
ㄱ. 설명: 사용자에게 쿼타를 할당할때 사용한다.
ㄴ. 사용법
edquota [option]
ㄷ. option
-t : soft limit를 초과한 후부터 적용되는 시간제한을 설정하는 옵션이다.
-p : quota를 다른 사용자에게도 동일한 설정으로 적용한다.
-g : 그룹의 quota를 설정한다.
ㄹ. 사용예
a. [root@www /root]# edquota posein
=> posein이라는 사용자의 쿼터를 할당한다. 그러면 기본편집기(vi)가 실행되면서
다음과 같이 나온다.
Disk quotas for user posein (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/hda8 259556 0 0 248 0 0
=> (설명)
Filesystem : Quota가 설정되어 있는 파티션을 나타낸다.
Blocks : 현재 사용중인 용량을 나타낸다.
soft : 보통의 경우에는 사용할 수 있는 최대 용량을 나타낸다. 유예기간(grace
period)이 설정되어 있는 경우에는 사용용량 초과에 대한 경고를 받는 경계선
으로 사용된다.
hard : 유예기간이 설정되어 있는 경우에 작동하는 것으로 사용자가 사용할 수 있는
최대 용량을 의미한다.
inodes : 현재 사용중인 inode를 나타낸다.
b. [root@www /home]# edquota -t
=> 실행시키면 vi편집기가 실행되면서 다음과 같이 나타난다. 여기서 날짜를 변경하면
된다.
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem Block grace period Inode grace period
/dev/hda8 7days 7days
=> (설명)
Filesystme : Quota가 설정된 파일시스템을 나타낸다.
Block grace period : Block의 soft제한을 초과했을 경우의 유예기간이다.
Inode grace period : Inode의 soft제한을 초과했을 경우의 유예기간이다.
c. [root@www /home]# edquota -p posein prehee
=> prehee이라는 사용자의 설정을 posein의 설정과 동일하게 만든다.
3) quotaon
ㄱ. 설명: quota를 시작하기 위해 실행하는 명령이다.
ㄴ. 사용법
quotaon 디렉토리명
ㄷ. 사용예
[root@www /root]# quotaon /home
4) quotooff
ㄱ. 설명: quota를 종료시킨다.
ㄴ. 사용법
quota 디렉토리명
ㄷ. 사용예
[root@www /root]# quotaoff /home
5) repquota
ㄱ. 설명: quota의 설정 상황을 보여준다.
ㄴ. 사용법
repquota [option] 디렉토리명
ㄷ. option
-a : quota설정이 되어 있는 모든 파티션의 quota상태를 보여준다. 이 옵션을 사용하면 디렉
토리명을 지정할 필요는 없다.
-g : 그룹에 대한 quota상태를 보여준다.
-u : 사용자에 대한 quota상태를 보여준다.(기본값으로 설정되어 있음)
-v : 모든 quota상태를 보여준다.
ㄹ. 사용예
a. [root@www /home]# repquota /home
*** Report for user quotas on device /dev/hda6 (/home)
Block grace time: 7 days; Inode grace time: 7 days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 19372 0 0 231 0 0
nobody -- 28 0 0 6 0 0
posein -- 11608 50000 55000 398 0 0
b. [root@www /home]# repquota -g /home
=> 그룹단위로 쿼타상태를 보여준다.
6) quota
ㄱ. 설명: 자신의 쿼타 용량 상태를 보여준다.
ㄴ. 사용법
quota
ㄷ. 사용예
[posein@www posein]$ quota
Disk quotas for user posein(500):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda6 11608 50000 55000 398 0 0
7) convertquota
ㄱ.설명: 쿼타설정과 관련된 quota.user, quota.group을 새로운 형태의 aquota.user, aquota.g
roup파일 포맷으로 변경해준다. 레드햇 리눅스 2.4이상의 파일시스템에서 적용된다. 새
로운 파일 포맷은 32bit uids/gids를 지원하며, root권한으로 quota를 설정해야 하며,
bytes단위로 사용공간을 체크한다.
ㄴ. 사용법
convertquota [option] 디렉토리명
ㄷ. options
a. -u : 사용자 쿼타파일(quota.user)을 바꾼다. 기본값이다.
b. -g : 그룹의 쿼타파일(quota.group)을 바꾼다.
ㄹ. 사용예
a. [root@www /]# convertquota /home
=> 사용자 쿼타파일인 qutoa.user를 aquota.user 파일로 전환한다.
b. [root@www /]# convertquota -g /home
=> 그룹 쿼타파일인 qutoa.group를 aquota.group파일로 전환한다.
(3) 설정하기
1) /etc/fstab 설정
ㄱ. 설명: 만약 설정하려는 파티션이 /home이라면 보통 다음과 같이 설정되어 있다.
/dev/hda6 /home ext2 defaults 1 2
여기서 네번째필드에 usrquota라고 설정한다.
ㄴ. 예
/dev/hda6 /home ext2 defaults,usrquota 1 2
ㄷ. 참고: /etc/fstab파일을 변경했을 경우에는 시스템을 재부팅하거나 다시 마운트해야 한다.
mount -o remount /home
2) quota.user 파일 생성
ㄱ. 설명: 사용자의 쿼타정보를 가지고 있는 파일이 quota.user인데 이 파일을 생성해야 한다.
보통 설치하고자 하는 파티션의 최상위에 만든다.
ㄴ. 예
[root@www /root]# touch /home/quota.user
[root@www /root]# chmod 600 /home/quota.user
=> /home에 쿼터를 설정하려면 /home디렉토리에 만들며, root권한자만이 읽고 쓰기가
가능하도록 설정한다.
3) quotacheck 디렉토리
ㄱ. 설명: 설정된 값을 읽어들여서 반영한다.
ㄴ. 예
[root@www /root]# quotacheck -mf /home
4) convertquota 명령으로 aquota.user로 변환하기
ㄱ. 설명: 예전에 사용하던 quota.user파일을 최신의 aquota.user파일로 convert해야 한다.
convertquota명령은 커널 2.4이상의 시스템에서 적용된다.
ㄴ. 예
[root@www home]# convertquota -u /home
5) 사용자에 대한 쿼터설정
ㄱ. 설명: 제한하려는 용량을 설정한다. 옆에 나온 단위를 참조하여 값만 입력한다.
ㄴ. 예
[root@www /root]# edquota posein
6) quota를 시작한다.
[root@www /root]# quotaon /home
(4) 테스트
1) 쿼터확인
[root@www home]# repquota /home
*** Report for user quotas on device /dev/hda8
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 96 0 0 8 0 0
nobody -- 32 0 0 10 0 0
prehee -- 64 2000 3000 15 0 0
=> soft제한이 2M정도임을 알 수 있다.
2) 용량을 초과한뒤의 쿼타확인
[root@www home]# repquota -a
*** Report for user quotas on device /dev/hda8
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 112 0 0 9 0 0
nobody -- 32 0 0 10 0 0
prehee +- 2916 2000 3000 6days 16 0 0
=> 앞쪽에 -- => +- 기호로 바뀌었다. 즉 Block limits의 soft한도가 넘었다는 뜻이다. grace
에 6days라는 값이 표기되었다는 것은 6일동안은 soft한도를 넘어 사용을 해도 사용가능하다
는 뜻이다. 하지만 6일 이후에는 soft한도내로 용량을 줄여야지만 새로운 데이터를 올릴 수
있게 된다. 그러나 절대로 hard 한도는 넘을 수 없다. 이 한도를 넘게 되면 데이터를 저장할
수 없다는 메시지가 출력된다.
(5) 그룹쿼타 설정하기
1) /etc/fstab 설정
ㄱ. 설명: 만약 설정하려는 파티션이 /home이라면 보통 다음과 같이 설정되어 있다.
/dev/hda6 /home ext3 defaults 1 2
여기서 네번째필드에 grpquota라고 설정한다.
ㄴ. 예
/dev/hda6 /home ext3 defaults,grpquota 1 2
ㄷ. 참고: /etc/fstab파일을 변경했을 경우에는 시스템을 재부팅하거나 다시 마운트해야 한다.
mount -o remount /home
2) quota.group 파일 생성
ㄱ. 설명: 그룹의 쿼타정보를 가지고 있는 파일이 quota.group인데 이 파일을 생성해야 한다.
보통 설치하고자 하는 파티션의 최상위에 만든다.
ㄴ. 예
[root@www /root]# touch /home/quota.group
[root@www /root]# chmod 600 /home/quota.group
=> /home에 쿼터를 설정하려면 /home디렉토리에 만들며, root권한자만이 읽고 쓰기가
가능하도록 설정한다.
3) quotacheck 디렉토리
ㄱ. 설명: 설정된 값을 읽어들여서 반영한다.
ㄴ. 예
[root@www /root]# quotacheck -g -m /home
4) convertquota 명령으로 aquota.group로 변환하기
ㄱ. 설명: 예전에 사용하던 quota.group파일을 최신의 aquota.group파일로 convert해야 한다.
convertquota명령은 커널 2.4이상의 시스템에서 적용된다.
ㄴ. 예
[root@www home]# convertquota -g /home
5) 사용자에 대한 쿼터설정
ㄱ. 설명: 제한하려는 용량을 설정한다. 옆에 나온 단위를 참조하여 값만 입력한다.
ㄴ. 예
[root@www /root]# edquota -g terran
6) quota를 시작한다.
[root@www /root]# quotaon /home
7) quota의 확인
[root@www /]# repquota -g /home
2. 스케줄링
(1) 개요: 스케줄링이란 특정한 시간에 특정한 작업을 행하게 하는 것이다. 보통 리눅스에는 cron
과 at를 이용한다.
(2) at
1) 설명: 지정한 시간에 원하는 명령을 실행될 수 있도록 해준다. atd데몬에 의하여 실행되고,
지정한 작업은 큐(queue)에 저장되며 저장된 작업들은 /var/spool/at 디렉토리 아래
파일로 저정된다. 보통 한번 실행되는 경우에 사용된다. 명령은 기본적으로 표준 입력
장치를 통해받으며, 입력의 종료는 ctrl+d를 누른다.
2) 사용법
at [opion] 시간
3) option
-q queue : 작업의 대기 큐를 지정한다. 사용할 수 있는 큐는 a-z, A-Z까지이다. 지정하지
않으면 기본큐로 a를 사용한다.
-c job : 작업 리스트를 출력한다.
-d : 작업을 삭제한다. (atrm과 같음)
-l : 큐에 있는 작업들을 보여준다. root인 경우에는 모든 작업들의 목록을 보여준다.
(atq와 같음)
-m : 실행한 결과를 메일로 통보해 준다.
시간 : 실행할 시간을 기록한다. 시간지정은 HHMM,HH:MM형태로 가능하고 am,pm으로 구분가능
하다. 날짜의 경우는 MMDDYY, MM/DD/YY, MM.DD.YY형태로 나타낸다. 또한 now, tomorrow,
noon같은 문자열도 사용가능하다.
-f 파일명 : 표준입력이 아닌 지시된 파일에서 작업을 읽어온다.
4) 사용예
ㄱ. [posein@www posein]$ at 1:40am tomorrow
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
at> ls -al > list.txt
at> // 중단하려면 여기에서 ctrl+d키를 누른다.
job 3 at 2002-06-13 01:40
ㄴ. [posein@www posein]$ at -l
4 2002-06-12 01:48 a posein
=> 현재 예약된 작업의 리스트를 보여준다.
ㄷ. [posein@www posein]$ at 7:00pm March 20
=> 3월20일 오후 7시에 작업을 예약한다
ㄹ. [posein@www posein]$ at now+3hours
=> 3시간 후에 작업을 예약한다.
ㅁ. [posein@www posein]$ at now + 5 minutes
=> 5분 뒤에 작업을 예약한다.
ㅂ. [posein@www posein]$ at midnight + 10 minutes
=> 자정에서 10분뒤 즉, 00:10의 작업을 예약한다.
5) 관련명령어
ㄱ. atq
a. 설명: 큐에 저장된 작업들을 보여주는 명령으로 at -l 실행결과와 같다. 작업번호와
작업이 실행된 예정 시간, 작업이 저장되어 있는 큐를 보여준다.
b. 사용법
atq
c. 사용예
[posein@www posein]$ atq
3 2002-06-12 01:40 a posein
ㄴ. atrm
a. 설명: 예약된 작업을 취소할 때 사용하는 명령으로 큐에서 해당 작업을 삭제한다. at -d
를 사용하는 것과 같다.
b. 사용법
atrm 작업번호
c. 사용예
[posein@www posein]$ atrm 4
6) at 사용자제한
ㄱ. 설명: at데몬을 사용할 수 있는 사용자를 제한할 수 있다. /etc/at.allow파일과
/etc/at.deny파일을 이용한다. /etc/at.allow파일에 등록하면 등록된 사용자만이
사용가능하다. /etc/at.allow파일이 있다면 이 파일에 명단이 있는 사용자만이
at명령을 사용할 수 있다. 이 파일이 없으면 /etc/at.deny파일을 찾는다. /etc/at.
deny파일에 목록이 있는 사용자는 at를 사용할 수 없다. 두 파일 모두 찾지 못하면
오로지 슈퍼 유저만이 사용가능하다. 또한 /etc/at.deny파일이 비어있으면 모든
사용자가 at명령을 사용할 수 있다.
ㄴ. 설정: 한 줄에 한 계정만 적는다.
[root@www /root]# cat /etc/at.allow
posein
prehee
(3) cron
1) 설명: 같은 작업을 주기적으로 반복할 수 있도록 해준다. 보통 /etc/rc.d/init.d/crond에
의해 실행된다. 설정은 /usr/bin/crontab명령어를 사용한다.
2) 관련명령어 및 파일
ㄱ. crontab
a. 설명: cron작업을 설정하는 명령어이다. 실행시키면 기본편집기인 vi가 실행된다.
b. 사용법
crontab [option] [파일명]
c. option
-l : 현재 crontab에 의해 설정된 내용을 출력한다.
-e : crontab의 내용을 작성하거나 수정한다.
-r : crontab의 내용을 삭제한다.
-u : root권한자가 해당사용자의 crontab파일을 다룰때 사용한다.
d. 사용예
1. [root@www /root]# crontab -l
no crontab for root
=> 작업의 목록을 보여준다.
2. [posein@www posein]$ crontab -r
=> 등록된 작업을 삭제한다.
3. [root@www /root]# crontab -e -u posein
=> posein이라는 사용자의 crontab을 작성하거나 수정한다.
4. [posein@www posein]$ crontab aaa
=> aaa라는 파일을 crontab으로 사용한다. 이 경우에는 미리 aaa파일을 crontab의
형식에 맞게 입력해놔야 한다.
e. crontab의 작업형식 : 5개의 날짜 필드와 1개의 명령필드로 구성되어 있다.
MM HH DD mm d command
(설명)
MM : 분(Minute)을 의미한다.(0~59까지 사용)
HH : 시(Hour)를 의미한다.(0~23까지 사용)
DD : 날짜(Day of Month)를 의미한다.(1~31까지 사용)
mm : 달(Month)을 의미한다.(1~12까지 사용)
d : 요일(Day of Week)을 의미한다.(0~7까지 사용, 0과 7은 일요일을 나타냄)
command : 실행할 작업을 명기한다.
(참고)
위 형식에서 시간을 나타내는 각 필드에서 와일드 카드 '*'를 사용할 수 있고 각각의
요일을 구분할 때','를 사용하고, 연일을 나타낼 때는 '-'를 사용한다. 즉 월요일과
수요일은 '1,3'으로 월요일부터 금요일까지는 '1-5'로 표시할 수 있다.
ㄴ. /etc/crontab
a. 설명: 시스템이 정기적인 작업이 수행될 수 있도록 기본적으로 설정되어 있는 파일이다.
b. 설정예
[root@www /etc]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
0-59/5 * * * * root /usr/bin/mrtg.sh /usr/lib/mrtg/mrtg.cfg
=> run-parts는 디렉토리 이하의 스크립트를 순차적으로 실행하는 명령어이다.
ㄷ. /etc/cron.allow : at과 마찬가지로 사용자를 제한할 때 사용한다.
ㄹ. /var/spool/cron 디렉토리 : 각각의 사용자가 등록한 crontab은 이 디렉토리아래에 각
사용자의 계정이름으로 저장된다.
3) 설정하기
ㄱ. crontab -e 명령을 내린다.
ㄴ. 해당형식에 맞게 입력한다.
예) 0 12 * * 1-5 /home/posein/aaa
=> 월요일부터 금요일까지 /home/posein/aaa라는 스크립트를 실행시킨다.
ㄷ. 설정예
1) 0 12 1 1-12/2 * /home/posein/bbb
=> 1월부터 12월까지 2개월마다 /home/posein/bbb라는 스크립트를 실행시킨다.
2) 0 10 * * 1 cat /root/notice | mail -s "Notice" posein@mybestone.com
=> 월요일 오전 10시에 notice라는 문서의 내용을 메일로 발송한다.