[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

💻 CS/시스템프로그래밍 25

Linux - 권한

권한 유닉스 시스템에서 여러 사용자들은 각자 보유하고 있는 권한이 다르다. 파일과 디렉토리에 대해 여러 유저의 Read, Write, Excute 권한이 다르다. ls -l을 입력했을 때 출력되는 아래와 같은 화면에서 권한을 확인할 수 있다. 여기서 r은 쓰기권한 w은 읽기권한 x은 실행권한이다. 제일 앞에 적힌 d같은 것은 파일의 특성이다. (d는 directory) 처음 3자리는 본인(user)의 권한을 설명하며, 그 다음 3자리는 그룹(group)의 권한, 그 다음 3자리는 그 외 모든 유저(other)의 권한을 의미한다. (rwx로 각 권한을 표기) 권한 변경하기 chmod [u/g/o/a] [+/-] [권한] [파일 혹은 디렉토리명] : user(u), group(g), other(o), all..

Linux - 다중 사용자

사용자 확인 유닉스 계열 운영체제는 여러 명이 사용할 수 있는 기능을 보유하고 있다. 여러 명이 사용할 수 있다는 것은 장점이 될 수 있지만, 보안 등의 문제에 신경을 많이 써야한다. 관리자와 일반사용자로 나누어지며, 사용자마다 권한이 다를 수 있다. $ id : userid와 groupid를 포함한 자신의 id를 출력한다. $ who : 현 시스템에 접속중인 유저를 출력한다. 사용자 추가 $ sudo useradd -m [사용자명] : 사용자생성 $ sudo passwd [사용자명] : 사용자 패스워드 설정 $ su - [사용자명] : 사용자변경 $ sudo passwd -u [사용자명] : root 계정 접속 unlock $ sudo passwd -l [사용자명] : root 계정 접속 lock $ ..

Linux - daemon, service, cron

daemon 항상 실행되고 있다는 특성을 가진 프로그램 웹 브라우저와 정보를 주고 받는 웹서버도 daemon의 일종이 되어야 할 것이다. /etx/init.d에 daemon 프로그램들이 위치한다. 일반적으로 이러한 daemon을 켜고 끄는 것은 service 명령어를 사용해야 한다. service daemon을 켤 수 있도록 도와주는 프로그램 대표적인 웹서버인 apache를 예시로 들어서 사용해보자. ($ sudo apt-get install apache2) $ sudo service apache2 start로 실행한다. $ ps aux | grep apache2로 확인해보면 잘 실행되고 있음을 알 수 있다. $ sudo service apache2 stop로 중단한다. cron 정기적으로 명령을 수행할..

Linux - 백그라운드 작업 수행

백그라운드 작업 수행 Ctrl + Z로 현재 작업 중인 환경을 백그라운드로 보낼 수 있다. fg로 다시 작접하던 환경으로 돌아간다. jobs로 현재 백그라운드로 실행 중인 프로세스의 목록을 확인할 수 있다. +로 표시된 프로세스가 fg 실행시 실행된다. -는 그 다음순서이다. 특정 프로세스를 실행하고 싶으면 fg %2와 같이 jobs에 표시된 숫자를 %와 함께 입력해주면 된다. 특정 명령어에 대한 작업을 백그라운드에 실행시키고 싶으면 끝에 &를 붙이면 된다. (ex. ls -alR / > result.txt 2> error.log &) 강제 종료를 원하면 kill -9 %2와 같이 kill과 함께 jobs에 표시된 숫자를 %와 함께 입력해주면 된다.

Linux - 파일 탐색

locate locate [파일형식]으로 시스템에 존재하는 파일을 탐색할 수 있다. 디렉토리를 탐색하여 결과를 나타내는 것이 아니라, DB를 탐색하는 것이기 때문에 속도가 빠르다. locate가 사용하는 DB를 mloacte라고 부른다. (설치되어있지 않을 경우 sudo apt install mlocate로 설치해주어야함) sudo updatedb를 활용해 DB가 업데이트된다. (이는 따로 수행하지 않아도 시스템이 정기적으로 수행한다.) find find [파일형식]으로도 파일탐색이 가능하다. 다양한 옵션 및 부가기능을 제공하기 때문에 자세한 탐색에서는 locate보다 더 좋다. 단, 디렉토리를 직접 탐색하는 것이기 때문에 속도가 조금 느리다. https://kb.iu.edu/d/admm whereis ..

Linux - Shell

shell & kernel 명령어를 입력하면 컴퓨터 내부에서는 shell이 이를 받아들이고, 명령어를 해석하여 kernel을 통해 하드웨어를 조작한다. 즉, 사용자가 입력한 명령어를 해석하는 프로그램이 shell인 것이다. linux에는 여러가지의 shell이 존재하기 때문에, 개인에게 맞는 shell을 사용하면 된다. bash & zsh shell에는 대표적으로 bash와 zsh가 있다. echo $0 커맨드를 사용하면 현재 어떤 shell을 사용중인지 알 수 있다. 딱히 설정하지 않았다면 bash를 사용중일 것이다. sudo apt-get install zsh를 입력하면 zsh를 설치할 수 있고, zsh를 입력하면 shell이 zsh로 변경된다. bash를 입력하면 다시 bash로 변경된다. zsh는..

Linux - IO Redirection

IO Redirection 위 그림을 보면 linux process의 input과 output 구조를 잘 이해할 수 있다. 말그대로 Input과 Output의 방향을 바꾼다라는 뜻이다. $ ls -l > result.txt 기존 stdoutput 대상은 화면이었지만, 위 명령어에서 >가 IO Redirection을 진행하여 ls -l의 stdoutput 대상이 result.txt가 된다. >는 1>과 같은 의미로 stdoutput을 redirection한다. (stderr는 redirection하지 않는다.) 2>는 stderr를 redirection한다. (stdoutput은 redirection하지 않는다.) 1>과 2>를 함께 사용할 수도 있다. stdoutput이 발생하면 1>를 수행하고 stde..

Linux - apt

패키지매니저 명령어만으로 각종 프로그램들을 쉽게 설치할 수 있도록 도와준다. 리눅스의 패키지 매니저에는 대표적으로 apt가 있다. yum도 존재하지만 사용법은 유사하니 apt만 익혀놓으면 yum을 사용하는 것도 어렵지 않다. apt $ sudo apt-get update : 패키지매니저의 목록을 최신으로 업데이트한다. $ sudo apt-cache search [text] : 설치가능한 패키지 목록 중 이름 혹은 설명에 해당 text가 포함된 패키지를 출력한다. $ sudo apt-get install [name] : 해당 name의 패키지를 install한다. $ sudo apt-get upgrade [name] : 해당 name의 패키지를 upgrade한다. (최신버전 설치) name을 입력하지 않으..

Vim 튜토리얼

Vim이란? 유닉스 계열 운영체제의 CLI 환경에서 사용하는 대표적인 텍스트 에디터 마우스없이 키보드로만 사용해야한다. UNIX에서는 이러한 Vim을 다룰줄 모르면, 기초적인 텍스트파일도 작성할 수 없다. vi improve의 줄임말이다. vim command를 입력해 사용한다. Vim의 4가지 모드 사용자가 같은 키를 눌러도, 모드가 무엇인지에 따라 다른 기능이 작동된다. 일반 모드, 입력 모드, 비주얼 모드, 명령 모드, 총 4가지가 존재한다. 일반 모드가 모든 모드로 이동할 수 있는 기본 모드이다. 일반 모드를 거치지 않고서는 다른 모드로 변경할 수 없다. 다른 모드에서 일반모드로는 ESC키를 통해 변경한다. 모드 변경 기능 일반 모드 (Normal Mode) ESC 커서이동, 텍스트 붙여넣기, 텍..

자주 사용되는 linux command 모음

Frequently used command man : manual, command에 대한 메뉴얼 출력 clear : 화면 정리 pwd : print working directory, 현재 경로 출력 cd : change directory, 현재 경로 이동 (~ : 홈디렉토리, / : 루트디렉토리, - : 이전접근디렉토리, . : 현재, .. : 이전) ls : list, 현재 디렉토리의 파일 리스트업 (-l : 자세한 정보, -d : 디렉토리 정보확인) mv : move, 파일이동 혹은 이름변경 (-i : 덮어쓰기 확인) cp : copy and paste, 파일 복사 (-i : 덮어쓰기 확인, -r : 재귀적 적용) rm : romove, 파일 삭제 (-i : 제거 확인, -r : 재귀적 적용) cat..