리눅스 15

[Linux] 프로세스 ID

각 프로세스는 프로세스를 구별하는 번호인 프로세스 ID를 갖는다. 각 프로세스는 자신을 생성해준 부모 프로세스가 있다. int getpid( ); // 프로세스의 ID를 리턴한다. int getppid( ); // 부모 프로세스의 ID를 리턴한다. 프로세스는 프로세스 ID 외에 프로세스의 사용자 ID와 그룹 ID를 갖는다. -그 프로세스를 실행시킨 사용자의 ID와 사용자의 그룹 ID -프로세스가 수행할 수 있는 연산을 결정하는 데 사용된다. (프로세스의 권한을 통해 누구의 권한으로 어떤 리소스에 대한 할당 작업을 할것이냐를 결정해야 하는데, 사용자의 아이디로만 결정이 안될수도 있다.) 프로세스의 사용자 ID 실제 사용자 ID(real user ID) 그 프로세스를 실행한 원래 사용자의 사용자 ID로 설정..

DEVOPS/LINUX 2021.12.04

[Linux] 프로세스 명령어(sleep, kill, exit)

sleep 지정된 시간(초)만큼 실행을 중지한다. $ sleep (초) kill 현재 실행중인 프로세스를 강제로 종료한다. $ kill [-시그널] 프로세스번호 exit 쉘을 종료하고 종료코드(exit code)을 부모 프로세스에 전달한다. $ exit [종료코드] exit(0) - 정상적인 종료 exit(1) - 비정상적인 종료(오류 났을 때) 부모 프로세스는 전달된 종료코드를 보고 자식 프로세스가 이 번호로 가지고 종료했다는 것을 알게된다. 커널 입장에서 exit 했다는 것은 이 프로세스가 정상적으로 사용자가 종료했다고 생각한다. 오류라는 것은 프로그래머가 생각하는 논리적인 오류이다. 커널 입장과 프로그래머 입장에서 오류를 판단하는 기준이 다르다.

DEVOPS/LINUX 2021.12.04

[Linux] 프로세스란?(+init프로세스)

프로그램과 프로세스 프로그램이란 실행 파일이다. 실행 파일이 주기억장치에 올라가 실행을 하게 되면 프로세스로 만들어진다. 프로세스란 실행중인 상태의 프로그램을 말한다. 프로그램 자체가 프로그램은 아니다. 하나의 프로그램에서 여러 개의 프로세스를 생성할 수 있다. 각 프로세스를 프로그램의 인스턴스라고 한다. 프로세스를 다른 프로세스가 만든다. 프로세스마다 부모 자식간의 관계가 있는데 만든 프로세스를 부모 프로세스, 만들어진 프로세스를 자식 프로세스라고 부른다. 모든 프로세스는 부모 프로세스를 가진다. ex) 쉘에서 프로세스를 만드는게 가장 흔한 프로세스를 만드는 방법이다. 쉘이라는 프로세스가 vi라는 프로세스를 만든다. 프로세스 각 프로세스는 유일한 프로세스 번호 PID를 갖는다. 사용자는 파일 이름으로 ..

DEVOPS/LINUX 2021.12.04

[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

[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

[Linux] 리눅스 프로세스 확인하기, 죽이기

실행 중인 프로그램을 프로세스라고 부른다. 각 프로세스는 유일한 프로세스 번호 PID를 갖는다. 프로세스 확인하기 프로세스 목록 확인 $ ps 프로세스 목록 자세히 확인 $ ps u 프로세스 목록 배열 및 시스템 자원 사용률 확인 $ ps aux 프로세스 죽이기 kill 명령어는 프로세스를 강제로 종료시킨다. $ kill 프로세스 번호 $ kill %작업번호

DEVOPS/LINUX 2021.10.12

[Linux] cd 명령어와 절대 경로/상대 경로

cd(Change Directory)는 원하는 폴더로 이동하게 해주는 명령어이다. cd / 최상위 루트 디렉토리로 이동 cd ~ home 디렉토리로 이동 cd – 이전 디렉토리로 이동 cd .. 현재 디렉토리의 부모 디렉토리로 이동 pwd 현재 위치 확인 cd 절대 경로명(absolute pathname) 루트 디렉터리로부터 시작하여 이동할 목표 경로까지 모든 경로 이름을 정확하게 적어 이동 [cd /home/doyeon/test] 상대 경로명(relative pathname) 현재 작업 디렉터리부터 시작해서 경로 이름을 적어 바로 이동 .명령어는 자신의 현재 위치를 절대 경로로 요약해준다. 현재 폴더 안의 test 라는 폴더로 가고 싶으면 [cd ./test] 로 이동한다.

DEVOPS/LINUX 2021.10.12