본문 바로가기

IT 관련정보/리눅스

리눅스 기본 이론(5) - 데몬 관리, crontab, at, YUM, RPM

리눅스 정리 5일차


1. 프로세스 nohup

부모 프로세스가 죽거나 종료되더라도 자식 프로세스는 계속 동작할수 있도록

백그라운드 모드에서 프로세스가 실행되도록 하는 명령이다

nohup.out 정보가 기록된다.


find / -name *.out


2.우선순위 예약(nice)

프로세스들을 실행하는데 프로세스에게 실행 우선권을 부여할 수 있다.

nice -n명령의 형식으로 실행한다.

우선순위는 -20 ~ +19까지의 범위를 갖는다.

값이 작을수록 우선순위가 높아지고 기본값은 10이다.


top &


nice --15 vi &


3.데몬관리(ntsysv)

부트 스크립트를 관리해주는 도구이다.

부트 스크립트의 부팅이 시작될 때 자동 실행여부를 쉽게 설정하거나 해제할 수 있도록 도와주는 도구이다.


ntsysv => 현재 구동중인 레벨의 서비스 데몬을 설정한다.

ntsysv --level 5 => 실행 레벨 5의 서비스 데몬을 설정한다.


--level 실행 레벨:특정 실행 레벨을 편집한다.


이 파일들은 /etc/rc.d/init.d 디렉토리에 스크립트 형태로 저장되어 있다.


4.chkconfig

이 명령어는 서비스 데몬의 실행 레벨 정보를 관리해주는 프로그램이다.


사용법


chkconfig --list   데몬명 =>각 실행 레벨에서의 서비스 설정 상태를 보여준다.

chkconfig --add 데몬명 => 서비스를 추가한다.

chkconfig --del  데몬명 => 서비스를 삭제한다.

chkconfig --level 레벨번호 데몬명 on/off/reset => 해당 레벨에서 특정서비스의 상태를 설정한다.


chkconfig --level 35 named on

=>실행 레벨 3,5에 대해서 named 서비스를 on한다.


chkconfig sendmail off

=>sendmail 서비스를 부팅 시에 시작하지 않는다.

   특별히 레벨을 명기하지 않으면 2,3,4,5 레벨이 on/off된다.



---------------------------------------------------------------------------------

예약(at, cron)

1.at 

지정한 시간에 특정 작업이 실행될 수 있도록 작업스케쥴을 예약 처리해주는 기능.

보통 한번 실행되는 경우에 주로 사용된다. atd 데몬에 의하여 실행되고, 지정한 큐(queue)에 저장되며 

저장된 작업들은 /var/spool/at 디렉터리 아래 파일로 저장된다.

명령은 기본적으로 표준 입력 장치를 통해 받으며, 원하는 명령을 순차적으로 입력한 후에 ctrl+d를 누르면 된다.


*atd 데몬동작

service atd restart


사용법


at 시간 용일

at>audfuddj

at>CTRL+D키로 명령완성 선언


확인 at -l, atq

삭제 atrm


실습] 1./dev/sdd1을 2분후에 마운트하고, 5분후에 마운트해제하시오.

       2./dev/sdd1 파일 1, 2, 3, 4, 5 생성하기


실습] /home 디렉토리에 있는 모든 계정 정보를 /backup/user.tar.gz으로 2분후에 백업하시오.


실습]3분후에 시스템을 재부팅하시오


실습] at 명령어를 root, tel2 계정만 사용할 수 있도록 설정하시오.

=> /etc/at.allow파일이과 /etc/at.deny 파일로 사용자 제한


2.cron:같은 작업을 주기적으로 반복 실행되도록 하는 작업스캐쥴용 도구이다.

        시스템 운영에 필요한 작업은 root 권한으로 /etc/crontab에 등록해서 주기적으로 수행할 수 있고

        사용자는 crontab이라는 명령을 수행해서 등록할 수 있다.


/etc 디렉토리 아래에 시, 일, 주, 월, 요일 단위형태로 cron 디렉토리가 존재한다.

