수석 자바, 당신은 리눅스에 대한 지식을 이해한다

원본 : 맛 (마이크로 채널 공공 숫자 ID : xjjdog)이 여동생, 공유하시기 바랍니다가, 소스를 보관하십시오 재현.

소프트웨어 재능의 두 가지 영역이 있습니다, 하나는 프로젝트의 유형입니다, 하나는 연구 기반입니다. 리눅스 분야에서, 커널 상대는 명령 행에서 작업하는 엔지니어링에 속하는 연구에 참여합니다. 엔지니어링도 매우 고통스러운 명령을 낭송, 예를 들어, 자신의 어려움을 가지고, 일반적으로 표면을 덮고있는 첫 번째는 넓은 아니라, 암송하는 것은 권장하지 않습니다, 뇌 세포의 거의 잊혀진 너무 빨리, 낭비의 두 번째 음. Niubi 표기는 모퉁이, 연기를 희석하기 위해 시간을 사용하고, 그것의 기쁨을 경험하게 사용됩니다. 그녀를 사랑하고 매일 침대에 그녀를 잡고는 성공 좋아한다.

Linux근본적인 이유보다는 정말 많은 같은 명령이 가지고 소프트웨어입니다 ag같은 대안을 원하는 명령을 grep하지만, 대부분의 고대와 강력한 명령. 때문이 아니 얼마나 좋은 소프트웨어 설계의 초기 시스템에 정착 소프트웨어의 일부는 시간이 지남에, 그것은 키보드의 모든 같은 규칙, 너무 비용이 많이 드는 습관 변화되기 때문에 L그리고 F변화 등을 .

이 문서는 이미 리눅스 명령의 대부분을 알고, 운영 체제의 기본 요소를 이해하고 있다고 가정합니다. 당신이 지금 10 이하의 명령을 이해한다면, 다음과 같은 내용을 읽을 수 없습니다. 가장 기본적인 것들 또한, 우리는 가장 많은 점수를 인터뷰 할 가장 일반적인 장소 중 일부를 나열하고 일부 조합은 트릭을 보지 못했다 수 있습니다. 그러나이 문서에서는 미래의 주제 검사 점에 대한 서문으로 대략적인 윤곽과 인상을 준다.

이 문서에 나타나는 모든 명령에 익숙하고 기억한다.

몇 가지 일반적인 리눅스 시스템

첫째, 리눅스의 현재 버전은 이미 번성, 일반적인 느낌, 일반적으로 데스크톱 버전과 서버 버전은 분류가 있습니다.

  • 우분투 가장 일반적인 리눅스 배포판 개인, 남아프리카 공화국은 풍부한 감정을 가지고, 당신은 돈을 수행 할 수 있습니다
  • CentOS는 가장 일반적인 리눅스 서버로 인해 저작권 태어난 바퀴에 새 버전 오픈의 RHEL의 버전을 전송
  • 아치 롤링 업그레이드, 대규모 바이너리 패키지, 사회 운동가, 개인적으로 좋아
  • 젠투는 소스, 안정에서 컴파일 시작하는 소프트웨어의 필요성을 설치하지만, 그것으로 고통스러운 것
  • LFS는 제로 리눅스에서 구축, 내가 다시 할 일을, 리눅스 모든 루트 머리카락 명확하게 볼 수 있습니다
  • 칼리 개발 경로 릴리스 대신, 투 전문은 필드

우리는 처음의 개념을 이해한다

  • 그것은 KISS IT 및 단순 바보가, 철학적이라고합니다 유지]를
  • 모든 파일입니다 , 또한, 더 어이가 파이프, 장비, 소켓 등뿐만 아니라 파일을 추출되었다 일반적으로 어떤 문서 파일, 프로세스, 디스크 파일이라고합니다. 이것은 가장 중요한 리눅스 단체입니다.
  • 파이프 | 세퍼레이터 명령 후의 명령 입력으로 출력하기 전에 일련의 복수 될
  • 리디렉션
    • < 명령 파일을 입력으로 것인가
    • > 파일에 명령 출력
    • >> 명령의 출력이 파일에 추가되고
  • 에 의해 처음으로 많은 등, zsh을, CSH에있다, 일반적으로 가장 일반적으로 사용되는, 쉘 확인 배쉬입니다 echo $SHELL현재 사용자의 쉘을 볼 수, 해당 구성 파일을 적절하게 변경해야합니다. 예를 들어 .zshrc,.bashrc

네 개의 요소

리눅스를 입력, 우리의 첫 번째 관심사는 네 가지 요소이다 : 메모리, CPU, 메모리, 네트워크. 리눅스는 당신이 구석 구석을 감시 할 수 있도록 충분한 명령을 제공합니다. 다음에 관계없이 능력, 실력없는 때리기에 기억, 가장 일반적으로 사용되는 명령의 일부입니다.

