자주 사용하는 Git 커맨드 모음

자주 사용하는 GIT 커맨드와 팁을 정리했다.

기본

tag

branch

remote

log

사용자 정보 추가하기

이미 추가한 파일 취소하기

프로토콜 바꾸기

bower에서 git 프로토콜을 사용하면 잘 안되는 경우가 있는데, https로 바꿨더니 잘 동작했다.

버전관리에서 제외하는 방법

.gitignore 파일에 제외할 파일, 디렉토리 목록을 작성한다. 필요한 디렉토리에 이 파일을 넣어두면 된다.

다음은 예제다.

전역으로 설정하는 방법:

이렇게 설정하고, .gitignore_global 파일도 .gitignore와 동일하게 작성한다.

윈도에서 LF 관련 WARN 뜨는 문제

윈도에서 파일에 Unix 파일로 저장되었을 때 다음과 같은 메시지가 발생한다.

다음 명령을 통해 이 메시지를 없앨 수 있다.

push.default is unset WARNING

다음 메시지가 발생하는 경우가 있다.

다음 명령으로 해결할 수 있다.

Dropbox를 git 서버로 사용하기

error setting certificate verify locations

여러 버전의 git이 설치되어 있어서 하나만 남기고 지우니 다음과 같은 에러가 발생했다.

먼저 ca-bundle.crt 파일이 있는 경로를 찾아낸다. 그리고 관리자 권한으로 커맨드 창을 열고 다음을 실행한다.

만약 관리자 권한이 없다면 다음 에러가 발생한다.

자주 사용하는 리눅스 쉘 명령어, 설정 모음

리눅스 계열 OS를 사용하면서 자주 사용하는 명령어를 정리했다. Centos를 주로 사용해서 다른 OS에서 안되는 경우도 있을 것이다.

기본

if

사용자 관리

user삭제하기

프로세스

ps

  • -o : 특정 필드만 보여줌
  • –sort : 정렬필드

프로세스 찾아서 Kill

프로세스명으로 pid 찾기

특정 파일을 사용하는 프로세스 찾는 방법

파이프라인

특정 라인만 보는 방법(sed)

파일 대신 직접 입력한 텍스트를 넘겨주는 방법

cat 말고 다른 커맨드에서도 응용할 수 있다.

파일시스템

포맷하고, 마운트하기

특정 파티션을 포맷하고, 마운트하는 과정이다.

파일명, 디렉토리명으로 찾기

find 예제

네트워크

네트워크 정보 확인

설정

Timezone을 KST로 변경하기

시간 맞추기

타임서버를 사용해서 OS의 시간을 설정한다.

호스트명 변경

모니터링

특정 포트로 들어오는 패킷 확인

cat으로 파일 와치하기

벤치마킹

하드웨어 정보 확인

CPU 관련:

OS에서 사용하는 bit를 확인할 수 있다.

  • x86_64 : 64bit
  • i386, i686 : 32bit

메모리 관련:

하드디스크 관련:

네트워크 관련:

ab로 사이트 응답속도 측정

이 커맨드를 사용하려면 Apache가 요구된다.

grep

grep 옵션

  • -f : 파일로부터 패턴을 얻는다.
  • -i : 차이가 나는 경우 무시한다. 일치하는 경우만 선택.
  • -v : 매칭되지 않는 라인을 선택한다.

ps grep 할 때 이것이 포함되는 것 방지하기

-v 옵션을 사용한다.

top

특정 pid만 모니터링

sed

CR 제거하기

윈도 텍스트파일에 있는 CR(캐리지 리턴)을 제거하는 방법이다.

CURL

curl로 API 호출

사이즈 재기

wc를 사용해서 사이즈를 잴 수 있다.

더 나은 방법으로 w 옵션을 사용할 수 있다.

기타

텍스트를 GZIP

자동 입력하기

Is there a way to input automatically when running a shell?

screen 커맨드 단축키

쉘에서 다중 화면을 사용할 수 있는 screen에서 사용할 수 있는 단축키.

  • C-a A : 화면 타이틀 변경
  • C-a c : 화면 생성
  • C-a 0-9 : 화면 번호로 이동
  • C-a n : 다음 화면으로 이동
  • C-a “ : 전체 화면 목록 보기

