2/10 정리

잼우·2022년 2월 10일
1

리눅스

목록 보기
2/3

*공부한 내용을 토대로 혼자서 정리하는 글입니다.
틀린 부분이나 보충할 부분 지적 언제든 환영합니다 :)


Ubuntu 패키지 매니저 - apt

1. apt 명령어 이용하기

  • 우분투는 기본적으로 apt라는 패키지 매니저가 내장되어 있음

입력 Code : apt

apt 입력 시 위와 같은 메세지를 출력함

2. apt 패키지 매니저의 주요 명령어

  • 패키지 목록 갱신 : apt update (관리자 권한 필요)
    - 패키지를 다운로드받을 수 있는 여러 저장소의 최신 정보를 업데이트함
    새로운 저장소를 추가하거나, 패키지를 설치하기 전, 최신 정보를 갱신함
    - 설치된 프로그램이 새로운 버전으로 변경되지 않음
  • 업그레이드 가능한 패키지 목록을 출력 : apt list --upgradable
  • 전체 패키지 업그레이드(버전 업) : apt upgrade (관리자 권한 필요)
  • 특정 패키지만 업그레이드(버전 업) : apt --only-upgrade install 패키지이름 (관리자 권한 필요)
  • 패키지 설치 : apt install 패키지이름 (관리자 권한 필요)
  • 설치된 패키지 보기 : apt list --installed
  • 패키지 검색 : apt search 검색어
  • 패키지 정보 확인 : apt show 패키지이름
  • 패키지 삭제 : apt remove 패키지이름 (관리자 권한 필요)

3. 관리자 권한 사용하기

  • 패키지 설치/삭제 등의 작업을 진행할 때 sudo 명령어를 이용해서 관리자 권한을 획득해야 함

1. sudo 권한을 얻지 않았을 때

'are you root?' 라는 에러문구를 확인할 수 있음

2. sudo 권한을 얻었을 때


프로세스 관리

1. 프로세스, 스레드, 멀티 스레드

1 ) 프로세스 : 사용자가 프로그램을 실행하면, 운영체제로부터 실행에 필요한 메모리를 할당 받아 프로그램의 코드를 실행함. 이때의 프로그램을 프로세스 라고 함.

- 하나의 프로그램을 여러 번 구동하면 여러 개의 프로세스가 메모리 상에서 실행됨

2 ) 스레드 : 코드가 실행되는 하나의 흐름이기 때문에, 한 프로세스 내에 스레드 가 두 개라면 코드가 실행되는 흐름이 두 개 생긴다는 의미

3 ) 멀티 스레드 : 애플리케이션 내부에서의 멀티 태스킹
- 애플리케이션 단위의 멀티 태스킹을 의미하는 멀티 프로세스 와는 다름

2. 프로세스 관리 - ps, pstree

  • 리눅스의 프로세스는 포그라운드(foreground)백그라운드(background) 방식으로 동작함

- 포그라운드(foreground)

: 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 기다려야 하는 방식

- 백그라운드(background)

: 프로세스가 실행되는 동안 뒤에서 다른 프로세스가 실행될 수 있으므로 한 터미널에서 여러 개의 프로세스를 동시에 실행하는 방식

  • 명령어 뒤에 & 를 붙여서 실행하고, 다른 명령어를 추가적으로 입력할 수 있음
    but, 백그라운드 방식으로 실행해도 사용자의 터미널 세션이 종료되면 실행중인 프로세스도 종료됨
    따라서 작업시간이 오래 걸리는 작업인 경우 nohup 명령어를 이용하여 백그라운드로 실행하면 사용자의 터미널 세션이 종료되어도 작업이 종료될 때까지 프로세스를 실행

1 ) ps : 현재 실행 중인 프로세스의 목록을 확인할 수 있음

- PID : 프로세스 번호
- TTY : 프로세스가 실행된 터미널의 종류와 번호
- TIME : 프로세스 실행 시간
- CMD : 실행되고 있는 프로그램의 이름(명령)

2 ) pstree : 컴퓨터의 전체 프로세스를 구조화하여 확인하고 싶을 때 사용

3. 프로세스 관리 - jobs

  • 백그라운드에서 수행 중인 프로세스는 jobs 명령으로 확인 가능함

