[RHEL6] 시스템 관리 명령어 2탄(basename, batch, cfgamd, chage)
본문 바로가기
IT 이야기/Linux 명령어

[RHEL6] 시스템 관리 명령어 2탄(basename, batch, cfgamd, chage)

by 찬찬이 아빠 2020. 3. 4.
반응형
  6. basename(파일 이름 추출)

 1) 경로 : /bin/basename

 2) 요약 : 경로와 확장자를 제거한 순수 파일 이름만 돌려받음

 3) 사용 방법 : basename [경로+파일 이름] [확장자]

 4) 옵션

 경로+파일 이름 : 경로를 포함한 파일 이름

 확장자 : 선택 옵션으로 확장자까지 제거하고 싶을 때 사용. 이 확장자로 파일 이름의 맨 마지막에 오는 문자열은 삭제

 --help : 도움말 출력

 --version : 버전 정보 출력

 

 5) 추가 설명

basename 명령어는 경로를 포함한 파일 이름을 인수로 받아 파일 경로를 제거하고 필요에 따라서는 확장자도 삭제하여 순수하게 파일명만 남게 합니다.

 

basename을 이용하여 /etc/chan.txt에서 파일 경로와 확장자를 지워봅시다.

# basename /etc/chan.txt .txt
chan

 

쉘 스크립트 등을 작성할 때 경로를 포함한 파일 이름을 가진 어떤 변수에서 파일 이름만 추출하여 사용하고 싶을 때 basename을 사용하면 편리합니다. 시스템 변수 중 MAIL은 로그인 사용자의 mail 파일과 경로를 저장합니다. 이중 로그인 사용자 명만 추출하고 싶다면 다음과 같이 할 수 있습니다.

# echo $MAIL
/var/spool/mail/root
# basename $MAIL
root

 

 

 

  7. batch(명령 실행 예약)

 1) 경로 : /usr/bin/batch

 2) 요약 : 시스템 부하가 일정 이하가 되면 예약 명령을 실행

 3) 사용 방법 : batch [-V] [-q 큐 이름] [-f 파일명] [mv] [시간]

 4) 옵션

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

 -m : 출력 결과가 없어도 완료되면 사용자에게 메일을 보냄

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

 

 5) 추가 설명

batch는 시스템의 평균 부하가 0.8 이하로 내려가면 예약한 내용을 실행합니다. 시스템 부하가 많이 걸리는 명령을 실행할 때 유용합니다. 먼저 현재 시스템의 평균 부하를 살펴봅니다.

# uptime
3:51am up 19 days, 3:30, 14 users, load average: 6.00, 6.00, 5.93

 

평균 부하가 6 정도인 것을 확인 할 수 있습니다. batch를 이용해 시스템의 부하를 피해 실행할 스크립트를 등록합니다. 등록 후 atq 명령어를 사용해서 예약한 작업 목록을 확인할 수 있습니다.

# batch -f system_backup -m now
job 9 at 2020-02-20 04:00
# atq
10 2020-02-20 04:00 b root

 

등록된 시간을 보고 예약한 내용을 확인 할 수 있습니다.

 

 

 

  8. cfgamd(관리 설정)

 1) 경로 : /usr/sbin/cfgadm

 2) 요약 : 유닉스 기반의 관리를 설정

 3) 사용 방법

  /usr/sbin/cfgadm [-f] [-y | -n] [-v] [-o hardware_options] -c function ap_id...

  /usr/sbin/cfgadm [-f] [-y | -n] [-v] [-o hardware_options] -x hardware_function ap_id...

  /usr/sbin/cfgadm [-v] [-a] [-s listing_options] [-o hardware_options] [-l [ap_id | ap_type]]

  /usr/sbin/cfgadm [-v] [-o hardware_options] -t ap_od...

  /usr/sbin/cfgadm [-v] [-o hardware_options] -h [ap_id | ap_type]

 

 4) 옵션

 -a : -l 옵션과 함께 사용

 -c function : ap_id로 지정된 연결 포인트를 지정한 값(function)으로 상태 변경. 값으로는 insert, remove, disconnect, connect, configure, unconfigure가 있음

 -h [ap_id | ap_type ...] : 사용법 출력. 만일 ap_id나 ap_type을 지정하면, 인자로 지정된 연결 포인트에 대한 사용법을 출력

 -l [ap_od | ap_type ...] : 지정한 연결 포인트의 상태나 조건을 출력

 -n : 상호 확인 모드(interactive confirmation)로 답변을 no로 가정

 -t : 하나 이상의 연결 포인트를 테스트 모드로 실행

 -v : 상세한 정보 출력

 -y : 상호 확인 모드로 답변을 yes로 가정

 

 5) 추가 설명