이 디렉토리내에는 작업 스크립트들이 들어 있다.


*사용법

crontab -u usernamed 파일

crontab -u usernamed -e, -r, -l 형태로 사용


crontab -e 예약설정

crontab -r 예약취소

crontab -l 예약확인




-------------------------------------------------------------------------------------------------------------

분(minute) 시(hour) 요일 user-name command

0~59 0~23 1~31 1~12 0~7 사용자 이름 실행할 명령어를 

'*'-all

'-' 연결된 설정 값을 지정할 때

',' 연결되지 않는 값을 나열할 때

'/' 연결된 설정 값 범위에서 특정 주기로 나눌 때 사용한다.


crontab 

옵션 -l:crontab에 설정된 내용을 출력한다.

      -e:내용을 작성하거나 수정한다.

      -r:crontab의 내용을 삭제한다.

      -u:root 사용자가 특정 사용자의 crontab 파일을 다룰 때 사용한다. 

-cron 사용자 제한


/etc/cron.allow 파일이 존재하는 경우 /etc/cron.deny 파일 존재 유무에 상관없이 

/etc/cron.allow 파일에 등록된 사용자만 가능하다.


/etc/cron.allow 파일이 존재하지 않고, /etc/cron.deny만 존재하는 경우에는

/etc/cron.deny 파일에 등록된 사용자만 사용이 불가능하다.

두 파일 모두 존재하지 않는 경우에는 일반 사용자는 불가능하고 root만 사용 가능하다.


------------------------------------------------------------------------------


# crontab -l       현재사용하고 있는 crontab 파일 출력

# crontab -e       crontab 파일의 수정(edit)

crontab -e 로 수정이 안될경우

1. #csh        2. #setenv EDITOR vi 명령 수행후 수정함

root crontab file

/etc/cron.d/logchecker 

  : /var/cron/log가 최대 화일 크기를 초과하는지를 판단하고, 만약

    초과하면 내용을 /var/cron/olog로 복사한다. 

/usr/lib/newslog 

  : syslog daemon에 의해서 /var/adm 디렉토리에 생성되는 log file을 청소한다.

Controlling crontab Access 

cron utility를 제어하는 두개의 file 

/etc/cron.d/cron.allow 

/etc/cron.d/cron.deny

User Access 

- cron.allow file이 존재하면, 그 file에 적혀있는 user만이 

crontab 명령어를 사용할 수있다. 

- 이 file이 없으면 crontab은 cron.deny file을 체크해서 user가 crontab 실행을 금지할 지를 결정한다. 

- 만약 둘다 없으면 crontab은 root만 실행시킬 수 있다. 

cf) daemon, bin, smtp, nuucp, listen, nobody, noaccess file은 crontab 사용할 수 없다. 

- cron.allow file은 user가 만들어 주어야한다. 

- crontab 명령어는 crontab file을 수정, 삭제, 편집할 수있다. 

- crontab 명령어는 user에대한 입력을 /var/ spool/cron/crontabs/username에 저장한다. 

- root 만이 다른 user의 crontab file을 읽고 편집할 수있다. 

- root의 crontab file은 /var/spool/cron/crontab/root 이다.


crontab file format

# cd /var/spool/cron/crontabs 에 가신후

   # more root

   10 3 * * 0,4 /etc/cron.d/logchecker

   10 3 * * 0   /usr/lib/newsyslog

   15 3 * * 0 /usr/lib/fs/nfs/nfsfind

   1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1

   ----------   ========================

   1 2 3 4 5           program

   1 : minute (0-59),

   2 : hour (0-23),

   3 : day of the month (1-31),

   4 : month of the year (1-12),

   5 : day of the week (0-6 with 0=Sunday).

   이렇게 되고 실행할 파일명을 program 부분에 적어 주면 된다.

   파일을 맞게 변경후 cron 데몬을 리스타트시키면 된다.

   아니면..리부팅

   예로

   * * 1 * * /usr/local/program     

   이렇게 한다면 한달에 한번 매월 1일에만 program 을 실행.

   지금 root 파일을 변경했는데 root 파일이 아닌 각계정의 파일을 만들어 사용하면 각유저마다 자동으로 실행할수 있다.     

 

 