CPU

  • 사용 top, CPU 부하를 보려면 CPU의 종류에 따라 Shift + P를 사용합니다. 모든 말 등, 우리, WA을 알아야
  • 사용하여 uptime시스템 시작 시간과 부하를 볼 수 있습니다, 그것은 무엇을 의미 하는가를 넣지? 어떤 시스템 과부하로 계산? 이것은 고주파 문제가, 내가 당신을 말하지 않았다 비난
  • ps, S, D, T, Z, <, N 상태 비트가 의미 보 Macrophoma 깊은 명령, 프로세스 번호 추가를 확인, 당신은 또한 R을 알 필요가
  • top그리고 ps많은 기능과 같은, 상호되는 watch "ps -mo %cpu,%mem,pid,ppid,command ax"프로세스 목록의 상단에 상당] top -n 1 -bcps -ef결과는 유사 하였다.
  • 죽은이 애니메이션을 할 수 있습니다 kill프로세스를 종료. 자바의 경우, 필요에 초점을 kill -9, kill -15, kill -3의미가 죽일 너무 많은 신호를 사용할 수 있습니다 kill -l볼 수 있습니다, 그들은 신호 부스트의 대부분을 알 수.
  • 일시적 죽고 싶지 않으면, 당신은 할 수 &와 같은 배경의 기호에 실행 tail -f a.log &. jobs명령 후, 복원하려는, 현재 배경의 목록을 보려면 사용하는 fg다시 전경. 그것은 당신이 둘 때, 모든 터미널 운영의 term가 필요, 허리 명령을 사용하면 프로그램을 계속 할 수 있도록 또한, 사라 nohup명심해야하는 명령
  • mpstat의는 다양한 통계 시스템의 CPU를 보여줍니다
  • CPU 선호도를 알아보기

기억

  • free -m 무료, 사용, 캐시, 스왑 항목의 의미를 이해하기 위해
  • cat /proc/meminfo 세심한 학생들이 눈치 챘을 수도 메모리, CPU, 메모리 정보, 그리고 다른 최고 수치 표시 다른 명령에 대한 자세한 정보를보기는 동일합니다.
  • slabtop이러한 캐시 디렉토리 항목을 일으키는 많은 수의 파일을 통과으로, 커널 캐시 점유율을 표시합니다. 우리는 때문에 구현에 프로덕션 환경에서 발생했던 find /원인 dentry_cache서버 메모리의 고갈.
  • vmstat명령은 내가 가장 좋아하고 가장 일반적으로 사용되는 명령 시스템의 작동 상태를 이해하는 가장 빠른 수 있습니다 중 하나입니다. 각 매개 변수의 의미는 알 수 있어야합니다.
  • swapon 명령은 후 swapoff 개방, 가까운 스왑 공간
  • 일반적으로 샘플링 도구로 사용 ** ** SAR 휠 상기 통계적 클래스

기억

  • 사용 df -h시스템 디스크 사용량 프로필을 볼 수
  • lsblk는 정보 블록 장치 나열
  • 뒤의 보기 디렉토리 나 파일 크기

네트워크

  • rsync를 오 증가 수있는 강력한 동기화 도구
  • NETSTAT는 리눅스 네트워크 시스템 상태 정보의 다양한보기
  • SS는 그 수에서 netstat보다 더 빠르고 효율적으로 연결 TCP의 상태에 대한 자세한 정보를 표시합니다.
  • 컬, wget을 시뮬레이션 요청 도구를 다운로드 도구입니다. -R은 wget으로 HTTP : // 사이트 전체 사이트를 다운로드
  • AB 아파치 서버 성능 테스트 도구
  • ifstat 통계 네트워크 인터페이스 트래픽 상태
  • nslookup을은 IP 도메인 쿼리 멋진 버스트 내부 네트워크에 따르면, DNS 도메인 이름 정보를 조회
  • NC의 네트워크 도구 스위스 군용 칼, 수치를 사용하지 않는
  • ARP의 디스플레이와 MAC 변환 테이블에 IP를 수정
  • 경로 추적의 호스트 간의 패킷 디스플레이 데이터 경로는 일반적으로 더 적은 곧 떨어져 여러 점프 공지
  • tcpdump와는 많이 와이어 샤크를 다운로드, 대답
  • 현재 열려있는 모든 출력 단자. 사용 who여신 터미널에서 발견되는 명령을, 당신은 구애 수 있습니다

네트워크 설치를 권장 경험 칼리 리눅스는 도구는 극단적 위의 당신은 높은 만들 것입니다.

