교육/코드스테이츠

[4일차] 관리자로서의 리눅스

nooh_ij 2022. 12. 1. 18:09

https://www.servermon.kr/m/board.html?code=servermon_board2&page=10&type=v&board_cate=&num1=999794&num2=00000&s_id=&stext=&ssubject=&shname=&scontent=&sbrand=&sgid=&datekey=&branduid=&number=&lock=N

 

표준 스트림이란?

특정한 프로그래밍 언어 인터페이스뿐 아니라 유닉스 및 유닉스 계열 운영 체제에서 컴퓨터 프로그램과 그 환경 사이에 미리 연결된 입출력 통로를 가리킨다. 표준 스트림에는 stdin(표준 입력), stdout(표준 출력) 및 stderr(표준 오류)의 세 가지 표준 스트림이 있다. 이러한 스트림은 일반적으로 프로그램이 실행 중인 터미널이나 콘솔과 연결되지만 필요에 따라 파일이나 다른 프로세스로 리다이렉션될 수 있다.

 

  •  stdin
    • 표준 입력은 프로그램으로 들어가는 입력값의 데이터(보통은 문자열) 스트림이며, Standard Input을 stdin으로 줄여 표현합니다. 리눅스 쉘에서는 표준 설정이 키보드로 되어 있습니다. 그러나 모든 프로그램이 입력을 요구하지 않으며, 대표적인 예로는 비밀번호를 입력할 때 이러한 표준 입력 스트림을 사용한다.
  • stdout
    • 표준 출력은 프로그램이 출력 데이터를 기록하는 스트림으로, Standard Output을 stdout으로 줄여 표현합니다. 표준 출력은 텍스트 터미널에서 이루어집니다. 표준 입력과 마찬가지로 모든 프로그램이 출력을 요구하지 않는다.
  • stderr
    • 표준 오류는 프로그램이 오류 메세지나 진단을 출력하기 위해 일반적으로 쓰이는 또다른 출력 스트림이며, Standard Error를 stderr로 줄여 표현한다.

 

리다이렉션

  • 표준 스트림의 흐름을 바꿔 파일로 표준 입/출력을 할 수 있도록 한다.
  • 리다이렉션 사용시 " > " , " < " 을 사용한다.
  • ex) head < ps.txt > sample.txtps.txt 의 내용을 head 명령의 입력 스트림으로 전환하여 전송한다.
    • head 명령은 입력 받은 ps.txt 의 내용에서 처음 10줄을 출력한다.
    • head 명령의 출력 스트림은 결과를 sample.txt 파일에 저장한다.

 

출처: https://urclass.codestates.com/content/6fba33af-3880-4fb9-9b83-7d9438880e02?playlist=2735

 

 

파이프

 process1 명령의 결과를 process2 명령의 입력으로 받아야 할 때 사용되며, 파이프 기호 " | "를 이용해 사용할 수 있다.

$ process1 | process2

 

출력 관련 명령어

  • grep
    • grep "error" 파일명: "오류"라는 단어를 검색
    • grep –i "error" 파일명: 대소문자를 구분하지 않도록 설정
    • grep –c "error" 파일명: 검색 문자열이 포함된 줄 수만 계산
    • grep –v "error" 파일명: 검색 문자열을 포함하지 않는 모든 행을 출력
    • grep –w "error" 파일명: 검색 문자열을 단어로 찾을 경우

 

  • sed: 문자열 치(찾기 및 바꾸기)
    • sed 's/원본문자열/바꿀문자열/g' 파일명
    • sed 's/sample1/good/' 파일명: sample1을 good으로 바꿈
    • sed 's/sample1/ID2023/g' 파일명: 한 줄의 모든 항목을 바꿈
    • sed -i 's/sample1/ID2023/3' 파일명 - sed의 변경 사항을 저장하려면 “-i”를 사용하여 원본 파일을 변경해야 한다.

 

  • sort: 파일 내에서 줄이나 열을 정렬하는 데 사용
    • - f : 대, 소문자를 모두 출력한다.
    • - d : 공백과 알파벳 문자 순으로 정렬한다.
    • - r : 정렬 순서를 반대로 하여 내림차순으로 정렬한다. (소문자, 대문자, 숫자, 공백)
    • - o : 정렬한 결과를 파일명으로 저장한다.
    • - n : 숫자를 같은 문자가 아닌 정말로 숫자로 취급해서 수의 크기대로 정렬한다.

 

  • awk: 패턴(pattern)과 액션(action)을 정의하여 입력으로 주어진 파일의 데이터를 가공하여 출력한다.
    • 텍스트 파일에 각 줄(line)은 레코드(Record)이며, 그 안에 각각의 단어들이 필드(Field)라고 한다.
