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라는 문서의 내용을 메일로 발송한다.