[RHEL6] 시스템 관리 명령어 3탄(chkconfig, crontab, dmesg, free, halt)
본문 바로가기
IT 이야기/Linux 명령어

[RHEL6] 시스템 관리 명령어 3탄(chkconfig, crontab, dmesg, free, halt)

by 찬찬이 아빠 2020. 3. 5.
반응형
  10. chkconfig(구동 프로그램 설정)

 1) 경로 : /sbin/chkconfig

 2) 요약 : 시스템을 부팅할 때 부팅 레벨별로 자동으로 실행할 서비스를 살펴보고 업데이트

 3) 사용 방법

 chkconfig --list [서비스 이름]

 chkconfig --add [서비스 이름]

 chkconfig --del [서비스 이름]

 chkconfig [--level 레벨] [서비스 이름] <on|off|reset>

 chkconfig [--level 레벨] [서비스 이름]

 

 4) 추가 설명

부팅 시 실행할 데몬은 /etc/rc.d 밑의 각 디렉터리에 모여 있습니다. rc 뒤에 붙은 숫자는 런 레벨 번호로 rc0.d는 런레벨이 0이며, rc1.d는 1, rc5.d 는 런 레벨이 5에 해당하는 서비스를 모아놓은 디렉터리입니다.

 

레드햇 계열 배포판 기준으로 GUI 모드로 부팅하는 rc5.d 디렉터리를 살펴봅니다. 여기서 K로 시작하는 파일은 부팅 시 실행하지 않는 데몬이며, S로 시작하는 파일이 부팅 시 실행하는 서비스 입니다. S 다음의 숫자는 시작 순서입니다.

$ ls /etc/rc.d/
K01dnsmasq		K10radiusd		K35smb				K74nscd
K89rdisc		S10network		S18rpcidmapd		S26hidd
S90crond		S99smartd		K02NetworkManager	K10tcsd
K35vncserver	K74ntpd			K91capi				S11auditd
S19rpcgssd		S26lm_sensors	S90xfs				K02avahi--dnsconfd
... 생략 ...

 

이 파일명을 수정하여 런 레벨별 서비스를 설정할 수도 있지만, chkconfig 명령을 사용하면 좀더 편리하게 변경할 수 있습니다.

$ chkconfig --list | more
NetworkManager	0:off	1:off	2:off	3:off	4:off	5:off	6:off
acpid			0:off	1:off	2:on	3:on	4:on	5:on	6:off
anacron			0:off	1:off	2:on	3:on	4:on	5:on	6:off
apmd			0:off	1:off	2:on	3:on	4:on	5:on	6:off
atd				0:off	1:off	2:off	3:on	4:on	5:on	6:off
auditd			0:off	1:off	2:on	3:on	4:on	5:on	6:off

 

위 목록 중 NetworkManager 서비스를 런 레벨 3, 5에서 활성화하고 해당 서비스 활성화 정보를 살펴봅시다.

chkconfig --level [런레벨] [서비스 이름] on으로 해당 서비스를 활성화 할 수 있고, chkconfig --list [서비스 이름] 으로 상태를 출력할 수 있습니다.

 

$ chkconfig --level 35 NetworkManager on
$ chkconfig --list NetworkManager
NetworkManager	0:off	1:off	2:off	3:on	4:off	5:on	6:off

<NetworkManager 서비스 런 레벨 5 해제>
$ chkconfig --level 5 NetworkManager off
$ chkconfig --list NetworkManager
NetworkManager 0:off	1:off	2:on	3:on	4:on	5:off	6:off

 

만일 특정 서비스를 모든 실행 레벨에서 삭제하고 싶다면 chkconfig --del 명령을 사용하면 됩니다.

 

$ chkconfig --del NetworkManager
$ chkconfig --list NetworkManager
service NetworkManager supports chkconfig, but is not referenced in any runlevel (run 'chkconfig --add NetworkManager')

 

모든 레벨에서 삭제했던 NetworkManager에 다시 런 레벨을 설정하려면 chkconfig --add 명령으로 NetworkManager 서비스를 먼저 추가하고 런 레벨 설정을 해야 합니다.

 

