[RHEL6] 시스템 관리 명령어 1탄(alias, at, atq, atrm, badblocks)
본문 바로가기
IT 이야기/Linux 명령어

[RHEL6] 시스템 관리 명령어 1탄(alias, at, atq, atrm, badblocks)

by 찬찬이 아빠 2020. 2. 20.
반응형
  1. alias(명령어 단축)

 1) 경로 : 내부 명령어

 2) 요약 : 복잡한 명령어와 옵션을 짧은 문자열로 바꿔줌

 3) 사용 방법 : alias name[=value]

 4) 추가 설명

옵션을 포함한 긴 명령어를 자주 사용한다면 매번 입력하지 않고 짧은 문자열로 바꿔주는 alias를 이용합니다. 예를 들어 터미널에서 rm 명령어를 이용하여 파일을 삭제할 때 파일을 지울 것인지 다시 물어보는 옵션을 별도로 사용하지 않아도 rm 명령어가 이 옵션을 사용하고 있습니다. 또한 ls 명령어를 이용해 파일 목록을 보았을 때 색으로 구분되는 것은 시스템 환경에서 미리 alias로 해당 옵션을 예약해 놓았기 때문입니다.

 

쉘은 내부 명려어 alias와 unalias를 이용하여 단축 명령어를 목록에 추가하고 삭제합니다. 어떠한 명령어가 입력되면 이 명령어의 앞에서부터 문자열과 일치하는 알리아스된 문자열이 목로에 있는지 확인하고, 일치하면 원래의 명령어로 바꿔서 실행합니다. 쉘 프롬프트에서 alias를 입력해봅시다 현재 시스템에 정의된 알리아스 목록을 볼 수 있습니다.

 

# alias
alias cp='cp -i'
alias i.='ls -d .* ---color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

 

이전에 alias 관련 명령을 실행해 본적이 없다면 위 내용은 운영체제에 기본 설정된 내용일 것입니다. 원래 cp 명령은 복사할 파일이 이미 있는지를 고려하지 않고 덮어쓰지만 cp -i 옵션은 같은 이름의 파일이 있을 경우 덮어쓸것인지 물어봅니다.

 

이 옵션을 사용하면 기존 파일을 무시하고 덮어쓰는 실수를 막을 수있으므로 운영체제에서 미리 alias를 이용하여 cp -i를 cp로 지정하였습니다. 그러면 cp의 알리아스를 삭제해봅시다. 알리아스 삭제 명령은 unalias 입니다.

# unalias cp

 

삭제 후 alias 명령을 내리면 cp 알리아스가 목록에서 사라진 것을 확인 할 수 있습니다. 그럼 다시 cp 알리아스를 목록에 추가해봅시다.

# alias cp='cp -i'

 

다시 alias 명령으로 확인하면 추가 된 cp 알라아스를 볼 수 있습니다. 위와 같은 방법으로 자주 쓰는 명려엉와 옵션을 간단한 문자열로 줄여 쓸 수 있습니다. 예를 들어 자주 쓰는 tar 명령과 옵션을 다음과 같이 만들어 놓으면 편리합니다.

# alias tarx='tar xvpf'
# alias tarc='tar cvpf'
# alias tarz='tar xvpfz'

 

다른 명령어도 같은 방식으로 응용해 봅시다. 또한 알리아스가 설정되었어도 다음과 같은 방법으로 원래의 명령어를 사용할 수 있습니다.

#\cp
또는
# /bin/cp

 

명령어 앞에 \(백슬래시)가 붙어 있으면 알리아스를 무시하고 원래의 명령을 실행하라는 뜻입니다. 또한 명령어가 위치한 절대 결로를 입력하여 명령어를 실행해도 알리아스를 무시하게 됩니다.

 

 

 

  2. at(작업 예약)

 1) 경로 : /usr/bin/at

 2) 요약 : 명령어나 스크립트의 실행 예약

 3) 사용 방법 : at [옵션] [시간] [날짜 ] [+증가시간]

 4) 옵션

 시간 날짜 : 명령어나 스크립트를 실행할 시간과 날짜를 지정

 +증가시간 : 앞서 명시한 시간을 기준으로 증가 시간 만큼이 지난 후 실행

 -q queue : queue 이름을 지정. 큐 이름으로는 a~z, A~Z가 쓰일 수 있음. 큐 이름을 지정하지 않으면 at는 a, batch는 b를 사용함. 알파벳 순서로 뒤의 이름을 갖는 큐는 더 큰 niceness 값을 갖음. '=' 큐는 현재 수행되는 작업에 대한 큐로 예약됨. 대문자 이름의 큐에 추가된 작업은 batch의 작업처럼 처리됨

 -m : 출력 결과가 없더라도 작업이 완료될 때 사용자에게 메일을 보냄

 -f 파일명 : 스크립트 파일 등을 실행해 줄 때 사용

 -l : 예약된 작업 목록을 보여줌. atq 명령어와 같음

 -v : 작업이 수행될 시간을 보여줌

 -d : 예약된 작업을 삭제. atrm 명령어와 같음

 -r : 예약된 작업을 삭제. atrm 명령어와 같음

 

 5) 추가 설명

