일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- write
- Golang
- 책
- go언어
- Sync
- tcp
- FOR
- 리뷰
- JavaScript
- C
- go
- install
- json
- c++
- http
- Linux
- Python
- window
- channel
- range
- package
- bitcoin
- 영화
- Callback
- mutex
- Close
- File
- API
- GO 언어
- windows
- Today
- Total
목록Linux (12)
Code Habit
epoll은 리눅스에서 고성능 네트워크 프로그래밍을 위해 사용되는 I/O 이벤트 알림 모델이다. 대규모 파일 디스크럽터를 효율적으로 관리하며 이는 서버가 많은 수의 클라이언트와 동시에 통신해야 하는 고성능 네트워크 애플리케이션에 매우 유용하다. - epoll_create int epoll_create(int size); size만큼의 입출력 이벤트를 저장할 공간을 만든다. 그러나 리눅스 2.6.8 부터는 커널이 필요한 데이터의 크기를 동적으로 조정하기 때문에 0보다 큰 값만 입력하면 된다. - epoll_ctl int epoll_ctl(int epfd, int op, int fd, struct epoll_events *event); epoll에 fd를 등록/수정/삭제 하는 함수로 epoll에서 관심있는 ..
Linux환경에서 개발한 프로그램이 크래시 났을 때 core 파일을 생성하여 gdb로 분석이 가능하다. 1. core 파일 생성 'ulimit -a' 명령으로 core 파일 생성 여부를 확인할 수 있다. 'core file size'가 0으로 설정되어 있다면 core 파일이 생성되지 않는다. 'ulimit -c unlimited' 명령으로 코어 파일을 생성할 수 있다. ( 'unlimited -c 0'으로 해제할 수도 있다. ) 2. core 파일 분석 프로그램이 죽으면 실행파일이 있는 경로에 core.xxxx 라는 파일이 생성될 것이다. 이를 gdb를 이용하여 디버깅할 수 있는데 다음 명령어들을 사용하면 된다. - file 'core.xxxx' : core 파일을 생성한 프로그램 정보를 출력한다. - ..
cmake는 Closs Platform Make의 약자로 여러 플랫폼에서 사용할 수 있는 오픈소스 빌드 툴이다. 설치 > cmake를 설치하기 위해서는 아래 패키지가 우선적으로 설치되어 있어야 한다. make, gcc, gcc-c++, openssl, openssl-devel > cmake 설치를 하기 위해서는 소스를 먼저 받아야 하는데 아래 사이트에서 원하는 버전을 선택해 받으면 된다. 'https://cmake.org/files' $ wget https://cmake.org/files/v3.15/cmake-3.15.2.tar.gz $ tar -xvfz cmake-3.15.2.tar.gz $ cd cmake-3.15.2 > 빌드 및 설치를 위해 아래 명령어를 입력한다. $ ./bootstrap $ ma..
서버 작업시 보통 로그를 남기는데 이를 계속 쌓다보면 서버 하드가 풀나 서비스에 장애가 발생하게 된다. 이 때문에 보통 로그를 날짜별로 남겨 관리하게 되는데 이를 자동으로 해주는 스크립트를 작성해 보겠다. 로그를 백업하는데 필요한 것은 다음 두가지다. 1. 주기적으로 로그를 복사 ( cp ) 2. 기존 로그 내용 리셋 ( cat /dev/null ) 먼저 로그를 복사하고 기존 로그 내용을 리셋하면 된다. 물론 기존 로그를 리셋하라고 해서 파일을 지우라는 것이 아니라 내용만 삭제하는 것이다. 만약 파일을 삭제한다면 서버내에 주기적으로 로그 파일 존재 유무를 검사하고 만드는 로직이 있지 않다면 더이상 로그는 쌓이지 않을 것이다. 스크립트는 간단하다. ( logShell.sh ) #!/bin/bash logP..
리눅스의 쉘은 커널(Kernel)과 사용자간의 인터페이스로 사용자로부터 명령을 받아 그것을 해석하고 프로그램을 실행하는 역할을 한다. 자체 내에 프로그래밍 기능도 있어 쉘 스크립트를 작성해 프로그램을 반복적으로 실행할 수 있다. 주로 서버 자동화 프로그래밍을 만들 때 사용한다. 1. 쉘 스크립트 작성 - vi를 이용하여 쉘 파일을 만들고 편집모드로 들어간다. # vi test_shell - 편집모드에서 위와 같이 작성한다. '#!/bin/bash'는 스크립트 파일이 bash 쉘로 실행시킨다는 의미이다. #!/bin/bash echo "hello world" exit 0 2. 쉘 스크립트 실행 권한 부여 - 'll'을 쳐보면 'test_shell'의 권한이 '-rw-r--r'로 실행권한이 없는 일반 파일임..
리눅스 OS 환경에서 서버를 운영한다면 서버가 내려갔을 때 재시작 해주는 기능이 필요하다. 이를 위해 리눅스에서는 크론탭( Crontab )을 사용할 수 있다. 크론탭은 특정한 서비스를 위해 백그라운데이서 계속 실행되는 프로세스로 일반적으로 쉘이 종료될 때 같이 종료되나, 강제 종료 하지 않는 이상 계속 상주한다. 마치 윈도우의 서비스( service )와 비슷하다. 크론탭은 다음과 같이 사용할 수 있다. 1. 크론탭 명령어 - crontab -l : 현재 크론탭에 어떤 내용이 있는지 확인. - crontab -e : 크론탭 설정 모드 진입. vi로 편집. 2. 크론탭 시간(주기) 설정 *(분) *(시간) *(일) *(월) *(요일) - 매분 실행 매분 test.sh 실행 * * * * * /home/s..
ssh에서 제공되는 scp 명령어를 통해 로컬서버 원격서버 로의 파일을 간단하게 전송할 수 있다. 1) 원격 서버 -> 로컬 서버로 파일 전송 # scp [옵션][계정명]@[원격지주소]:[원본 경로 및 파일] [전송받을 위치] 예제 ) IP 111.222.333.444 서버의 abc라는 계정으로 /home/abc/test.html 파일을 로컬서버 /home/abc/ 디렉토리에 전송받기 # scp abc@111.222.333.444:/home/abc/test.html /home/abc/ 2) 로컬 서버 -> 원격 서버로 파일 전송 # scp[옵션][원본 경로 및 파일] [계정명]@[원격지IP주소]:[전송할 경로] 예제 ) 로컬서버 /home/abc/test.html 파일을 IP 111.222.333.444..
Go 언어는 다음 웹사이트에서 운영체제별로 다운받아 설치할 수 있다. https://golang.org/dl/ Downloads - The Go Programming Language Downloads After downloading a binary release suitable for your system, please follow the installation instructions. If you are building from source, follow the source installation instructions. See the release history for more information about Go releases golang.org 리눅스 리눅스에서 설치하는 방법은 바이너리를 직접 ..