OS

    sudo 권한 부여

    💡 sudo : 일반 사용자가 일시적으로 root 관리자 권한을 얻는 명령어 위 sudo 명령어를 일반 사용자가 사용하기 위한 방법 /etc/sudoers 파일에 일반 사용자 / 그룹이 등록되어 있어야 한다. /etc/sudoers 파일은 readonly 속성을 가지고 있어 편집하기 위한 두가지 방법 sudoers 파일 관리 application 사용 → 추천 (문법 및 적합성 검사도 해줌 !) visudo -f /etc/sudoers 편집 권한 변경 및 부여 → 추천 안함 (권한 회수를 깜빡할 수 도 있기 때문 !) chmod u+x /etc/sudoers chmod 640 /etc/sudoers sudoers 파일 하단에 sudo 권한을 부여할 설정을 작성한다. sudo 명령어를 처음 사용할 시 비밀..

    Vi vs. Vim

    ▪ Vi ? 💡 Vi (Visual Editor) : 유닉스(UNIX) 계열 운영체제의 오픈소스 문서 편집기 한 줄씩 편집하는 줄 단위 편집기(line editor)가 아닌 한 화면을 편집하는 비주얼 에디터(visual editor) 모드 일반 모드 위, 아래, 왼쪽, 오른쪽 → K, J, H, L 입력 모드 i (현재 커서 위치) a (현재 커서 한 칸 뒤) o (한 줄 추가 후) 위, 아래, 왼쪽, 오른쪽 → Alt + ( K, J, H, L ) 명령 모드 :w (파일 저장) :q (vi 종료 / :q! 강제 종료) :wq (저장 후 종료) ▪ Vi vs. Vim 💡 Vim (vi imitation) → Vim (vi improved) vi와 높은 호환성을 가지며 다양한 기능 + 플러그인 지원 다양한..

    리눅스 패키지 시스템

    ▪︎ 리눅스 패키지 💡 리눅스 패키지 (Linux Package) : 소프트웨어를 실행하는데 필요한 파일들이 담겨 있는 설치 파일 소스 패키지 (Source Package) . tgz (source code archives) 소스 코드가 들어있는 패키지 컴파일을 통해 바이너리 파일로 만들어야 실행 가능 장점 소스 코드 수정을 통해 소프트웨어 커스텀 가능 단점 컴파일 작업으로 인한 설치 소요 시간 증가 / 컴파일 과정에서 에러 발생 가능성 존재 바이너리 패키지 (Binary Package) *. deb (Debian) / *. rpm (Red Hat) 이미 성공적으로 컴파일이 끝나 응용 프로그램, 라이브러리 등이 들어있는 바이너리 파일 패키지 장점 이미 컴파일된 패키지이므로 설치 소요 시간 단축 / 에러 ..

    리눅스 배포판

    ▪ Linux ? ‘Linux is an operating system.’ 리눅스는 운영체제다. ‘In a GNU/Linux system, Linux is the kernel component.’ GNU/Linux 시스템에서 리눅스는 커널 구성 요소이다. 💡 GNU : 자유 소프트웨어 재단에서 진행하며 유지 중인 OS 프로젝트 리눅스가 무엇인지 찾아보면 다음과 같이 다르게 표현된 정의를 볼 수 있다. 여기서 무엇이 맞는 말일까? 솔직히 둘 다 맞는 말이다. 리눅스는 리눅스 커널을 의미하기도 하고 리눅스 커널을 사용하는 운영체제를 의미하기도 하기 때문이다. 리눅스가 두 가지의 의미를 가지게 된 계기는 리눅스가 탄생한 흥미진진한 역사를 보면 잘 이해가 되지만 이번 포스팅은 리눅스의 역사가 중점이 아니라서....

    init vs. systemd

    ▪ PID가 1인 프로세스 💡 init Process : PID가 1인 프로세스 리눅스 부팅 과정 시스템 전원 공급 BIOS (Basic Input / Output System) Boot Loader Kernel init 커널 부팅이 완료된 후 첫 번째로 생성한 프로세스 커널이 직접 실행하는 유일한 프로세스 부모 프로세스가 없음 PPID → 0 모든 프로세스는 init(PID : 1)을 부모 프로세스(PPID)로 가진다. 모든 프로세스의 조상님 모든 스레드는 kthreadd(PID : 2)를 부모 프로세스(PPID)로 가진다 모든 스레드의 조상님 ▪ systemd 란? init 프로세스의 한 종류 init 프로세스의 변천사 SysV init → systemd SysV init 직렬 처리 방식의 부팅 순서..

    프로세스와 스레드

    ▪ 프로세스 (Process) 💡 프로세스 (Process) : 운영체제(OS)에서 할당 받은 시스템 자원을 사용한 독립적인 작업 시스템 자원 CPU 시간 주소 공간 Code, Data, Stack, Heap 구조의 메모리 영역 각 프로세스는 다른 프로세스의 자원에 간섭이 불가능하다. 단, IPC(Inter Proceses Communication)를 통하여 서로 간에 통신 및 접근이 가능하다. 💡 IPC(Inter Proceses Communication) : 프로세스 간 통신 → e.g.) 파이프, 소켓, 파일 .. ▪ 스레드 (Thread) 💡 스레드 (Thread) : 프로세스 내부에서 프로세스 상의 공용의 자원을 사용하는 작업의 흐름 프로세스 자원 Code, Data, Heap - 공용 사용 S..

    리눅스 권한 체계

    ▪ 리눅스 권한 특정한 사용자에게 파일이나 디렉토리에 대하여 읽기 / 쓰기 / 실행을 수행할 수 있는 자격을 부여해주는 것 💡 리눅스 권한 : 허가권 + 소유권 ▪ 허가권 - 파일을 의미 r (read) [4] 파일을 읽을 수 있는 권한 d 디렉토리를 의미 w (write) [2] 파일을 읽을 수 있는 권한 x (execute) [1] 파일을 읽을 수 있는 권한 ▪︎ 문자로 권한 변경하기 u 사용자 + 권한 추가 g 그룹 - 권한 제거 o 다른 사용자 chmod u+x file 사용자에게 실행 권한 추가 chmod g-r file 그룹에게 읽기 권한 제거 chmod a+rwx file 모두에게 읽기, 쓰기, 실행 권한 추가 chmod ug-rx file 사용자와 그룹에게 읽기, 실행 권한 제거 ▪︎ 숫자..

    리눅스 Shell

    ▪ 쉘 (Shell) 💡 쉘(Shell) : 사용자와 OS의 내부 커널 사이의 인터페이스를 감싸는 층 명령어 처리기 (Command Processor) 사용자와 OS간 다리 역할을 수행 사용자의 명령을 받아 해석해서 전달 후 실행 ▪ Bash vs. Zsh Bash (Bash shell) 현 시대에 가장 많이 쓰이는 리눅스의 표준 Shell GNU 프로젝트를 위해 개발된 Shell /bin/bash 💡 GNU 프로젝트 : 자유로운 소프트웨어를 희망하는 프로젝트 Zsh (Z shell) 높은 호환성 지금까지 대부분 Shell의 기능을 포함한 확장형 Shell 플러그인 생태계 다양한 플러그인 지원 (Oh My Zsh) 자동 완성 기능 /u/l/b + tab → /usr/local/bin /bin/zsh

    리눅스 Pipe

    ▪︎ 파이프 (Pipe) 💡 파이프 (Pipe) : | 리눅스의 여러 명령어들을 조합하여 강력한 활용도를 보여줄 수 있는 기능 like a 조미료 (후추 팍팍! 소금 팍팍! 설탕 팍팍! → 짜자잔 맛있는 음식 ~) 명령어_1 | 명령어_2 여기서 명령어_1와 명령어_2는 다음의 과정을 거친다. 입력(stdin) → 수행 → 결과(stdout / stderr) 명령어_1의 결과는 | 파이프를 통해 명령어_2의 입력으로 전달되어 들어간다. 위 과정을 거치면 명령어_1의 결과가 입력된 명령어_2의 결과가 수행된다. 명령어_1은 부모 프로세스로써 fork()를 통해 명령어_2의 자식 프로세스를 생성한다. ▪︎ e.g. 특정 문자열의 파일명을 가진 파일을 검색하고 싶은 경우 project를 포함한 파일명을 가진 ..

    vim 설정

    cd ~ vim .vimrc if has("syntax") syntax on endif set hlsearch set nu set autoindent set ts=4 set sts=4 set cindent set laststatus=2 set shiftwidth=4 set showmatch set smartcase set smarttab set smartindent set ruler set fileencodings=utf8,euc-kr