특정 계정으로 쉘 실행하는 방법

패키지 버전 확인

날짜 unixtime으로 출력

한번에 두가지 명령 실행하기

도움말 cat으로 출력

SCP

AWK

 

VI 에디터 관련 메모

기본 에디터 vi로 바꾸기

Ubuntu에서 기본에디터가 vi가 아니라서 다음과 같은 방법으로 에디터를 바꿨다.

UTF-8로 설정

.vimrc :

vi syntax 활성화 방법

.vimrc :

붙여넣기 할 때 밀리는 경우

터미널에서 내용을 붙여넣기를 할 때 밀리는 경우가 있는데, 설정을 통해 해결할 수 있다.

.vimrc :

Memcached cheatsheet

Memcached는 Telnet으로 접속해서 명령을 실행할 수 있다.

MySQL 자주 사용하는 쿼리 모음과 관리 팁

그동안 MySQL을 사용하면서 자주 사용했던 쿼리를 정리했다.

모니터링

Lock

  • READ Lock : 락을 명시적으로 사용한 세션과 모든 세션에서 insert, update, delete가 불가능하고 select만 가능
  • WRITE Lock : 락을 명시적으로 사용한 세션에서의 쓰레드만 read, wrtite가 가능.
 

 

설정

파티션

사용자 추가

View

Trigger

Event

이벤트가 활성화되었는지 확인하고, 활성화하는 방법이다.

위 방법은 임시적인 방법이라서 설정 파일을 수정해야 한다.

my.ini:

이벤트를 생성해서 주기적으로 쿼리나 프로시저를 실행할 수 있다.

기타 SQL

Inno DB 확인

disabled일 경우 설정파일을 변경해서 innodb를 활성화할 수 있다.

my.cnf

바이너리 로그 지우는 방법

설정파일에서 보관기간을 지정할 수 있다.

my.cnf:

Nginx Lua Module 개발 노트

Nginx Lua Module을 개발하면서 필요한 내용을 정리했다.

기본

nil(Null) 체크

Lua nil은 값이 없다는 것을 의미한다.

타입 변환

타입 구하기

공유 메모리의 키를 가져오는데, 어떤 형태인지 알아보려고 사용했었다.

 

For Loop

공유메모리의 키를 모두 가져와서 For Loop를 돌릴 수 있다.

 

문자열

날짜/시간

Table

Logging

nginx 로그파일에 로그를 단계별로 기록할 수 있다.

 

모듈화

모듈화를 위해서 다음과 같은 형태로 파일을 만들어서 사용할 수 있다.

 

이렇게 작성한 모듈은 다음과 같이 사용할 수 있다.

 

스크립트 경로 가져오기

script_path()를 호출하는 파일의 경로를 구할 수 있다. 해당 파일을 기준으로 다른 파일 경로를 가져올 때 유용하다.

 

동적으로 모듈 호출

Nginx Lua Module 전용

ngx_http_lua_module

Nginx에 Lua 코드를 끼워넣어 사용할 수 있는 모듈로 기본적으로 nginx에서 제공되지 않고, 직접 설치해야 한다.

공식사이트

출력

원하는 단계에 넣으면 중간에 다른 결과를 출력할 수 있다.

 

버전 정보

http 요청

ngx.location.capture는 nginx 워커에서 특정 uri에 추가 요청을 할 수 있다.

 

redirect

특정 페이지로 리다이렉트할 수 있다.

exec는 redirect와 다르게, 내부 리다이렉트를 하고, 새로운 외부 HTTP트래픽과 관련이 없다.

Header 관련

nginx에서 설정한 변수 사용하기

nginx.conf:

 

주소가 설정한 값과 일치하면 그 값을 lua에서 다음과 같이 사용할 수 있다.

 

3rd party module

LIP – ini Parser

LIP는 Lua INI Parser다. ini 파일을 불러오고, 저장할 수 있다.

 

CJSON

