DEVOPS 49

[Linux] 잠금(lock)

파일 혹은 레코드(파일의 일부 영역) 잠금 -한 프로세스가 그 영역을 읽거나 수정할 때 다른 프로세스의 접근을 제한 -잠금된 영역에 한 번에 하나의 프로세스만 접근 -레코드에 쓰기(혹은 수정)를 할 경우 대상 레코드에 대해 잠금을 해서 다른 프로세스가 접근하지 못하게 해야 한다. 잠금 구현 fcntl( ) 함수로 구현 int fcntl(int fd, int cmd, struct flock *lock); 잠금의 종류 -F_RDLCK : 여러 프로세스가 공유 가능한 읽기 잠금 -F_WRLCK : 한 프로세스만 가질 수 있는 배타적인 쓰기 잠금 이 때 읽기 잠금은 동시에 여러개의 프로세스가 여러번 할 수 있다. 즉 공유가 가능하다. 데이터의 변화가 안생기기 때문이다. 쓰기 잠금은 다른 프로세스가 read도 못..

DEVOPS/LINUX 2021.12.04

[Linux] 리눅스 ps 명령어

$ ps -elf 모든 사용자 프로세스 정보를 자세히 출력 이 때 pid가 1번인 프로세스는 주기억장치상에서 처음에 부팅할때 수작업으로 만든 init프로세스이다. 모든 프로세스의 부모이다. PPID가 0이라는것은 부모가 없다는 뜻이다. wc: 라인 수를 셈 317개의 프로세스가 동작중이다. 맨 마지막 라인 쪽 부분을 보면 R은 현재 실행중, S는 sleep중이란 뜻이다. 프로세스의 아이디는 34751이고, 부모 프로세스 아이디는 34744이다. 바로 위에 있는 bash이다.

DEVOPS/LINUX 2021.11.07

[Git] remote branch 명령어

깃허브에 새로운 레퍼지토리를 생성하고 연결한다. remote repository를 등록만 했기 때문에 아직 remote branch는 없다. 브랜치는 자동으로 원격에 등록되지 않는다. push를 하면 remote repository는 로컬과 동일한 branch를 생성한다. 이름이 다른 branch로 연결하려면 git push origin [브랜치이름]:[새로운 브랜치 이름] footer라는 브랜치를 function 이름으로 추가한다. git clone을 해 브랜치를 확인해 보면 remote repository의 모든 branch정보를 다 가져오지는 않는다. master branch 하나만 표시한다. git branch -r / git branch -a remote branch 정보를 확인 git bran..

DEVOPS/GIT 2021.10.21

[Git] git branch 생성, 확인, 이동