at는 명령어와 스크립트 파일을 특정 시간에 실행할 수 있도록 예약하는 기능을 합니다. 즉 시스템의 부하가 적은 시간에 실행하거나 예약된 시간에 꼭 실행해야 하는 작업을 자동으로 처리하고자 할 때 사용합니다.

 

<at으로 실행할 시간 설정>

예약 작업 기능이므로 시간 설정이 중요합니다. at 시간 설정은 날짜와 시간을 정해주는 시간 설정과 현재 시간이나 정해진 시간에서 증가 시간을 설정해 주는 방법이 있습니다.

 

분류 형식 설명
시간 hh:mm hh(시간):mm(분)으로 설정 16:18
ap, pm

표시가 없는 경우 리눅스나 유닉스에서는 하루를 24시간으로 표현

am, pm을 이용하여 12시간 단위로 표현할 수 있음

4:18pm

midnight

noon

teatime

now

midnight(00:00), noon(12:00), teatime(16:00), noew(현재) 같은 서술형 시간으로도 지정할 수 있음

서술형 시간 다음에는 주로 증가 시간을 설정해서 사용

 
날짜

yyyy-mm-dd

일반적인 날짜 구성으로 표현

2020-02-20

month num

2월 20일은 "February 20"이나 약자로 "Feb 20"으로 표현

February 13

today, tomorrow

오늘이나 내일로 지정할 수 있음

각 요일 별로도 표현할 수 있음

 

 

test1 파일을 만들어 주는 명령어인 touch test1 명령어를 at에 등록하여 2020년 2월 20일 0시에 실행합니다. 2020년 2월 20일 0시는 "00:00 2020-02-20"이나 "midnight February 20" 등으로 표현할 수 있습니다.

 

at 명령으로 수행한 작업을 atd 데몬이 처리합니다. atd는 작업 실행 시간과 작업 대기 행렬을 유지/관리 합니다. atd의 스풀 디렉터리는 보통 /var/spool/at에 위치합니다. 만일 atd 데몬이 실행 중이지 않다면 아래 에러를 출력합니다.

# at 00:00 2020-02-20
at> echho "it's midnight"
at> <ctrl+d>
job 3 at 2020-02-20 00:00
Can't open /var/run/atd.pid to signal atd. No atd running?

 

atd 데몬을 실행하고 at 명령을 다시 실행해 봅니다.

# /etc/init.d/atd start
starting atd...... [OK]
# at 00:00 2020-02-20
at> echo "it's midnight"
at> <ctrl+d>
job 4 at 2020-02-20 00:00

 

그리고 등록된 예약 작업을 확인해 봅니다.

# at -l
3	2020-02-20	00:00	a	root
4	2020-02-20	00:00	a	root

 

2020년 02월 20일 자정에 echo 명령어가 "it's midnight"을 화면에 출력할 것입니다. 시간은 00:00을 대신하여 midnight을 넣어도 무관합니다.

 

 

<at에 예약된 작업 정보>

작업번호 날짜 시간 큐 이름 사용자
3 2020-02-20 00:00 a root

 

 * 작업 번호 : at에 등록된 작업번호. 등록된 순서로 매겨지며 at -d나 atrm을 이용해 at 작업을 삭제할 때 사용

 * 날짜/시간 : 등록된 명령이 실행될 시간

 * 큐 이름 : -q 옵션을 이용하여 큐 이름을 지정

 * 사용자 : at에 작업을 예약한 사용자

 

 

<증가 시간을 이용한 설정>

지금부터 6시간 뒤에 Control.sh 스크립트를 실행하고 싶으면 -f 옵션을 사용하여 예약 작업으로 등록합니다.

# at now + 6 hours -f Control.sh

 

리다이렉션(<)을 이용해도 됩니다.

# at now + 6 hours < Control.sh

 

4번 예약 작업을 삭제하고 싶다면 -d 옵션 다음에 삭제할 작업 번호를 지정합니다.

# at -d 4

 

 

<at의 사용 권한 설정>

at 명령어는 at.allow와  at.deny 두 파일을 이용해 일반 사용자의 사용 권한을 지정해 줄 수 있습니다. /etc/at.allow 파일이 잇으면 at.allow에 기록된 사용자만 at 명령어를 사용할 수 있으며 이 파일이 없으면 /etc/at.deny에 기록되지 않은 사용자만 사용할 수 있습니다. 두 파일 모두 없다면 관리자만 사용할 수 있습니다.

 

 

<at와 cron>

at과 cron은 작업을 예약해서 실행합니다.

at는 특정 시간을 정하기가 쉽기 때문에 비정기적인 시간을 예약하기 편리하며 정기적으로 수행해야 하는 작업일 경우 cron을 사용하는 것이 더 편리합니다.

cron은 월 단위, 주 단위, 일 단위, 시간 단위로 정기적인 시간을 설정할 수 있습니다.

