ysuekkom의 IT study note

[linux 기초] 명령어 실습편 - 초 간단 쉘 스크립트 작성 본문

OS/linux

[linux 기초] 명령어 실습편 - 초 간단 쉘 스크립트 작성

ysuekkom 2022. 10. 13. 22:24

[linux 기초] 명령어 실습편 - 초간단 쉘 스크립트 작성 //개인 공부를 위한 기록용으로 일부 과거 자료 이전

 

초간단 쉘 스크립트 > 쉘에서 원하는 결과를 얻기위한 명령어들의 집합을 파일로 만들어 놓은 .

 -명령어 연속 실행

 -파이프라인: 왼쪽의 명령어를 실행한 , 결과를 오른쪽 명령어의 입력으로 사용함

 -세미콜론: 왼쪽의 명령이 끝난 이어서 세미콜론 오른쪽의 명령을 실행함

 -AND 조건: 왼쪽 명령어가 거짓이면 종료, 왼쪽 참이면 오른쪽도 검증

 -OR조건: 왼쪽 명령어가 참이면 종료, (이미 참이기때문, 왼쪽이 거짓이면 오른쪽도 검증)

 - 스크립트

 

 

<파이프라인( | ) 실습>

파이프라인을 이용해 testfile.txt 안에 777이라는 문자열이 존재하는 확인

  1. Testfile.txt 읽고, 읽은 내용에서 777 있는지 확인

>cat testfile.txt 77 있는지 확인 -> grep 777

>cat testfile.txt | grep 777

>>888 없기 때문에 아무것도 안보임

결과는 >grep 777 testfile.txt 같은 결과를 보여줌

 

<실습>

Cent1서버에서 cent3 서버의 루트 파티션의 용량을 살펴보고 싶다

  1. Cent3 서버에 접속한다
  2. 디스트통계를 확인하는 명령어 실행
  3. 루트 파티션의 용량만 확인

>name username@server_ip_address

>ssh cent3(미리설정)

>df -h

>grep /

 

>ssh cent3 "df -h | grep sda1"

 

 

<세미콜론 실습>

 독립적으로 명령어 실행

디렉터리의 현재 위치를 확인 , 디렉터리의 파일을 보고싶을

>pwd

>ls -al

 

>pwd ; ls -al

 

<실무용 실습>

Cent1 서버에서 cent3서버의 로그디렉터리 파일리스트와 디스크 통계를 확인하고자 한다.

  1. Cent1서버에서 cent3 서버로 접속
  2. 로그디렉터리 파일 리스트 확인
  3. 디스크 통계 확인

>ssh cent3

>ls -al /var/log

>df -h

>ssh cent 3 "ls -al /var/log ; df -h"

 

 

<AND 조건 && >

-연산의 하나라도 거짓이 있으면 전체 결과가 거짓

 -좌측 명령/테스트의 결과가 참이면 우측 명령 실행

 -좌측 명령/테스트의 결과가 거짓이면 우측명령 실행하지 않음

 

>A && B

A: /거짓을 판단하는 조건 /명령

B: A 참일 경우 실행할 명령어

Test 커맨트를 대괄호  [ ] 대체 있다.

 

 

<OR 조건 || >

 -연산의 하나라도 참이 있으면 전체 결과가

 -좌측 명령/테스트의 결과가 참이면 우측의 명령을 실행하지 않음(이미 참이기 때문)

 -좌측 명령/테스트의 결과가 거짓이면 우측 명령을 실행

 


###퀴즈와 3장 정리

 

Q1) 다음 내용을 줄로 실행

 -현재 위치에서 tmp디렉터리를 생성

 -tmp  디렉터리 안에서 tmp.txt 생성

 -tmp.txt파일에 tmp라는 내용을 입력

 -tmp.txt 파일의 내용을 화면에 출력

 

>mkdir tmp ; touch tmt.txt > tmp ; cat tmp.txt

>mkdir tmp ; touch tmp/tmp.txt ; echo "tmp" > tmp/tmp.txt ; cat tmp/tmp.txt

 

Q2) cent3서버의 프로세스 리스트에서 nfs 프로세스를 확인

>ssh cent3

>ps -ef / ps aux

>ps -ef | grep nfs

 

>ssh cent3 "ps -ef | grep nfs"

 ssh 명령어에 "명령어"하면 "명령어" 실행해

 

Q3) Q2에서 nfs프로세스의 갯수를 확인 (grep 프로세스 제외)

>ssh cent3 "ps -ef | grep -c nfs"

>ssh cent3 "ps -ef | grep nfs|wc -l"

 

Grep 프로세스 제외

>ssh cent3 "ps -ef | grep nfs | grep -v grep | wc -l"

>ssh cent3 "ps -ef" | pgrep -l nfs"

 

Q4) /var/log 디렉터리 하위에서 message로그가 있는지 확인하고 있으면 message 로그의 하위 15라인을 출력

<test문의 조건>

 -e: 파일이 존재하는가

 -f: 지정한 파일이 파일이면 그외 거짓

 -d: 지정한 파일이 디렉터리면 그외 거짓

 

&& -e 옵션 사용하기

>[ -e /var/log/messages ] && tail -n 15 /var/log/messages

 

Q5) mount 결과를 보기 편하게 정렬

>mount

결과가 띄워져서 나옴 -> mount 결과를 파이프라인으로 넘겨서 -t 옵션 사용 , 보기 편하게 출력

>mount | column -t

 

Q6) ss 결과를 보기 편하게 정렬

>ss | cat