$ chkconfig --add NetworkManager
$ chkconfig --level 35 NetworkManager on
$ chkconfig --list NetworkManager
NetworkManager	0:off	1:off	2:off	3:on	4:off	5:on	6:off

 

 

  11. crontab(crontab 관리)

 1) 경로 : /usr/bin/crontab

 2) 요약 : 사용자의 개별 crontab 파일을 관리

 3) 사용 방법 : crontab [ -u 사용자ID] 파일

                        crontab [ -u 사용자ID] { -l | -r | -e }

 4) 옵션

 -l(엘) : 현재 crontab 내용을 출력

 -r : 현재 crontab 내용을 삭제

 -e : crontab 파일의 내용을 편집

 

 5) 추가 설명

cron은 백업과 같이 주기적으로 실행하는 명령들을 정해진 시간에 자동으로 실행해 주는 도구로써 다음과 같이 서비스를 실행합니다.

# /etc/init.d/crond start
Starting crond.......... [OK]

 

cron 기본 설정 파일은 레드햇의 경우 /etc/crontab에 있습니다. crontab은 주기적으로 지정한 시간에 지정한 작업을 하도록 설정합니다. 이에 반해 at 명령은 지정한 시간에 한번만 시행됩니다.

# 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 /etc/mrtg/mrtg.cfg

 

위의 설정 내용 중 02 4 * * * root run-parts /etc/cron.daily를 살펴보면, 매일 4시 2분에 /etc/cron.daily 디렉터리의 내용을 실행한다는 의미입니다. 두 번째  22 4 * * 0의 의미는 매주 일요일 4시 22분에 실행한다는 의미입니다. 또 하나 42 4 1 * * 는 매월 1일 4시 42분에 실행한다는 의미입니다. 이 처럼 매일 실행되는 작업은 /etc/cron.daily, 매주 실행되는 작업은 /etc/cron.weekly, 매월 실행되는 작업은 /etc/cron.monthly 디렉터리에 등록합니다. 그럼 root 계정에 새로운 작업 스케쥴을 등록해 봅시다. 먼저 이전에 crontab에 설정되어 있는 작업이 잇는지 확인합니다. 아래의 메시지가 뜬다면 등록된 작업은 없는 것입니다.

# crontab -l
no crontab for root

 

crontab -e 명령을 실행하면, 편집기가 실행되어 새로운 cron 작업을 등록할 수 있습니다.

# crontab -e
no crontab for root - using an empty one

<작업 작성>
0 4 * * * echo crontab testing

 

저장하고 나오게 되면 아래의 메시지를 볼 수 있을 것입니다.

"crontab. 1314" 1L, 31C written
crontab: installing new crontab

 

그럼 등록된 작업 목록을 -l 옵션으로 살펴봅시다

# crontab -l
0 4 * * * echo crontab testing

 

cron 스케쥴에 등록하는 시간 지정에 대한 각 항목은 다음과 같습니다.

구분 설정값
분(Minutes) 0-59
시(Hour) 0-23
일(Day of month) 1-31
월(Month) 1-12로 숫자를 표기하거나 Jan, Feb, Mar 등으로 표기
요일(Day of week) 0-6(0은 일요일)로 숫자 표기하거나 Sun, Mon, Tue 등으로 표기

 

 

 

  12. dmesg(부팅 로그 보기)

 1) 경로 : /bin/dmesg

 2) 요약 : 커널 링(ring) 버퍼를 출력하거나 제어

 3) 사용 방법 : dmesg [옵션]

 4) 옵션

 -c : 메시지 내용을 출력하고 링 버퍼를 모두 비움

 -r : 로우(raw) 메시지 버퍼를 출력

 -s bufsize : 커널 링 버퍼 쿼리를 위한 크기(bufsize)를 지정. 기본값은 16,392

 -n level : 지정한 로그 레벨(level) 메시지를 출력

 

 5) 추가 설명

dmesg는 커널 링 버퍼를 보거나 제어하는 명령어로 시스템이 부팅할 때마다 로딩되는 시스템 정보의 로그 메시지를 가지고 있습니다. 이 버퍼에는 리눅스 커널 버전과 gcc 버전, CPU 정보 등 부팅 시의 내용을 포함하고 있어 시스템 정보를 살펴볼 때 유용합니다.

$ dmesg
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 2.6.32-23-generic (build@rothera) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) # 37-Ubuntu SMP Fri Jun 11 07:54:58 UTC 2020 (Ubuntu 2.6.32-23.37-generic 2.6.32.15+drm33.5)
[    0.000000] KERNEL supported cpus:
[    0.000000] Intel GenuineIntel
[    0.000000] AMD AuthenticAMD
[    0.000000] NSC Geode By NSC
... 생략 ...

 

위 시스템은 리눅스 커널 2.6.32-23-generic에 gcc 4.4.3을 사용하고 있습니다. 

 