구분 at cron
공통점 작업을 예약하여 실행 작업을 예약하여 실행
사용처 비정기적인 작업 예약 정기적인 작업 예약
관련 데몬 atd crond
사용 권한 설정

/etc/at.allow

/etc/at.deny

/etc/cron.allow

/etc/cron.deny

 

<유닉스 타임>

date+%s 명령을 사용하여 확인할 수 있습니다. 유닉스의 time() 함수는 1970년 1월 1일 0시부터 현재까지 경과된 시간을 초 단위(정수 값)로 반환하여 시간을 계산하고 있습니다. 이를 이용하여 파일 이름을 겹치지 않게 만들기 위해 유닉스 타임의 타임 스탬프를 파일 이름에 붙이는 경우도 많이 있습니다.

그러나 문제가 있습니다. 유닉스 날짜 값은 4바이트 공간에 저장되어 있어 이 초 카운터를 32비트의 Signed Integer로 표현하는 현재 상태로는 2038년까지의 시간만 계산할 수 있습니다. 물론 몇몇 대안이 제시되었고, 기존 프로그램간의 호환성을 고려한 해결책도 조만간 만들어져 큰 ㅁ누제가 되지 않을 것입니다.

 

 

  3. atq(예약 작업 보기)

 1) 경로 : /usr/bin/atq

 2) 요약 : at를 사용하여 예약한 작업 목록을 출력

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

 4) 옵션

 -q queue : 지정된 큐에 예약된 작업만 출력

 -V : 버전 정보를 출력

 

 5) 추가 설명

at로 예약된 작업 목록을 출력합니다. at -l과 같은 기능을 합니다.

특정 큐에 예약된 작업을 보기 위해서는 atq -q라고 입력합니다.

아래는 t 큐에 예약된 작업을 출력합니다.

# atq -q t
27	2020-02-20	10:00	t	root

 

 

 

  4. atrm(예약된 작업 삭제)

 1) 경로 : /usr/bin/atrm

 2) 요약 : at로 예약한 작업을 삭제

 3) 사용 방법 : atrm [작업번호]

 4) 옵션

 작업번호 : atq를 사용하여 확인한 번호

 

 5) 추가 설명

at로 예약한 작업을 삭제하는 명령어입니다. at -d 명령과 같은 역할을 합니다.

atq로 예약된 작업 목록을 확인합니다. 첫 번째 필드에 있는 번호가 작업번호입니다.

# atq
10	2020-02-20	12:00	A	root
11	2020-02-20	05:28	A	root
12	2020-02-20	10:00	t	root
13	2020-02-21	12:00	A	root

 

이 중에서 2020년 2월 20일 10시에 예약된 작업을 삭제해 봅시다. 이 예약의 작업 번호는 12 이므로 다음과 같이 삭제합니다.

# atrm 12

 

다시 atq 명령어를 실행하면 작업 번호 12가 삭제된 것을 확인할 수 있습니다.

# atq
10	2020-02-20	12:00	A	root
11	2020-02-20	05:28	A	root
13	2020-02-21	12:00	A	root

 

 

  5. badblocks(배드 블록 검사)

 1) 경로 : /sbin/badblocks

 2) 요약 : 저장 장치의 배드블록을 검사

 3) 사용 방법 : badblocks [옵션] [장치] [블록 개수]

 4) 옵션

 장치 : 검사할 장치를 지정

 블록 개수 : 검사 할 장치의 블록 수

 -b 블록 크기 : 지정한 블록 크기로 지정. 기본값은 1024

 -o 파일 : 배드 블록 체크 내용을 파일에 저장

 -v : 배드 블록 체크 내용을 상세히 출력

 -w : 각 블록에 몇 가지 패턴으로 쓰기, 읽기를 하면서 테스트

 

 5) 추가 설명

badblocks은 각 디스크의 배드 블록을 검사하는 명령어입니다. 예를 들어 /dev/hda2 디스크릐 배드 블록을 검사한다고 가정합니다. 먼저 블록 개수를 알기 위해 fdisk를 실행하여 디스크 정보를 확인합니다.

# fdisk -l /dev/hda
Device	Boot	Start	End		Blocks	Id	System
/dev/hda1	*	1		261		2096451	83	Linux
/dev/hda2		262		587		2618595	83	Linux
/dev/hda3		588		848		2096482+	83	Linux
/dev/hda4		849		1027	1437817+	5	
/dev/hda5		849		913		522081	83	Linux
/dev/hda6		914		1027	915673+	83	Linux swap

 

위 명령의 결과로 /dev/hda2에는 2,618,595개의 블록이 잇다는 사실을 알 수 있습니다.

 

아래와 같이 badblocks 명령어로 /dev/hda2를 검사하면 136,521 디스크 블록에 1개의 배드 블록이 발견되었습니다.

# badblocks -v /dev/hda2 2618595
Checking for bas blocks in read-olny mode
From block 0 to 136521					// 135620 : 배드 블록이 발견 디스크 블록
Pass completed, 1 bad blocks found.		// 1개의 배드 블록이 발견됨
반응형

댓글