전체 702

[리눅스] 쉘 스크립트 - 특수한 환경변수

특수한 환경변수 변수 설명 $ 현재 shell의 프로세스아이디 $0 현재 script의 파일이름 $n script 실행시 입력한 n번째 파라미터 $# script 실행시 입력한 파라미터의 개수 $* 모든 인자를 ""로 감싸서 반환 $@ 각 인자를 ""로 감싸서 반환 $? 마지막으로 실행된 명령어의 종료상태 $! 마지막 백그라운드 명령어의 프로세스 아이디 특수한 환경변수 사용 쉘 스크립트 예시 1. 쉘스크립트 작성 special-var.sh #!/bin/sh echo "PID: $$" echo "File Name: $0" echo "First param: $1" echo "Second param: $2" echo "Num of params: $#" echo "Quoted value : $@" echo..

CLI/터미널 2023.04.18

[리눅스] 특별한 환경변수 $PATH

$PATH - 운영체제가 명령어의 실행파일을 찾는 경로 - $PATH에 등록된 경로 안에 있는 실행파일은, 별도의 경로까지 들어가서 실행하지 않고, 단독으로 명령을 수행할 수 있다. ex) 1. cd cd라는 명령어는 어느 위치에서도 사용할 수 있다. 그 말은 cd라는 명령어가 있는 디렉토리가 $PATH에 등록되어 있다는 것이다. cd라는 명령어는 /usr/bin/에 있다. 그럼 $PATH에는 /usr/bin가 등록되어 있을 것이다. 실제로 있다. 2. echo echo라는 명령어 역시 어느 위치에서든 사용할 수 있다. echo라는 명령어는 /bin에 있다. $PATH에 /bin이 등록되어 있는지 확인한다. $PATH에 환경변수 추가방법 1. 임시 추가(다시 실행시 삭제) export PATH=$PA..

CLI/터미널 2023.04.16

[리눅스] 환경변수

환경변수 임시설정 export {환경변수명}=값 환경변수 영구설정 1. bash_profile 파일열기(bash_profile은 내 계정으로 로그인시만 적용됨. 모든 사용자들에 사용할 수 있게 하려면 sudo vi /etc/profile 에서 아래 단계 수행) vi .bash_profile 2. 환경변수 입력 3. 소스 적용(bash실행시 bash_profile을 항상 실행함) source .bash_profile 4.환경변수확인(환경변수를 불러올때는 ${환경변수이름})

CLI/터미널 2023.04.16

[리눅스] vi 단축키 및 명령

이동 단축키 단축키 설명 j 아래줄로 이동 k 윗줄로 이동 h 왼쪽으로 이동 l(엘) 오른쪽으로 이동 gg 맨 첫줄로 이동 shift+g 맨 끝줄로 이동 shift+6 줄 맨앞으로 이동 shift+4 줄 맨 뒤로 이동 명령 명령 설명 :set number 줄번호 보이기 :set nonumber 줄번호 없애기 :30 30번 줄로 가기 /word word라는 단어 찾기(n을 누르면 다음 찾기로 이동, shift n을 누르면 이전찾기로 이동) 1. 줄번호 보이기 :set number 2. 줄번호 보이기 :set nonumber

CLI/터미널 2023.04.10

[리눅스] stdout, stderror

stdout을 지정된 파일에 저장 1> : stdout을 지정된 파일에 저장 ex) 현재디렉토리(.)에서 파일이름이 my로 시작하는 것들의 결과값을 stdout.log에 저장 find . -name "my*" 1>~/stdout.log stderr을 지정된 파일에 저장 2> : stderror를 지정된 파일에 저장 ex) 현재디렉토리(.)에서 파일이름이 my로 시작하는 것들의 결과값을 stdout.log에 저장, 에러값을 stderror.log에 저장 find . -name "my*" 1>~/stdout.log 2>~/stderror.log 표준입출력과 에러 둘다 저장 &> : 출력값과 에러값을 모두 저장 ex) 표준입출력과 에러 둘도 both.log에 저장 find . -name "my*" &>~/b..

CLI/터미널 2023.04.09

[리눅스] 터미널 명령어