CJSON은 LUA에서 JSON을 지원하는 모듈이다.

설치하기

다음 페이지 다른 JSON 모듈을 비교한다.

JSON 모듈 비교

에러

a temporary file while reading upstream

lua에서 다음 에러가 발생한다.

문제 생기는 부분을 확인하니 다음과 같이 이미지를 base64로 출력하는 부분의 사이즈가 설정한 값보다 커서 생긴 문제였다. 이미지 사이즈에 맞게 프록시 버퍼의 크기를 늘려줬다.

nginx 설정을 변경했다.

 

예제 프로그램이라서 base64로 이미지를 출력했지만, 버퍼를 늘리는 것보다 이미지는 static 서버를 통해 제공하는 것이 좋다.

CSS로 말줄임 처리

CSS로 말줄임 처리하는 방법이다. 여기서 width는 반드시 지정해야한다.

 

테이블에서는 다음과 같이 한다.

HTML:

 

CSS:

 

 

Ruby 문법, Snippet

Jekyll에서 관련 포스트 기능이 이상하게 동작해서 해당 플러그인을 수정할 필요가 있었다. 플러그인이 Ruby라서 관련 문법을 정리해서 다음에 수정할 때 참고해야겠다.

디버깅 관련 :

 

문자열 관련 :

 

배열 관련 :

 

클래스 관련 :

 

모듈 확장하는 방법:

 

 

self.included를 사용한 모듈 확장

이슈

ERROR: Could not find a valid gem

gem을 설치하는데, 다음 에러가 발생했다.

 

SHA-1 개인키 서명이 취약해지면서 브라우저가 변하는 것을 대비하려고, 웹서버들이 SHA-2(특히, SHA256 이상)로 업그레이드 하게된 것이 원인이다.

해결방법은 최신 RubyGems을 다운로드하고, 설치하는 것이다.

 

SublimeJekyll. SublimeText Jekyll 플러그인

Sublime-jekyll

포스팅을 작성할 때마다 새로운 파일을 생성하고, 이름을 적고, 메타 정보를 입력하는 것이 번거로웠다. 그래서 스크립트로 간단하게 이 작업을 자동화할 수 있는 것을 만들려고 했다. Python으로 만들지 Ruby로 만들지 고민하던 중 sublime-jekyll이란 걸 보게 됐다.

이거였다.

설치하기:

패키지 컨트롤에서 Jekyll을 검색해서 설치

 

설치한 후 바로 동작하지 않고, 프로젝트 설정이 필요하다. 직접 post, draft와 같은 디렉토리를 지정할 수도 있지만, 자동으로 찾는 옵션인 jekyll_auto_find_paths를 true 설정했고, 확장자도 기본이 markdown이라서 md로 변경했다.

 

더 자세한 설정은 여기서 확인할 수 있다.

그리고 템플릿을 만들어서 새로운 포스트를 생성할 수 있다. 그래서 템플릿을 다음과 같이 만들었다.

괜찮은 기능

  • Open post : 포스트 열기
  • New post : 새로운 포스트 작성하기

OSX에서 느려지는 문제

jekyll_auto_find_paths를 true로 설정했었는데, 이것 때문에 키보드로 입력했을 때 도저히 사용 못할 정도로 아주 느려지는 문제가 발생했다.

수동으로 경로 설정을 해야하고, 반드시 절대 경로를 사용해야한다.

 

서브라임텍스트 특정 디렉토리 프로젝트에서 제외하는 방법

서브라임텍스트에서 프로젝트를 검색할 때 node_modules 같은 디렉토리에 있는 파일이 검색되는 경우가 많아서 불편했다. 그래서 새로운 프로젝트를 만들거나 장비가 바뀌었을 때마다 구글링하던 내용을 포스팅했다.

메뉴 또는 커맨드팔레트에서 프로젝트 수정 명령을 실행한다.

Project: Edit

에디터에 json 파일이 나타나면 folder_exclude_patterns을 추가하고, 제외할 디렉토리와 파일을 입력하면 된다. 아래 예제는 jekyll에서 sass 캐시와 html로 생성된 결과를 제외한 경우다.