리눅스 표준 스트림 유닉스 및 유닉스 계열 운영 체제에서 프로그램(프로세스)과 환경(주변기기) 사이에 미리 연결된 입출력 통로 파일 디스크립터 유닉스에서는 모든 개체를 파일로 관리하며, 프로그램(프로세스)가 파일에 접근하기 위해서 특정 파일의 디스크립터를 이용해 파일에 접근합니다. 셀은 입력과 출력을 위한 세 가지 기본 파일 디스크립터 (File Descriptor - 이하 FD)를 모든 프로세스에 제공합니다. 입력(스트림), 출력(스트림) 줄여서 I/O라고 칭합니다. stdin (FD 0) - 키보드 입력 stdout (FD 1) - 화면 stderr (FD 2) - 오류 실제 /dev 디렉토리를 확인하면 다음과 같이 파일 디스크립터를 파일 형태로 가지고 있는 것을 볼 수 있습니다. 유닉스(Unix)는..
리눅스 파일 권한 리눅스를 사용하다보면 다양한 파일들의 권한을 변경해줘야 할 때가 많습니다. 리눅스 뿐만 아니라 맥이나 기타 OS 에서도 많이 사용하는 chown, chmod 명령을 통해서 파일의 권한을 변경하고 수정하는 방법을 알아보겠습니다. 오늘은 그 중에서도 하위 폴더를 전부 바꿔야 되는 이슈에 대응하기 위한 명령어를 알아보겠습니다. 파일 권한은 다음과 같이 읽기, 쓰기, 실행 권한으로 분류되며 User, Group, Other로 분류됩니다. chown 의 명령의 경우 파일의 오너쉽 관리를 위한 명령어 이며 chmod 명령어는 파일의 권한 관리를 위한 명령어 입니다. chown ▼ chown 명령어는 파일이나 폴더의 오너쉽을 변경할 수 있습니다. 다음과 같이 사용자는 root이며 그룹도 root로 ..
systemctl 우분투를 Docker 컨테이너로 만들어서 사용하면 몇가지 문제점이 있습니다. 그중에서도 불편한 것은 systemctl 명령이 동작하지 않는 점인데요. 매번 설치해주는 것 보다 Dockerfile을 만들고 이미지를 만들어 놓고 사용하는것이 편리합니다. ▼ Docker 파일 생성 ▼ Docker 빌드 ▼ 컨테이너를 생성하고 접속합니다.
Homebrew M1 설치 맥을 사용해서 패키지나 프로그램을 설치하려면 가장 필수적인 프로그램으로 Homebrew를 꼽을 수 있습니다. 이전에 기타 패키지 매니저들이 있었는데 저도 지금은 Homebrew만 사용합니다. 하지만 최근 Homebrew를 설치하면서 brew를 설치하면 없는 프로그램이라고 나오더군요. 알고 보니 Homebrew가 애플 실리콘 맥 (M1)이 출시된 이후로 지원하는 버전이 달라졌습니다. 기존에는 지원을 하지 않아서 로제타 등을 사용해서 설치했었나 봅니다. 컴퓨터를 여러 대 사용하다 보니 매번 설치하는 것을 까먹게 되어서 이번에 정리해보려고 합니다. https://brew.sh/index_ko Homebrew The Missing Package Manager for macOS (or ..
리눅스 Date 명령어 (출력하기) 리눅스에서 Date 명령을 잘 활용하면 다양한 아이디어를 얻을 수 있습니다. 지금 무슨 분기 인지? 몇 주째 되는지 등등 고려해서 스크립트 등을 만들 수 있습니다. 그럼 간단한 사용법을 알아보겠습니다. ▼ 기본적으로 현재 날짜를 출력하는 방법입니다. ▼ 다음은 년도만 출력합니다. ▼ 연도의 뒷자리 2글자만 표현하려면 소문자 y를 사용합니다. 명령 대부분이 대문자, 소문자에 따라 달라집니다. ▼ 시간만 나타내려면 다음과 같이 T 문자를 사용합니다. ▼ 그 밖에 다양한 옵션들입니다. ▼ 위의 명령어중 예를 들어 현재 타임존을 알고 싶다면 다음과 같이 Z를 입력합니다. 그리고 ' ' 구문 안에 여러 리터럴들을 추가할 수 있습니다. 리눅스 Date 명령어 (수정하기) ▼ 이제..
맥 포트 죽이기 맥에서 포트(Port)를 Kill 하기 위해서는 다양한 방법이 있지만 그중에서 가장 많이 쓰고 편리한 방법을 알아보겠습니다. Isof 명령을 통해서 해당 포트를 사용하는 PID를 KILL 명령어로 죽이는 방법을 알아보겠습니다. ▼ lsof(list open files) 명령을 통해서 해당 포트를 사용하는 PID 를 확인합니다. ▼ lsof -i :포트번호 를 입력하면 PID를 확인할 수 있습니다. ▼ kill -9 명령 뒤에 해당 PID 번호를 입력하고 실행합니다. ▼ 다음은 스프링부트에서 테스트 한 결과입니다. 8080 포트가 강제 종료(SIGKILL)된 것을 확인할 수 있습니다.
MySQL 설치 도커에서 컨테이너를 만들기 위해서는 기본적으로 MYSQL_ROOT_PASSWORD 라는 비밀번호 옵션을 주어야 합니다. 뿐만아니라 도커에서 특정 컨테이너를 만들었다가 삭제하면 데이터를 유지할 수 없게되는데 그럼 데이터베이스 역할을 하기 힘들게됩니다. 때문에 사용자 운영체제에 마운트 하거나 볼륨을 고정적으로 만들고 관리해줘야 합니다. ▼ 도커 pull 명령어로 새로운 MySQL 이미지를 받아옵니다. ▼ 도커 run 명령어로 새로운 컨테이너를 만듭니다. --name 옵션으로 이름을 지정하고 -e 옵션을 주어서 비밀번호를 설정합니다. ▼ 만약 볼륨을 설정하고 싶다면 다음과 같이 -v 옵션을 주고 컨테이너를 생성합니다. ▼ 이제 도커의 ps 명령을 통해 mysql 컨테이너가 잘 만들어졌는지 확인..
도커나 데비안 같은 배포판에서 ps 명령이 동작하지 않는 다면 다음과 같이 ps: command not found 라는 에러 구문이 출력됩니다. 만약 ps 명령이 동작하지 않는다면 다음과 같이 procps 를 설치해줘야 합니다. ▼ ps -ef 명령시 에러 발생 e : 커널 프로세스를 제외한 프로세스 전체를 출력한다. f :UID, PID, PPID 등을 함께 표시 (Generates a full listing) ▼ 데비안, 우분투 procps 설치 ▼ centos 에서 procps 설치 https://github.com/tianon/docker-brew-debian/issues/13
▼ 우선 도커 명령어를 사용해서 다음과 같이 NginX 이미지를 다운로드 합니다. ▼ 이미지를 다운로드 받았다면 다음과 같이 새로운 컨테이너를 생성합니다. --name : 실행할 컨테이너의 이름을 입력합니다. -d : 백그라운드로 실행합니다. -p : 포트를 설정합니다. (내부는 80으로 지정하고 외부는 8080으로 지정합니다.) ▼ 컨테이너 상태를 확인하기 위해서 컨테이너 내부로 들어갑니다. ▼ nginx -v 명령을 통해서 버전을 확입합니다. ▼ ps 명령을 사용해서 nginx의 상태를 확인해야 하지만 해당 명령이 없을 경우 apt-get 명령을 통해서 procps 를 설치합니다. ▼ procps 가 설치되었다면 다음과 같이 ps 명령을 이용해서 nginx의 상태를 확인합니다. grep 명령으로 프로..