리눅스 계열 OS를 사용하면서 자주 사용하는 명령어를 정리했다. Centos를 주로 사용해서 다른 OS에서 안되는 경우도 있을 것이다.
기본
if
1 2 3 4 5 6 |
if [ -f "/path/filename" ] then echo "file 있음" else echo "file 없음" fi |
사용자 관리
user삭제하기
1 |
userdel 삭제할아이디 |
프로세스
ps
- -o : 특정 필드만 보여줌
- –sort : 정렬필드
1 2 3 |
# CPU로 정렬 ps -o pid,ucmd,uid,ucomm,comm,command,args ax --sort pcpu ps -o pid,pcpu,args ax --sort pcpu |
프로세스 찾아서 Kill
1 2 |
# nginx 프로세스 Kill ps aux | grep nginx | awk '{system("kill "$2)}' |
프로세스명으로 pid 찾기
1 |
ps aux | grep nginx | awk '{print $2}' |
특정 파일을 사용하는 프로세스 찾는 방법
1 |
lsof | grep 파일명 |
파이프라인
특정 라인만 보는 방법(sed)
1 |
sed -n 28853p < test.txt |
파일 대신 직접 입력한 텍스트를 넘겨주는 방법
cat 말고 다른 커맨드에서도 응용할 수 있다.
1 2 3 4 |
# cat << EOF hello world EOF |
파일시스템
포맷하고, 마운트하기
특정 파티션을 포맷하고, 마운트하는 과정이다.
1 2 3 4 5 |
# ext4로 포맷 mkfs.ext4 /dev/vda ## 마운트하기 mount /dev/vda /data_dir |
파일명, 디렉토리명으로 찾기
1 2 |
# nginx.conf가 포함되어 있는 모든 위치를 출력 locate nginx.conf |
find 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# 특정 내용을 포함하는 파일 찾기 find ./ -name "*" | xargs grep "내용" # rsync로 최근 7주일간 변경된 파일 동기화 find . -type f -mtime -7 -print | rsync -av --files-from=- . /dest # 현재 디렉토리에서 5분 지난 파일 찾아서 지우기 find . -type f -cmin +5 -exec rm -f {} \; # 특정 디렉토리 제외하고 복사하기 find SOURCE_PATH \ -type f \ -not -path '*EXCLUDE_PATH1*' \ -not -path '*EXCLUDE_PATH2*' \ -exec \ cp --parents '{}' TARGET_PATH \; |
네트워크
네트워크 정보 확인
1 2 3 4 |
/sbin/ifconfig -a cat /etc/resolv.conf /sbin/route -n /sbin/arp -n |
설정
Timezone을 KST로 변경하기
1 |
ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime |
시간 맞추기
타임서버를 사용해서 OS의 시간을 설정한다.
1 2 |
# 시간 맞추기 rdate -s time.bora.net |
호스트명 변경
1 2 3 4 5 6 7 8 |
# 현재 호스트명 확인 hostname # 호스트명 변경하기 vi /etc/sysconfig/network # 네트워크 서비스 재시작 service network restart |
모니터링
특정 포트로 들어오는 패킷 확인
1 |
ngrep port 80 |
cat으로 파일 와치하기
1 2 |
# 1초마다 test.json 파일 내용 출력 watch --interval 1 cat test.json |
벤치마킹
하드웨어 정보 확인
CPU 관련:
1 2 3 4 5 |
# CPU 속도 dmesg | grep processor # CPU 갯수 grep -c processor /proc/cpuinfo |
OS에서 사용하는 bit를 확인할 수 있다.
- x86_64 : 64bit
- i386, i686 : 32bit
1 |
arch |
메모리 관련:
1 |
cat /proc/meminfo |
하드디스크 관련:
1 2 3 4 5 6 7 8 |
# scsi cat /proc/scsi/scsi # ide cat /proc/ide/hda/model # raid cat /proc/mdstat |
네트워크 관련:
1 |
cat /proc/net/netlink |
ab로 사이트 응답속도 측정
이 커맨드를 사용하려면 Apache가 요구된다.
1 2 |
# 10개의 스레드로 4번 요청. 총 요청수 : 40번 ab -n 4 -c 10 http://domain/filename.php |
grep
grep 옵션
- -f : 파일로부터 패턴을 얻는다.
- -i : 차이가 나는 경우 무시한다. 일치하는 경우만 선택.
- -v : 매칭되지 않는 라인을 선택한다.
ps grep 할 때 이것이 포함되는 것 방지하기
-v 옵션을 사용한다.
1 2 3 4 5 |
# grep을 제외 ps aux | grep perl | grep -v grep # watch 예제. watch에서 파이프를 쓰고 싶을 때 '를 사용 watch 'ps aux | grep nginx | grep -v grep | grep -v tail | grep -v watch' |
top
특정 pid만 모니터링
1 |
top -p 23583 |
sed
CR 제거하기
윈도 텍스트파일에 있는 CR(캐리지 리턴)을 제거하는 방법이다.
1 |
sed -i -e 's/\r$//' test.sh |
CURL
curl로 API 호출
1 2 3 4 5 6 7 |
# GET 방식 curl -XGET http://domain/filename.php # POST 방식 curl -X POST http://domain/filename.php \ -H "Content-Type:application/json" \ -d '{\"key\": \"value\", \"key2\": \"value2\"}' |
사이즈 재기
wc를 사용해서 사이즈를 잴 수 있다.
1 2 3 4 5 |
# 사이즈 재는 방법 curl -XGET https://server/path | wc -c # 압축한 사이즈 curl -XGET https://server/path --compress | wc -c |
더 나은 방법으로 w 옵션을 사용할 수 있다.
1 2 3 4 5 |
# 사이즈 재는 방법 curl -so /dev/null https://server/path -w '%{size_download}' # 압축한 사이즈 curl --compressed -so /dev/null https://server/path -w '%{size_download}' |
기타
텍스트를 GZIP
1 2 3 4 |
# gzip 하는 방법 gzip -c -f << EOF uncompress data EOF |
자동 입력하기
Is there a way to input automatically when running a shell?
1 2 3 4 |
test.sh <<! y pasword ! |
screen 커맨드 단축키
쉘에서 다중 화면을 사용할 수 있는 screen에서 사용할 수 있는 단축키.
- C-a A : 화면 타이틀 변경
- C-a c : 화면 생성
- C-a 0-9 : 화면 번호로 이동
- C-a n : 다음 화면으로 이동
- C-a “ : 전체 화면 목록 보기
특정 계정으로 쉘 실행하는 방법
1 |
su -s /bin/bash jenkins |
패키지 버전 확인
1 2 3 4 5 6 7 8 |
cat /etc/issue CentOS release 5.5 (Final) Kernel \r on an \m # 다양한 정보 출력 grep . /etc/*-release |
날짜 unixtime으로 출력
1 2 |
date +%s 1489857490 |
한번에 두가지 명령 실행하기
1 2 3 4 5 |
# home 디렉토리로 이동 후 파일목록 출력 cd /home && ls -al # 컴파일부터 설치까지 ./configure ; make ; make install |
도움말 cat으로 출력
1 |
man -P cat dig |
SCP
1 2 |
# 원격 호스트에 있는 파일 로컬의 현재 디렉터리로 복사 scp root@hostname:/usr/local/lua/lib/cjson.so . |
AWK
1 2 3 4 5 6 7 8 9 |
# 메모리 파싱 free -m | awk '/Mem:/ { print $2 } /buffers\/cache/ { print $3 }' # rpm.spec에서 버전값만 가져오기 cat rpm.spec | grep Version | awk '{ print $2 }' # Makefile에서 사용할 때 VERSION = `cat rpm.spec | grep Version | awk '{ print $$2 }'` echo VERSION |