1. 기본 명령어 설명 {명령} --help 특정 명령어의 파라미터들 및 설명 확인 gedit {파일경로} GUI환경 텍스트 에디터 수정 vi {파일경로} 파일 내용 출력 및 수정 ctrl+shift+c 복사 ctrl+shift+v 붙여넣기 pwd 현재 디렉토리 위치 print 폴더, 파일 이동 mv /folderName /home/tmp/folderName (mv 현재위치 옮기고싶은 위치) $(pwd) 현재디렉토리 ( ex. 현재디렉토리의 a폴더? -> $(pwd)/a cd / 최상위 디렉토리로 이동 cd /{folder}/... 절대경로를 사용할때는 / 부터 입력 cd {folder}/ 상대경로를 사용할때는 파일이름부터 입력 du -h 리눅스 전체 디스크 용량 df -h 현재 디렉토리 디스크 용량 u..

CLI/터미널 2023.04.09

[리눅스] 파일 소유주, 권한, 권한변경 (chmod)

개요 ls -al을 하면 앞에 소유자에 따른 권한 정보가 나온다. 이는 파일의 소유자에 따른 권한을 의미한다. 이를 구체적으로 알아본다. 파일의 소유자와 권한 - 파일타입 : 파일(-), 디렉토리(d) - 파일권한 범위 : 파일소유자(u, user), 그룹(g, group), 사용자(o, other)가 있고, 이 모든것을 포함하는 모든 사용자(a, all)가 있다 - 파일 권한의 종류 : r(read), w(write), x(excute) chmod(CHange MODe)를 이용한 권한변경 - (+,-) 를 이용한 권한변경(모든 소유자에 대하여 실행권한을 부여한다 혹은 박탈한다) //모든 소유자에 x권한 부여 chmod +x hi.txt - 특정 유저에의 권한변경 //u유자의 x권한 박탈 chmod u..

CLI/터미널 2023.04.05

[jenkins] credential등록하기

젠킨스 credential등록하기 git repository, aws ec2등과 연결을 위한 credential 등록 manage credential 들어가기 1. jenkins 관리 / manage credentials 2. system 클릭 3. global credential 4. add credential ssh key 등록 1. 정보입력 2. ssh key 확인 및 입력 ssh-key를 생성한 디렉토리에서 ssh-key파일(.pub 이라는 확장자가 없는)을 cat명령어로 열어서 key를 확인하고 jenkins의 private key에 입력한다(이때 아래와 같이 -----BEGIN OPENSSH PRIVATE KEY-----부터 -----END OPENSSH PRIVATE KEY-----까지 모..

AWS 2023.04.01

[AWS] EC2에 docker 설치후 jenkins 이미지로 실행하기

작업 설명 1. EC2 인스턴스 생성(ubuntu) 2. ubuntu접속 및 docker 설치 3. jnekins 이미지 설치 및 컨테이너 실행 4. 로컬에서 jenkins 접속 1. EC2 인스턴스 생성 인스턴스를 생성할 때 8080 포트를 하나 열어 놓는다. 2. ubuntu접속 및 docker 설치 EC2 인스턴스 (ubuntu) 접속 후 아래 명령어 차례대로 실행 // 도커 다운로드 sudo apt install //apt업데이트 sudo apt install -y docker.io //도커 다운로드 sudo chmod 666 /var/run/docker.sock //도커 권한 부여 3. jenkins 이미지 설치 및 컨테이너 실행 3.1 젠킨스 이미지 다운로드 및 컨테이너 실행 // 젠킨스 ..

AWS 2023.03.31

AWS VPC, EC2 세팅 및 실행

VPC 세팅 VPC는 Virtual Private Cloud로서 가상의 네트워크 클라우드를 의미한다. 특정 IP 범위를 할당받으며 그 안에서 EC2같은 AWS리소스를 할당 받을 수 있다. 1. 생성 2. IP설정 2.1 VPC등을 선택하면 서브넷, 라우팅 테이블 등이 기본적으로 세팅된다. 2.2 IPv4 : 원하는 ip를 설정한다. 2.3 퍼블릭 서브넷 : 인터넷에서 엑세스 할 수 있는 공개된 서브넷 EC2 세팅 1. EC2 인스턴스 생성 2. EC2 인스턴스 2.1 인스턴스 이름 설정 2.2 인스턴스 이미지(운영체제 및 버전)설정 3. 인스턴스 유형 3.1 EC2의 CPU, 램등을 선택 3.2 자원에 따른 비용은 상이함 4. 키페어 생성 ssh를 이용하여 접속할 때 사용할 키를 생성하는 작업. 키 ..

AWS 2023.03.30

네트워크 방화벽이란

방화벽이란? 외부 사용자들이 내부 내트워크에 접근하지 못하게 하는 네트워크 방어도구. 방화벽의 종류 1. 패킷 필터링 1.1 패킷 필터링이란 ? : 라우터에서 행해지는 필터링. 발신지의 IP/protocal/port/패킷등에 조건을 걸어 허용된 ip등 만을 접속하게 해주는 방화벽 기법 1.2 장점 : 별도의 방화벽 필요없이 라우터만으로 방화벽을 설정할 수 있다는 장점이 있다. 2. 어플리케이션 프록시 방화벽 2.1 어플리케이션 프록시 방화벽이란 ? : 어플리케이션 게이트웨이를 통한 방법. 2.2 프록시란? : 사설 통신망의 사용자가 공중 통신망을 간접적으로 엑세스할 수 있도록 한 네트워크 서버 3. 웹방화벽 3.1 웹서버 앞에 위치하여 외부로 부터 들어오는 HTTP/HTTPS트래픽을 감시. 악의적인 공..

CS/네트워크 2023.03.30

[AWS] VPC, 서브넷, 라우팅 테이블, 라우터, region

VPC란? - AWS 리소스를 이용할 수 있는 논리적으로 할당된 가상의 네트워크 공간 - VPC를 이용하여 리소스들을 쉽게 제어할 수 있음 - 하나의 리전에 대해 계정 당 하나의 VPC를 받는다. 서브넷이란? - VPC를 잘개 쪼갠 단위(VPC안에 있으므로 VPC보다 작은 아이피 범위를 갖는다). - 더 많은 네트워크 망을 만들기 위해 생성. - 서브넷 안에 EC2 인스턴스같은 리소스를 위치할 수 있음(여러개 있을 수도 있음) - 서브넷은 CICD 라우팅 기법을 이용한다. (VPC는 해당 VPC에 연결된 subnet보다 항상 더 적은 network범위 값을 갖는다 * CIDR : Classless Inter-domain Routing 클래스가 없는 도매인 간 라우팅 기법으로 특정 host가 어떤 ne..

AWS 2023.03.29

DEADLOCK의 정의, 조건, 해결책

DEADLOCK(교착상태) 이란 둘 이상의 프로세스가 각자 서로가 필요한 자원을 점유한 상태로 무한정 대기하는 상황 DEADLOCK 발생조건 다음 네 조건을 만족하면 데드락에 빠질 수 있는 가능성이 있다. 1. 상호배제 : 자원들은 한 프로세스만 점유할 수 있다. 2. 점유대기 : 특정 프로세스에게 쓰이고 있는 자원이 다른 프로세스에게도 필요하여 대기하는 다른 프로세스가 존재 3. 비선점 : 다른 프로세스가 자원을 점유하고 있을 때 강제로 뻇을 수 없다 4. 순환대기 : 프로세스 P0,P1,P2...Pn 이 존재할 때, Pk-1이 Pk가 필요한 자원을 가지고(Pn은 P0가 필요한 자원보유) 있는 상황 DEADLOCK 해결 1. 예방법(데드락 상태를 사전에 예방, 조건에 대한 부정) 1.1 상호배제 부정 ..

CS/운영체제 2023.03.16

전통적 동기화 예제들

생산자 소비자 문제(Producer and Consumer Problem) * 다른말로 유한버퍼문제(bounded buffer problem) - 생산자(producer)는 버퍼에 데이터를 생산하고, 소비자(consumer)는 버퍼에 데이터를 소비하는 상황 - 버퍼는 유한하기 때문에 버퍼에 데이터가 가득 차면 생산자가 생산할 수 없고, 비어있으면 소비자가 꺼내갈 수 없다.(이 상황에서 프로세스가 계속 대기하는 것을 busy waiting 이라고 한다) 독자 저자 문제(Readers Writers problem) - 독자(reader)는 데이터를 읽기만 하고, 저자(writer)는 읽고 수정하는 상황 - reader는 데이터를 읽기만 하기 때문에 임계구역 문제가 발생하지 않음. 따라서 writer에만 임계..

CS/운영체제 2023.03.16

임계구역(critical section)문제와 뮤텍스(mutex), 세마포어(semaphores)

임계구역 문제(the critical section problem) 멀티 프로세스가 공유자원을 사용하는 과정에서 발생하는 문제들. 다양한 프로세스가 공유자원(공통변수)를 건들이면서 데이터의 정합성이 깨지는 현상 * 임계구역 : 공유자원에 접근하는 코드 영역 임계구역 문제의 해결 조건 임계구역 문제를 해결하기 위해선 다음의 조건을 만족해야 한다. 1. 상호배제(mutual exclusion) : 특정 임계구역에서 프로세스가 실행되고 있으면, 다른 프로세스는 해당 임계구역에서 실행될 수 없음 2. 진행(progress) : 임계구역이 비어있을 때 프로세스는 무한정 기다리지 않고 순서에 맞게 진행된다. 3. 한정된 대기(bounded waiting) : 프로세스가 임계구역에 진입하려는 요청을 한 후 그 요청이..

CS/운영체제 2023.03.10