///////////////////////////////////////////////////////////////////////////////////////

 

  

crontab 옵션

crontab [ -u user ] file 

crontab [ -u user ] { -l | -r | -e } 

-u user : user 사용자에 대해서 crontab 작업을 수행한다. 생략하면 crontab 명령을 실행하는 사용자에 대해서 crtontab 작업을 수행.

-l : 현재 cron table을 보여 줌

-r : 현재 cron table을 삭제

-e : 현재 cron table을 편집

일반적으로  crontab -e 명령을 주로 사용한다.

crontab 사용 권한 : /etc/cron.allow, /etc/cron.deny 

특정 사용자에게만 cron의 사용을 허가할 경우

/etc/cron.allow 파일에 허가할 사용자만 추가해준다 

/etc/cron.deny 파일에 허가하지 않을 사용자를 추가한다

/etc/cron.allow를 먼저 참조한다. 

/etc/cron.allow에 명시된 사용자는 cron job을 실행할 수 있다.

/etc/cron.allow에 없는 사용자는, /etc/cron.deny에도 없다면, cron job을 실행할 수 있다.

/etc/cron.allow, /etc/cron.deny 두 파일이 존재하지 않으면 슈퍼 유저만 cron job을 수행할 수 있다.

/etc/cron.deny 파일이 존재하고 아무 내용 없이 비어 있다면, 모든 사용자가 cron job을 수행할 수 있다.

cron table의 각 필드

+-------------------------------------------------------------------+

| 분 | 시간 | 날짜 | 달 | 요일 | 사용자 | 명령 |

+-------------------------------------------------------------------+

minute(0~59) hour(0-23) day(1-31) month(1-12) weekday(1-7) command 

<분>은 0-59  <시>는 0-23  <날짜>는 0-31  <달>은 0-12(0또는 12는 12월, 1은 1월...) <요일>은 0-7(0과 7은 일요일, 1은 월요일...)

''*''  :  everytime

''-''  :  범위 지정, 예를 들어 시간 필드에 1-3이면 1시와 3시 사이

'',''  :  separator, 예를 들어 시간 필드에 1,3이면 1시와 3시

/   :  시간필드 에서 23-7/2라면 23시부터 07시까지 매 2시간마다라는 의미

      분필드에서 */2라면 매 2분마다라고 해석하면 된다.

사용 예

30  05 *  *  1    ~/bin/backup.sh

              ==> 매주 월요일  오전 05시 30분에 ~/bin/backup.sh을 실행

30  2  1  *  *    ~/bin/backup.sh

              ==> 매월 1일 새벽 2시 30분에 ~/bin/backup.sh를 실행

20  1  *  *  *    find /tmp -atime +3 -exec rm -f () '';''

              ==> 매일 새벽 01시 20분에 3일간 접근하지 않은 /tmp내의 파일을 삭제

=================================================

tar, YUM, RPM 사용법


1.RPM 명령어


rpm -i 패키지 설치

rpm -u 패키지 업그레이드

rpm -e 패키지 제거

rpm -q 패키지 질의

rpm -V 패키지 점검

rpm -b 패키지 생성


--replacesfiles 패키지 충돌무시

--force 강제성치

--nodeps 의존성 무신


2.YUM 명령어


rpm 기반의 시스템을 자동으로 업데이트하거나 패키지를 쉽게 설치 및 삭제해주는 도구이다.


*yum 설정(/etc/yum.conf)


yum list

=>전체 패키지에 대한 정보를 출력한다.


yum check-update, yum list updates

=>업데이트 가능한 패키지 보기


yum install -y  패키지 설치

yum update    패키지 업데이트

yum search     패키지 검색

tum info       패키지 정보확인

yum locationinstall 하드디스크에 있는 패키지 설치 => rpm으로 설치하면 되기 때문에 자주 사용하지 않음