1 2
3 4

 cat a.txt | awk '{print $1 * $2;}'
 2
 12
 
 ex) awk '{ print $1 }' ./test1 | wc -l: 테스트 파일에 레코드1에서 개수 출력

 

  • man: 매뉴얼(도움말 보기) - 명령어에 대한 매뉴얼을 터미널 창에서 알려주는 명령어

 

  • cat: 파일 내용 출력

 

  • wget
    • 웹에서 파일 다운로드를 도와주는 명령어
    • 파일 다운로드 후 cat, cat –n 등으로 내용 확인
    • wget <도메인> <파일명>

 

  • more 
    • 파일을 화면 단위로 끊어서 출력
    • more +/Gatsby gatsby.txt - 입력한 문자열이 포함된 페이지를 출력
    • more +/3 gatsby.txt - 입력한 line을 포함한 페이지를 출력 (3번째 줄부터 출력)

 

  • less
    • 파일 내용 출력
    • cat은 파일 내용을 한 번에 모두 출력하는 반면, less는 페이지 단위로 파일 내용을 출력한다.
    • 파일의 크기가 큰 경우 파일 전체를 출력하는 것이 아닌 일부만 출력할 수 있어 시스템 자원을 절약할 수 있다.

 

  • head
    • 파일 앞부분 출력
    • 기본적으로 상단의 10개의 라인을 출력
    • - n (라인 수) : 파일의 마지막줄부터 지정한 라인수까지의 내용을 출력한다.

 

  • tail
    • 파일의 마지막 행을 기준으로 지정한 행까지의 파일 내용 일부를 출력. 기본 값으로 마지막 10줄을 출력
    • - f : tail을 종료하지 않고 파일의 업데이트 내용을 실시간으로 계속 출력한다
    • - n (라인 수) : 파일의 마지막줄부터 지정한 라인수까지의 내용을 출력한다.
    • tail test.txt test1.txt : 여러 파일도 한번에 가능

 

  • wc
    • 파일의 줄, 단어 및 문자 수를 계산하는 데 사용할 수 있다.
    • wc – l 파일명: 줄 수만 얻을 경우
    • wc – w 파일명: 단어 수만 얻을 경우
    • wc – c 파일명: 문자 수만 얻을 경우

 

  • uniq
    • 중복된 내용에 행이 연속으로 있을 경우 하나만 남기고 삭제한다.
    • - c: 같은 라인이 몇번 나오는지 표시
    • - u: 중복 라인이 없는것만 보여준다
    • 주로 sort로 정열 후 주로 사용된다.

 

  • cut
    • 특정 파일의 열을 출력하여 제거하거나 원하는 열만 출력할 수 있는 명령어
    • - c: 지정된 문자 출력
    • - f: 지정된 필드를 출력하는 옵션
    • - d: 필드 구분자를 설정하는 옵션이다.
 cut -b3 /etc/passwd: [n] 번째 라인 출력
 cut -b5-10 /etc/passwd: [n]번째 ~ [n]번째 라인 출력
 cut -d : -f 1,2,3 /etc/passwd: 구분자를 이용하여 [n]번째 ~ [n]번째 라인 출력

 

  • find
    • 파일 권한, 소유권, 수정 날짜, 크기 등과 같은 특정 기준에 따라 파일을 검색 할 수 있다.
    • find . -name “이름*”: 찾을 파일 이름을 지정해서 찾기
    • sudo find / -size+10M: 파일 크기 지정해서 찾기 (권한 필요)
    • find . -empty: 빈파일 찾기
    • find . -newer practice.txt:  파일 보다 최근에 변경된 파일 찾기

 

  • locate
    • 특정 파일 위치 찾기
    • locate 파일명: 파일 이름으로 찾기
    • locate –n 10 *.txt: (n 파일 수 검색) 검색할 파일 수(n) 지정하여 찾기

 

  • which
    • 실행 파일 위치 확인

 