시스템에 하드웨어 리소스를 장착/제거하거나 바꾸는 경우 해당 시스템을 종료해야 합니다. 하지만 cfgadm은 핫-플러그(hot-plugging) 형식으로 시스템을 종료하지 않고, 하드웨어 리소스를 동적 재설정(dynamic reconfiguration) 할 수 있습니다. 이처럼 cfgadm 명령어는 장치의 상태 정보, 초기화 테스트, 변경된 설정 상태, 하드웨어 특수 함수, 도움말 등을 볼 수 있습니다. 관리 설정은 연결 포인트(attachment points)에서 실행되는데, 이 연결 포인트는 솔라리스가 계속적으로 동작하는 동안 하드웨어 리소스를 동적 재설정하는데 필요한 시스템 소프트웨어입니다. cfgadm은 동적 연결 포인트를 제외한 모든 연결 포인트를 출력합니다.

# cfgadm
Ap_Id			Type			Receptacle			Occupant			Cond
system:slot0	cpu/mem			connected			configured			ok
system:slot1	sbus-upa		connected			configured			ok
system:slot2	cpu/mem			connected			configured			ok
system:slot3	unknown			connected			unconfigured		unknown
system:slot4	dual-sbus		connected			configured			failing
system:slot5	cpu/mem			connected			configured			ok
system:slot6	unknown			disconnected		unconfigured		unusable
system:slot7	unknown			empty				unconfigured		ok
c0				scsi-bus		connected			configured			unknown
c1				scsi-bus		connected			configured			unknown

 

여기에서 occupant는 시스템에 장치가 장착되거나 제거되었는지 여부를 확인할 수 있고, receptacle은 occupant에서 발생한 슬롯이나 커넥터의 위치로 empty, disconnected, connected 등 3가지의 상태를 출력합니다. 아래 예제는 동적 연결 포인트를 포함한 현재 설정할 수 있는 모든 하드웨어 정보를 출력합니다.

 

# cfgadm -al
Ap_Id			Type			Receptacle			Occupant			Cond
system:slot0	cpu/mem			connected			configured			ok
system:slot1	sbus-upa		connected			configured			ok
system:slot2	cpu/mem			connected			configured			ok
system:slot3	unknown			connected			unconfigured		unknown
system:slot4	dual-sbus		connected			configured			failing
system:slot5	cpu/mem			connected			configured			ok
system:slot6	unknown			disconnected		unconfigured		unusable
system:slot7	unknown			empty				unconfigured		ok
c0				scsi-bus		connected			configured			unknown
c0::disk/c0t14d0	disk		connected			configured			unknown
c0::disk/c0t11d0	disk		connected			configured			unknown
c0::disk/c0t8d0		disk		connected			configured			unknown
c0::rmt/0			tape		connected			configured			unknown
c1				scsi-bus		connected			configured			unknown

 