로컬 레퍼지토리를 만들고 branch.html 파일을 추가해 커밋한다. branch 생성 $git branch [새로 만들 브랜치 이름] 원하는 이름의 브랜치를 생성한다. 브랜치 확인 $git branch 브랜치 목록을 확인한다. 현재의 branch에 *표기가 되어있다. 지금은 master 브랜치이다. $git rev-parse [브랜치이름] 현재 브랜치가 어떤 commit ID(해시값)을 가리키는지 확인 현재 같은 커밋 id를 가리키는 것을 볼 수 있다. git log로 커밋 로그를 확인해보면 HEAD 포인터가 master와 footer 브랜치를 참조한다. $git branch -v branch이름, commitID, commit 메세지를 확인 branch 이동 $git checkout [이동할 브랜치..

DEVOPS/GIT 2021.10.21

[Git] 깃허브 원격 레퍼지토리 연동, 전송, 내려받기

깃허브 레퍼지토리 생성 local repository를 생성해 파일을 추가하고 커밋한다. 로컬 레포지토리에 리모트 레퍼지토리(서버)를 등록하려면 서버 주소가 필요하다. 깃허브의 레퍼지토리 주소는 프로토콜+도메인 주소로 구성되어있다. 별칭: romote 서버의 주소는 긴 문자열로 구성되어 있다. 접근 편의를 위해 URL 문자열을 별칭으로 만들어 활용이 가능하다. 대표적으로 사용하는 별칭은 origin이다. 원격 저장소와 연결 git은 remote repository를 관리하는데 remote 명령어를 사용한다. 주소를 복사한 후, git remote add origin [주소] 입력하면 remote repository와 연결한다. = git remote add [remote repository 별칭] [re..

DEVOPS/GIT 2021.10.21

[Git] git 커밋(commit) 명령어

commit하기 $ git commit -m "메세지" commit을 하면 stage영역은 초기화된다. working tree clean 메세지- 더이상 추가된 새로운 파일과 수정된 파일이 없다는 의미 $ git commit -am "메세지" add와 commit 동시에 실행 메세지 없이 "" 만으로 커밋하려하면 오류가 난다. $git commit --allow-empty-message -m "" 메세지 없이 커밋할 수 있는 명령어이다. commit간 차이 확인 $git diff working directory와 stage를 비교한다. $git diff head 파일을 stage에 등록하고 git 상태를 확인한다. git diff를 했을 때 working directory와 stage는 차이가 없는 것을..

DEVOPS/GIT 2021.10.21

[Git] git 명령어 살펴보기(등록, 변경, 상태 확인)

초기화 $git init 경로명 (경로명 입력하지 않는 경우, 현재 폴더에서 초기화) 저장소를 생성하기 위해 초기화 작업을 한다. 초기화 한 후 새 파일을 생성한다. 상태 확인 $git status 상태를 확인한다. 새 파일이 추가되면 git은 변화된 상태를 감지한다. Untracked files목록으로 working directory에 생성된 새로운 파일을 확인할 수 있다. 새 파일 등록 working directory에 새로 추가된 untracked files를 추적 가능 상태로 변경하려면 파일을 stage 영역에 추가 해야한다. $git add filename (파일 이름 대신 .을 이용하면 전체 파일과 폴더 모두 등록) working directory 파일을 stage로 등록한다. 파일 등록 취소..

DEVOPS/GIT 2021.10.21

[Linux] 파일 시스템 구조 - i node란?

파일 시스템 구조 블록들이 하나의 I/O 단위가 된다. 부트 블록(Boot block) 파일 시스템 시작부에 위치하고 보통 첫 번째 섹터를 차지 부트스트랩 코드가 저장되는 블록 슈퍼 블록(Super block) 전체 파일 시스템에 대한 정보를 저장 총 블록 수, 사용 가능한 i-노드 개수, 사용 가능한 블록 비트 맵, 블록의 크기, 사용 중인 블록 수, 사용 가능한 블록 수 등 i-리스트(i-list) 각 파일을 나타내는 모든 i-노드들의 리스트 한 블록은 약 40개 정도의 i-노드를 포함 모든 파일은 반드시 i-노드 블록을 하나 가지고 있음 데이터 블록(Data block) 파일의 내용(데이터)을 저장하기 위한 블록들 i-node란? 파일을 구성하는 구성 요소는 파일 이름, 파일의 내용, 파일의 메타 ..

DEVOPS/LINUX 2021.10.13

[Linux] 커널과 시스템 콜(System call)

시스템 소프트웨어 응용 소프트웨어 응용 소프트웨어는 일상생활에서 도움을 받는 소프트웨어이고, ex) 게임, 아래한글, 오피스 시스템 소프트웨어는 응용 소프트웨어의 개발이나 운영을 지원하기 위한 소프트웨어이다. Ex) DBMS, OS(운영 체제), visual studio, server 다른 응용 소프트웨어는 시스템 소프트웨어로부터 도움을 받기 때문에 운영체제나 하드웨어를 잘 최적화 시켜서 활용해야 한다. 시스템 소프트웨어를 지원하기 위해 시스템 콜이란 것을 사용한다. 운영체제 커널이 제공하는 것으로, 시스템 콜을 가장 최적화된 환경으로 활용하여 개발해야 한다. 커널 커널이란 운영체제(OS)에서 가장 중요한 구성요소로서, 입출력을 관리하고 소프트웨어로부터 요청 (System Call)을 컴퓨터에 있는 하드..

DEVOPS/LINUX 2021.10.13

[Linux] 쉘(shell)이란?

쉘(shell)이란? 쉘은 명령어와 프로그램을 실행할 때 사용하는 인터페이스이다. 사용자와 운영체제 사이에 창구 역할을 하는 소프트웨어라고 볼 수 있다. 명령어 처리기(command processor)로써, 사용자로부터 명령어를 입력 받아 이를 처리한다. 쉘의 기능 명령어 처리 사용자가 입력한 명령을 해석하고 적절한 프로그램을 실행한다. 사용자 환경 설정 시작 파일이 로그인할 때 실행되어 사용자 별로 맞춤형 사용 환경을 설정할 수 있다. 스크립트 쉘 자체 내의 프로그래밍 기능이 있어 프로그램을 작성할 수 있다. 쉘 프로그램을 쉘 스크립트라 부른다. 쉘의 종류 쉘의 종류 쉘 실행 파일 본 쉘 /bin/sh C 쉘 /bin/csh Bash /bin/bash tcsh /bin/tcsh 콘 쉘 /bin/ksh ..

DEVOPS/LINUX 2021.10.12