정규 표현식

데이터 검색, 복잡한 패턴 매칭을 도와주는 특별한 문자다.

주로 문자열 패턴 매칭을 검사하거나 또는 문자열을 치환하기 위해 사용한다.

출처:&nbsp;https://rfriend.tistory.com/373

 

접근 권한

우분투에서는, 사용자가 절대 관리자 권한에 접근할 수 없도록 구분해두지만 새로운 프로그램을 설치하거나 변경 또는 삭제할 때에 관리자 권한이 반드시 필요하기 때문에, 특정 명령어를 입력하는 것으로 잠시 관리자 권한을 빌려올 수 있다.

 - whoami: 현재 로그인된 사용자 확인

 - " / ": 최상위 디렉토리 루트

 - " ~ ": 사용자 디렉토리의 경로

 

  • sudo
    • 사용자 환경에서 루트 권한을 일시적으로 획득하는 명령어 - 비밀번호와 함께 사용

 

  • su 
    • su를 실행하면 루트 계정으로 로그인할 수 있습니다. 이 때 입력하는 비밀번호는 루트 계정의 비밀번호 사용

 

  • sudo의 장점
    • 명령 로그가 기록된다.
    • 사용자들은 무제한의 루트 권한 없이 특정 작업을 수행할 수 있다.
    • sudo가 su를 사용하거나, 루트로 로그인하는 것보다 빠르다.
    • 루트 권한을 갖는 모든 사용자의 목록을 관리할 수 있다. (sudoers 파일이라고 부릅니다.)

 

  • sudo의 단점
    • sudo 사용자 개인 계정의 보안이 뚫리면, 루트 계정 자체가 뚫린 것과 마찬가지가 된다.
    • sudo 명령 기록은 sudo를 이용해 지울 수 있다. (다만 이러한 시도를 했다는 것을 명령어 로그를 통해 알 수 있다.)

 

  • 환경 변수
    • 각기 다른 컴퓨터 또는 사용자마다 별도로 가질 수 있는 고유한 정보를 담는데 사용하는 변수이다.
    • 키=값 형태로 되어 있으며 프로그래밍 언어에서 말하는 변수 개념과 동일하다.

 

  • env: 환경변수 명령어
    • * SHELL: 어떤 종류의 쉘(대화형 인터페이스)을 사용할지 선택하는 환경 변수
    • * HOME: 홈 디렉토리가 무엇인지 알려주는 환경 변수
    • * PATH: 어디서든 해당 디렉토리에 있는 실행 파일을 실행할 수 있게 만들어주는 환경 변수

 

  • export: 환경변수를 임시로 적용
    • 환경 변수 설정은 지금 열려있는 터미널에 한정되며, 새로운 터미널 창을 열면, export 명령으로 설정해놓은 환경 변수는 초기화된다.

 

SSH(Secure Shell)란?

Linux 및 Unix 기반 시스템에 대한 원격 액세스를 보호하는 데 사용되는 암호화 네트워크 프로토콜로 클라이언트와 서버 간에 안전하고 암호화된 연결을 제공하여 사용자가 원격으로 로그인하고 명령을 실행할 수 있게 한다.

 