- [ 1 ] 혹은 [ 2 ] 라고 되어 있는 기호는 작업 번호를 의미함
- + 기호로 표시된 프로세스는 현재 처리되고 있는 작업을 의미하며, - 기호는 다음에 작업할 프로세스를 의미
- 다수의 프로세스가 백그라운드에서 작업하는 도중에 필요하다면, fg %작업번호 명령을 사용하여 포그라운드로 전환

4. 프로세스 관리 - kill

  • 특정 프로세스에 작업 중지, 실행 종료, 대기, 재시작, 강제 종료 등의 시그널을 전달하기 위해서 kill 명령을 사용
  • 시그널이란?
    이벤트를 프로세스에 알려주기 위해서 사용하는 것

kill -l 명령을 사용하면, 사용할 수 있는 시그널의 종류를 확인 가능

  • 자주 사용하는 시그널
  1. SIGHUP : 재시작할 때 사용
  2. SIGINT : 실행 중지 시그널, Ctrl + c
  3. SIGKILL : 프로세스 강제 종료
  4. SIGTERM : 프로세스 정상종료 (기본 명령)
  5. SIGCONT : 정지된 프로세스 실행
  6. SIGSTOP : 터미널에서 입력되는 정지 시그널
  7. SIGTSTP : 실행 정지 후 재실행 대기, Ctrl+ z

출력 관련 명령어

1. 표준 스트림과 stdin, stdout, stderr

1 ) 표쥰 스트림 : 일반적으로 동작하는 프로그램은 실행 시, 자동으로 열리는 세 개의 스트림

- 스트림(stream)이란?

하드웨어 장치별로 입력과 출력을 위한 설정 작업을 따로 하는 것이 아니라 파일을 읽고 쓰는 한 가지 작업으로 통일했고, 이 파일에 들어오고 나가는 데이터의 흐름

2 ) stdin (Standard Input) : 표준 입력은 프로그램으로 들어가는 입력값의 데이터(보통은 문자열) 스트림

모든 프로그램이 입력을 요구하지 않으며, 대표적인 예로는 비밀번호를 입력할 때 이러한 표준 입력 스트림을 사용

3 ) stdout (Standard Output) : 표준 출력은 프로그램이 출력 데이터를 기록하는 스트림

표준 입력과 마찬가지로 모든 프로그램이 출력을 요구하는 것은 아님

4 ) stderr (Standard Error) : 표준 오류는 프로그램이 오류 메세지나 진단을 출력하기 위해 일반적으로 쓰이는 또다른 출력 스트림

2. 파이프라인과 리다이렉션

1 ) 리다이렉션(Redirection) : 표준 스트림의 흐름을 바꿔 파일로 표준 입/출력을 할 수 있도록 함

< 혹은 > 를 이용하여 나타냄

- > 를 사용하는 경우

입력 Code : ps aux > jam.txt // 명령어 > 파일


- < 를 사용하는 경우

입력 Code : head < jam.txt // 명령어 < 파일

head 명령은 파일의 처음 부분을 설명한 라인(line)만큼 출력하는 명령, 기본값으로 10줄이 세팅됨


  • 응용

입력 Code : head < jam.txt > jjam.txt // 명령어1 < 들어오는 파일 > 나가는 파일

1 - jam.txt 의 내용을 head명령의 입력 스트림으로 전환하여 전송
2 - head 명령은 입력 받은 jam.txt 의 내용에서 처음 10줄을 출력
3 - head 명령의 출력 스트림을 jjam.txt 파일에 연결
4 - head 명령의 출력 스트림은 결과를 jjam.txt 파일에 저장

2 ) 파이프 (pipe) : 어떤 명령의 결과를 다시 어떤 명령의 입력으로 받아야 할 때 사용되며, 프로세스1의 출력 스트림을 프로세스2의 입력 스트림으로 사용할 때 파이프 기호 | 를 사용하여 아래와 같은 형식으로 작성

ex ) process1 | process2

입력 Code : ls -l | grep ssh

ls -l 명령으로 표준 출력을 하고, 출력 된 내용을 ssh 이라는 인자를 전달 받는 grep 명령에 표준 입력으로 전달

* grep : 특정 문자열을 찾으려고 할 때 사용하는 명령


3. 출력 관련 명령어

래퍼런스 1
래퍼런스 2
래퍼런스 3

자주 보고 익히자


profile
DevOps 새내기

0개의 댓글