아래 예제는 scsi로 시작하는 클래스, c롤 시작하는 ap_id 그리고 scsi로 시작하는 type 필드의 모든 연결 포인트를 출력합니다. -s 옵션은 쌍 따옴표(")로 묶습니다.

 

# cfgamd -s "match=partial,select=class)scsi):ap_id(c):type(scsi)"
Ap_Id		Type		Receptacle		Occupant		Cond
c0			scsi-bus	connected		configured		unknown
c1			scsi-bus	connected		configured		unknown

 

-v와 0l 옵션은 현재 설정 가능한 ap-type system의 하드웨어 정보를 상세히 출력합니다.

# cfgamd -v -l system
  Ap_Id			Receptacle	Occupant	Condition Information	When		Type		Busy	Phys_id
  system:slot1	connected	configured	ok						Mar 4 19"30	sbus-upa	n		/devices/central/fhc/sysctrl:slot1	

 

아래 예제는 하드웨어를 지정하여 occupant 여부를 테스트 할 수 있습니다.

# cfgadm -v -o extended -t system:slot3 system:slot5
Testing attachment point system:slot3 ... ok
Testing attachment point system:slot5 ... ok

 

아래는 -f 옵션을 사용하여 occupant를 설정하는 예입니다.

# cfgadm -f -c configure system:slot3

 

시스템에서 occupant의 설정 해제는 다음과 같습니다.

# cfgadm -c unconfigure system:slot4

 

 

 

  9. chage(패스워드 만기일 지정)

 1) 경로 : /usr/bin/chage

 2) 요약 : 시스템 보안을 위해 사용자 패스워드의 만기일을 설정하거나 변경

 3) 사용 방법 : chage [옵션] user

 4) 옵션

 -m [최소 날짜] : 패스워드 변경 후 다시 변경할 수 있는 최소 날짜를 지정. 값을 0으로 설정하면 매번 패스워드를 변경해야 함

 -M [최대 날짜] : 패스워드가 유효한 최대 날짜를 지정

 -d [마지막 날짜] : 패스워드의 마지막 변경 날짜를 YYYY-MM-DD 형태로 나타냄

 -E [만료 날짜] : 사용자 계정의 사용 만료 날짜를 지정. 만료 날짜에 -1을 넣으면 만료 일자 설정이 해제됨

 -I(아이) [비활성화기간] : 사용자 계정이 비활성화되는 기간을 설정. 비활성화 기간에 -1을 넣으면 만료 일자 설정이 해제됨

 -W [경고 날짜] : 패스워드 만기 전에 안내 메시지를 보낼 날짜를 지정

 -l(엘) user : 사용자의 패스워드 만기 정보를 출력

 

 5) 추가 설명

chage는 사용자 패스워드 만료 정보를 보거나 만료일을 설정 및 변경합니다. 이는 /etc/passwd와 /etc/shadow 파일을 참조합니다. 시스템 보안적인 측면에서 패스워드 관리는 매우 중요합니다. 하지만 많은 사용자의 패스워드 관리는 그만큼 번거로운 작업입니다.

chage 명령어는 미리 지정한 날짜가 지나면 패스워드를 변경하게 유도하여, 보다 효율적으로 시스템을 관리할 수 있게 도와줍니다. 먼저 chan 계정의 패스워드 만료일 정보를 살펴봅시다.

# chage -l chan
Last password change								: Mar 1, 2020
Password expires									: never
Password inactive									: never
Account expires										: never
Minimum number of days between password change		: 0
Maximum number of days between password change		: 99999
Number of days of warning before password expires	: 7

 

그럼 chan 계정 패스워드 만료일을 최대 날짜수 : 7일, 최소 날짜수 : 1일, 경고 번호 : 7로 변경해 봅시다.

# chage -M 7 -m 1 -W 7 chan
Last password change								: Mar 4, 2020
Password expires									: Mar 11, 2020
Password inactive									: never
Account expires										: never
Minimum number of days between password change		: 1
Maximum number of days between password change		: 7
Number of days of warning before password expires	: 7

 

chage -I 0으로 설정하면, 패스워드 만료 날짜 이후에는 바로 계정을 사용할 수 없게 합니다. 경각심을 불러일으키기 좋은 방법입니다.

# chage -I 0 chan

 

chan 계정 만료일을 2020년 6월 25일로 설정하고, 다시 해제해 봅시다.

<설정>
# chage -E 2020-06-25 chan

<해제>
# chage -E -1 chan

 

 

반응형

댓글