파일 권한

Linux의 파일 권한 시스템은 읽기, 쓰기 및 실행의 세 가지 권한을 사용한다. 권한은 user - group - other에게 할당된다. 권한 설정은 "chmod" 명령을 사용하여 보고 수정할 수 있다.

 

  • user - group - other
    • user: 파일의 소유자로 기본적으로 파일을 만든 사람
    • group: 그룹에 속한 모든 user는 파일에 대한 동일한 group 액세스 권한을 갖음
    • other: 파일에 대한 액세스 권한이 있는 다른 user로 파일을 만들지 않은 다른 모든 user를 의미

출처:&nbsp;https://urclass.codestates.com/content/9ceb8933-1e6c-4258-8ee8-fd7cfcab3499?playlist=2735

 

  • chmod: 권한을 변경하는 명령어
    • OS에 로그인한 사용자와, 폴더나 파일의 소유자가 같을 경우 chmod 로 폴더나 파일의 권한을 변경할 수 있다.
    • 소유자가 다를 경우 sudo를 이용해 폴더나 파일의 권한을 변경한다.

 

  • 권한 변경 방법
    •  Symbolic method: 더하기(+), 빼기(-), 할당(=)과 액세서 유형을 표기
    • ex) chmod g+r 파일명: 그룹에 읽기 권한을 더한다.

출처:&nbsp;https://urclass.codestates.com/content/9ceb8933-1e6c-4258-8ee8-fd7cfcab3499?playlist=2735

 

  • Absolute form: rwx를 숫자 7까지 나타내는 3 bits의 합으로 표기
  • ex) u=rwx (4 + 2 + 1 = 7), go=r (4 + 0 + 0 = 4) - chmod 744 helloworld.txt

출처: https://urclass.codestates.com/content/9ceb8933-1e6c-4258-8ee8-fd7cfcab3499?playlist=2735

 

● [C215] 파이프라인과 리다이렉션이 무엇인지 예시를 들어 설명하세요.

 

1. 9명에 사람들에게 좋아하는 동물들을 물어봤다

- dog, cat, dog, dog, ele, rab, gir, hor, cat에 내용을 가지고 있는 ani.txt파일을 만든다.

- nano ani.txt

2. 한 사람이 ele에서 cat으로 바꿨다

- sed 's/ele/cat/' ani.txt

3. 중복되는 동물들에 수를 합한다.

- sort | uniq c

4. 4개의 보기만 본다.

- head 4

5. 다른 파일에 저장 한다

- > favani.txt

 

$ sed 's/ele/cat/' ani.txt | sort | uniq -c | sort -r | head 4 > favani.txt

- 3 dog, 3 cat, 1 rab, 1hor

 

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

참고 자료

 

https://ko.wikipedia.org/wiki/%ED%91%9C%EC%A4%80_%EC%8A%A4%ED%8A%B8%EB%A6%BC

 

표준 스트림 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 입력, 출력, 오류를 위한 표준 스트림 표준 스트림(standard streams)은 특정한 프로그래밍 언어 인터페이스뿐 아니라 유닉스 및 유닉스 계열 운영 체제(어느 정도까

ko.wikipedia.org

 

https://inpa.tistory.com/entry/LINUX-%F0%9F%93%9A-awk-%EB%AA%85%EB%A0%B9%EC%96%B4-%EB%AC%B8%EB%B2%95-%EB%A7%88%EC%8A%A4%ED%84%B0-%F0%9F%92%AF-%EC%B4%9D%EC%A0%95%EB%A6%AC

 

🐧 AWK 명령어 문법 마스터 💯 총정리

AWK (Aho Weinberger Kernighan) 개념 AWK는 텍스트가 저장되어 있는 파일을 원하는 대로 필터링하거나 추가해주거나 기타 가공을 통해서 나온 결과를 행과 열로 출력해주는 프로그램 이다. 좀더 쉽게 말

inpa.tistory.com

 

댓글수0