어떻게 구성하는 방법

리눅스 명령의 상태를 모니터링하는 통계의 다양한 외에도, 심층 추적을 수행하는 추적의 다양한있다, 매우 흥미, 통계 상위 리소스 소비자의 다양한있다, 같은 lsblk, lsusb, lscpi로 시스템 하드웨어를 볼 수있는 다양한 LS가있다. 기본적으로 계약은 가장 강력한 시스템을 지향하기 때문에 적절한 도구를 찾을 수 있습니다, 당신의 본능을 따르십시오.

리눅스는 좀 더 다른 디렉토리가 /proc각 명령의 참화를 들고. 마찬가지로 sysctl명령, 그것은 수정하는 것입니다 /proc/sys디렉토리 맵 항목을. 편지 보지 마십시오 find /proc/sys -type f | wc -lsysctl -a| wc -l결과는 같지 않다?

/ proc 파일 시스템은 가상 파일 시스템 공간을 차지하지 않고 오직 메모리, 외부 메모리 사이에 존재입니다. 그러나이 방법은 파일 시스템 인터페이스는 운영 체제 커널 데이터에 대한 액세스를 제공합니다. 시스템의 모든 상태는 눈을 벗어날 수 없다. 예를 들면 :

  • cat /proc/vmstat봐, 그것은하지 않고, vmstat같은 명령의 출력?
  • cat /proc/meminfo 메모리는 가장 완벽한 정보가 아니며
  • cat /proc/slabinfo하지 그 slabtop정보를이
  • cat /proc/devices 그것은 이미 디바이스에로드
  • cat /proc/loadavg 로드 평균은 원래 아 여기 거짓말
  • cat /proc/stat 모든 CPU 활동 정보
  • ls /proc/$pid/fd레이는 여전히 lsof결과

일반 문제 해결 방법

일반 문제 해결은 CPU 메모리 및 조사에 여러 가지 다른 요소 주위에있다. 다음은 문제 해결이나 프로세스의 성능에 대한 일반적인 문제가 많은 사진은 말을한다.

예를 들어 시나리오에 대한

다음 예는 다양한 명령의 조합을 적용 할 특정 응용 프로그램 시나리오를 보여, 같은 장면이 많다, 필요 개별 축적합니다. 그러나 고도로 숙련 된 다수의 사례가 나오지과 AWK하는 것이 좋습니다.

어떻게 가장 높은 스레드 특정 정보 CPU 중 하나를 차지하는 자바 프로세스를 볼 수?

  • 프로세스가 N로 계산 가장 높은 스레드 CPU를 차지 가져옵니다.
    • 사용 최고 top -H -p pid, 시각적 관찰
    • 사용 추신 ps -mo spid,lwp,stime,time,%cpu -p pid
  • 스레드 수를 16 진수로 변환printf 0x%x n
  • 100 선 스레드 정보를 인쇄 한 후, 적절한 처리를 찾을 jstack을 사용하여 jstack -l pid| grep spid -A 100

각 네트워크 상태에 대한 통계의 수

netstat -ant | awk '{print $6}' | sort | uniq -c | sort -n -k 1 -r첫째는,리스트를 볼 NETSTAT 사용 여섯 번째 컬럼의 사용 "AWK '차단 사용 uniq정렬 통계 및 통계. 물론이 될 수 있습니다. netstat -ant | awk '{arr[$6]++}END{for(i in arr){print arr[i]" "i }}' | sort -n -k 1 -r이 "오늘의 내림차순으로 IP 액세스 목록 주어진 아파치 로그 분석은"같은 문제입니다.

스왑을 사용하여 어떤 프로세스를 참조하는 방법

먼저 / proc 디렉토리 / $의 PID를 이해해야합니다 / 우리가 필요로하는 것입니다 해당 필드를 바꿔 우리가 필요로하는 모든 종류의 정보가있다 현재 smaps. 클릭을 통해 긴 루프로.

for i in `cd /proc;ls |grep "^[0-9]"|awk ' $0 >100'` ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps ;done |sort -k2nr 
复制代码

마지막으로,의 큰 그림 http://www.brendangregg.com/을 첨부

저자에 관하여 : 여동생 맛 (xjjdog)을, 대중에게 우회 프로그래머의 수를 허용하지 않습니다. 인프라와 리눅스 초점을 맞 춥니 다. 십 년간 아키텍처, 일 백억 흐름, 그리고 당신이 높은 동시성의 세계를 탐험, 당신에게 다른 맛을 제공합니다. 내 개인적인 마이크로 채널 xjjdog0는, 친구, 더 교류를 추가 환영합니다.

추천

출처juejin.im/post/5db69c05f265da4d4434a221