부팅 때부터의 커널 로그를 버퍼에 저장하고 있다가 출력하는데, 이 정보는 -c 옵션으로 정보를 출력한 후에 기존 버퍼 정보를 삭제할 수 있습니다. 이는 디버깅을 위해 버퍼에 쌓인 이전의 많은 정보를 삭제하고 초기화 할 때 유용합니다.

 

커널 버전의 의미

먼저 현재 최신의 커널 버전을 확인해 봅니다.

# finger @finger.kernel.org

 

위와 같이 최신 안정 버전과 개발 버전을 확인할 수 있습니다.

커널 버전은 2.6.34이라면 아래와 같이 세 부분으로 버전의 의미를 나눌 수 있습니다.

 2 : 획기적인 변화가 있을 때 바뀜

 6: 안정 버전인지 개발 버전인지를 나타냄(홀수 : 개발, 짝수 : 안정)

34 : 몇 번의 패치가 있었는지 나타냄

 

이는 2.6대의 안정 버전으로 34번의 공식 패치가 있었다는 뜻입니다.

일반적으로 커널 개발자가 아닌 이상 안정 버전을 사용합니다.

개발 버전에 충분한 패치와 실험이 이루어져 안정화되면 짝수 버전으로 바뀝니다.

 

 

  13. free(메모리 정보 보기)

 1) 경로 : /usr/bin/free

 2) 요약 : 시스템의 메모리 사용 현황을 출력

 3) 사용 방법 : free [옵션]

 4) 옵션

 -b : 메모리의 양을 바이트로 표시

 -k : 킬로 바이트 단위로 표시

 -m : 메가 바이트 단위로 표시

 -t : 총계가 포함된 줄을 출력

 -o : 버퍼에 조정된 줄의 출력을 비활성화

 -s : 지정된 초마다 출력

 

 5) 추가 설명

free 명령어는 시스템에서 사용하지 않는 메모리와 이미 사용하고 있는 물리적인 메모리, 스왑 메모리의 전체 용량 등의 메모리 사용 현황을 확인할 때 사용합니다. 또한 커널에서 사용하는 공유 메모리와 버퍼 정보도 출력합니다.

 

# free
					total	used	free	shared	buffers		cached
Mem:				785408	606716	178692	0		74336		402840
-/+ buffers/cache:	129540	655868
Swap:				2096472	0		2096472

 

free -s 초 명령은 지정한 초 간격으로 메모리 사용 현황을 업데이트 하면서 출력합니다.

# free -s 1
					total	used	free	shared	buffers		cached
Mem:				785408	606716	178692	0		74336		402840
-/+ buffers/cache:	129540	655868
Swap:				2096472	0		2096472


					total	used	free	shared	buffers		cached
Mem:				785408	606716	178692	0		74336		402840
-/+ buffers/cache:	129540	655868
Swap:				2096472	0		2096472

 

 

 

  14. halt(시스템 종료)

 1) 경로 : /sbin/halt

 2) 요약 : 시스템을 종료

 3) 사용 방법 : halt [옵션]

 4) 옵션

 -d : wtmp 파일에 로그를 남기지 않음

 -f : 강제로 종료

 -n : 종료할 때 싱크를 하지 않음

 -w : 실제로 시스템을 종료하지 않고, /var/log/wtmp 파일에 로그만 남김

 

 5) 추가 설명

halt 명령어는 /var/log/wtmp 파일에 시스템 종료 로그를 남기고 시스템을 종료하거나 재부팅합니다. 만일 현재 시스템의 런 레벨이 0이나 6이 아니라면 halt나 reboot 명령은 shutdown(8) 명령어를 호출합니다.

 

시스템 종료 명령어

shutdown, halt, init 레벨을 이용하여 시스템을 종료하거나 재부팅할 수 있습니다.

 

1. init0(시스템 종료), init 6(시스템 재시작)

이 명령어는 시스템에 로그인하여 작업 중인 사용자에게 메시지를 보내지 않고 바로 종료하므로 서버로 운영 중인 호스트에서는 유의해야 합니다.

 

2. shutdown

시스템 종료에 대한 경고 메시지와 종료할 시간을 설정하여 사용자가 작업을 마무리할 수 있는 시간적 여유가 있습니다.

 

3. halt

shutdown -h now 명령어와 같은 기능을 ㅎ바니다.

 

4. reboot

shutdown -r now 명령어와 같은 기능을 합니다.

 

반응형

댓글