Linux 상용 명령 지식 축적(지속 업데이트)

앞 에 쓰다
평소에 대부분 자바 와 관련 된 개발 작업 을 하지만 매일 리 눅 스 시스템 을 접 합 니 다.특히 Mac 을 사용 한 후에 매일 검은색 배경 명령 행 환경 에서 일 합 니 다.자신의 기억력 이 좋 지 않 고 유용 한 리 눅 스 명령 이 좋 지 않 은 기억 이 많 습 니 다.이 제 는 나중에 볼 수 있 도록 정리 해 보 겠 습 니 다.
기본 조작
Linux 끄 기,다시 시작
#   
shutdown -h now

#   
shutdown -r now

시스템,CPU 정보 보기
#         
uname -a

#         
cat /proc/version

#           
env

cat /proc/cpuinfo

#        cpu,   cpu  
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

#      cpu,       
cat /proc/cpuinfo | grep physical | uniq -c

#     CPU   32bit  64bit   ,       32bit     CPU   64bit
getconf LONG_BIT

#     0,     64bit  . lm long mode,   lm  64bit
cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l

소프트 연결 만 들 기
ln -s /usr/local/jdk1.8/ jdk

rpm 관련
#       rpm      
rpm -qa | grep    

sshkey
#   sshkey
ssh-keygen -t rsa -C [email protected]

#id_rsa.pub                home/username/.ssh/authorized_keys  ,       (.ssh   700, authorized_keys   600) 

명령 이름 바 꾸 기
#       .bash_profile        
alias ll='ls -alF'

동기 서버 시간
sudo ntpdate -u ntp.api.bz

백그라운드 실행 명령
#     ,   nohup.out  
nohup xxx &

#     ,        
nohup xxx > /dev/null &

#     ,                 
nohup xxx >out.log 2>&1 &

강제 활성 사용자 종료
#              .  TTY      
pkill -kill -t [TTY]

명령 경로 보기
which 

프로 세 스 모든 열기 최대 fd 수 보기
ulimit -n

dns 설정
vim /etc/resolv.conf

nslookup,도 메 인 이름 경로 표 보기
nslookup google.com

최근 로그 인 정보 목록
#      5   
last -n 5

고정 IP 설정
ifconfig em1  192.168.5.177 netmask 255.255.255.0

프로 세 스 에 불 러 온 환경 변 수 를 봅 니 다.
#      cd /proc    ,             
ps eww -p  XXXXX(   ) 

프로 세 스 트 리 보기 서버 프로 세 스 찾기
ps auwxf

프로 세 스 시작 경로 보기
cd /proc/xxx(   )
ls -all
# cwd        

사용자 추가,sudo 권한 설정
#     
useradd    
passwd    

#  sudo  
vim /etc/sudoers
#        
# root    ALL=(ALL)       ALL
#     ALL=(ALL)       ALL

xxx 를 포함 하 는 모든 프로 세 스 이름 을 강제로 닫 습 니 다.
ps aux|grep xxx | grep -v grep | awk '{print $2}' | xargs kill -9

디스크,파일,디 렉 터 리 관련 작업
vim 조작
#normal    g    , x       , y        
:%s/x/y/g
    
#normal   
0  #       (  0)
$  #       
shift + g #       
gg #      
    
#     
:set nu
    
#     
:set nonu
    
#   
/xxx(    )  #     ,  n     
?xxx(    )  #      

읽 기 전용 파일 을 열 고 수정 후 저장 해 야 할 때(사용자 전환 없 이 저장 할 수 있 는 방식)
#  normal   
:w !sudo tee %

디스크,파일 디 렉 터 리 기본 정보 보기
#         
mount

#         
df

#           
du -H -h

#            ,          ,     
du -sh *

wc 명령
#          
wc -l filename
 
#         word
wc -w filename

#               
wc -L filename

#      
wc -c

상용 압축,압축 풀기 명령
압축 명령
tar czvf xxx.tar     
    
zip -r xxx.zip     

압축 해제 명령
tar zxvf xxx.tar
    
#         
tar zxvf xxx.tar -C /xxx/yyy/
    
unzip xxx.zip

파일 소속 사용자,사용자 그룹 변경
chown eagleye.eagleye xxx.log

cp, scp, mkdir
#  
cp xxx.log

#            
cp -f xxx.log

#      
cp -r xxx(    ) yyy(     )

#     
scp -P ssh   [email protected]:/home/username/xxx /home/xxx

#       
mkdir -p /xxx/yyy/zzz

#        ,   test,main    java, resources   
mkdir -p src/{test,main}/{java,resources}

두 파일 을 비교 하 다
diff -u 1.txt 2.txt

로그 출력 바이트 수,성능 테스트 에 사용 가능
#        ,        ,         “.” ,                        ,          .
tail -f xxx.log | pv -bt

특수 문자 보기,제거
#       
cat -v xxx.sh

#       
sed -i 's/^M//g’ env.sh           ,   ^M:        : ctrl+v+enter

시스템 원인 으로 인 한 파일 의 특수 문 자 를 처리 합 니 다.
#               
cat file.sh > file.sh_bak

#   file.sh             ,       ,   ctrl + d     
cat > file1.sh

#  vim                
:set fileencodings=utf-8 ,   w (  )        utf8   ,
:set fileformat=unix

#  mac   dos2unix       
find . -name "*.sh" | xargs dos2unix

tee,방향 을 바 꾸 는 동시에 화면 에 출력
awk ‘{print $0}’ xxx.log | tee test.log

검색 관련
grep
#     ,      xxx   
grep -v xxx

#       
grep -v '^$'

#      2,         
grep -n “^$” 111.txt    

#    abc    
grep -n “^abc” 111.txt 

#                 
grep 'xxx' -n xxx.log

#             
grep 'xxx' -c xxx.log

#      ,         
grep 'xxx' -i xxx.log

awk
#  ':'     ,      user     
awk -F ':' '{if ($5 ~ /user/) print $0}' /etc/passwd 

#            ( )(    )     
awk -v RS='character' 'END {print --NR}' xxx.txt

find 검색 명령
#         .mysql   
find /home/eagleye -name '*.mysql' -print

#    /usr        ,   3         。
find /usr -atime 3 –print
  
#    /usr        ,   5         。
find /usr -ctime 5 –print

#    /doc        , jacky  、       j   。  
find /doc -user jacky -name 'j*' –print

#    /doc        ,       ja      ma     。
find /doc \( -name 'ja*' -o- -name 'ma*' \) –print

#     /doc        ,           bak   ,     。-exec         ,rm      ,{ }      ,“\;”        。 
find /doc -name '*bak' -exec rm {} \;

네트워크 관련
어떤 프로 세 스 가 이 포트 를 사 용 했 는 지 보기
lsof -i:port

이 컴퓨터 ip 주소 가 져 오기
/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"

iptables
#   iptables  
service iptables status

#      ip
iptables -I INPUT -s ***.***.***.*** -j DROP

#      IP,        :
iptables -D INPUT -s ***.***.***.*** -j DROP

  :   -I   Insert(  ),-D  Delete(  )。       ,INPUT    ,***.***.***.***      IP,DROP      。

#  9090     
/sbin/iptables -I INPUT -p tcp --dport 9090 -j ACCEPT 

#      、  、  
/etc/init.d/iptables status
/etc/init.d/iptables start
/etc/init.d/iptables stop
/etc/init.d/iptables restart

nc 명령,tcp 디 버 깅 이기
#    endpoint  TCP  ,  data        
nc 192.168.0.11 8000 < data.txt

#nc       ,       ,            received_data 
nc -l 8000 > received_data

#       ,        -k  
nc -lk 8000

tcpdump
# dump   12301   tcp 
tcpdump -i em1 tcp port 12301 -s 1500 -w abc.pcap

추적 네트워크 경로
# traceroute    udp  ,    -I   icmp  
traceroute -I www.163.com

#  ttl 3   
traceroute -M 3 www.163.com  

#       
traceroute -p 8080 192.168.10.11  

ss
#            
ss -l 
    
#            socket
ss -pl 
    
#     tcp socket
ss -t -a 
    
#      UDP Socekt
ss -u -a 
    
#         SMTP  
ss -o state established '( dport = :smtp or sport = :smtp )'  
    
#         HTTP   
ss -o state established '( dport = :http or sport = :http )'  
    
      X      
ss -x src /tmp/.X11-unix/*  
    
    socket    
ss -s 
    
  :netstat   /proc    PID  ,ss   /proc/net       。  ss                  netstat   

netstat
#     ip    ,            
netstat -n | awk '/^tcp/ {n=split($(NF-1),array,":");if(n<=2)++S[array[(1)]];else++S[array[(4)]];++s[$NF];++N} END {for(a in S){printf("%-20s %s
", a, S[a]);++I}printf("%-20s %s
","TOTAL_IP",I);for(a in s) printf("%-20s %s
",a, s[a]);printf("%-20s %s
","TOTAL_LINK",N);}' # , # CLOSED: # LISTEN: # SYN_RECV: , # SYN_SENT: , # ESTABLISHED: # FIN_WAIT1: # FIN_WAIT2: # ITMED_WAIT: # CLOSING: # TIME_WAIT: # LAST_ACK: netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}' # time_wait netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20

링크 ux 성능 명령 모니터링
top
     F   O  ,    a-z                ,     。     R            

열명
속뜻
PID
프로 세 스 id
PPID
부모 프로 세 스 id
RUSER
Real user name
UID
프로 세 스 소유자 id
USER
프로 세 스 소유자 의 사용자 이름
GROUP
프로 세 스 소유자 의 그룹 이름
TTY
프로 세 스 를 시작 하 는 터미널 이름 입 니 다.터미널 에서 시작 하지 않 은 프로 세 스 는?
PR
우선 순위
NI
nice 값.마이너스 는 높 은 우선 순 위 를 나타 내 고,플러스 는 낮은 우선 순 위 를 나타 낸다.
P
마지막 으로 사용 하 는 CPU 는 다 중 CPU 환경 에서 만 의미 가 있 습 니 다.
%CPU
마지막 으로 업 데 이 트 된 CPU 시간 은 백분율 입 니 다.
TIME
프로 세 스 가 사용 하 는 CPU 시간 합계,단위 초
TIME+
프로 세 스 가 사용 하 는 CPU 시간 합계,단위 1/100 초
%MEM
프로 세 스 가 사용 하 는 물리 적 메모리 백분율
VIRT
프로 세 스 가 사용 하 는 가상 메모리 총량,단위 kb.VIRT=SWAP+RES
SWAP
프로 세 스 가 사용 하 는 가상 메모리 의 크기,단위 kb.
RES
프로 세 스 가 사용 하 는 물리 적 메모리 크기,단위 kb.RES=CODE+DATA
CODE
실행 가능 코드 가 사용 하 는 물리 적 메모리 크기,단위 kb
DATA
실행 가능 코드 이외 의 부분(데이터 세그먼트+스 택)이 사용 하 는 물리 적 메모리 크기,단위 kb
SHR
공유 메모리 크기,단위 kb
nFLT
페이지 오류 횟수
nDRT
마지막 으로 지금까지 수 정 된 페이지 수 를 기록 합 니 다.
S
프로 세 스 상태.D=끊 을 수 없 는 수면 상태,R=운행,S=수면,T=추적/정지,Z=좀 비 진행
COMMAND
명령 행
WCHAN
이 프로 세 스 가 잠 을 자고 있 으 면 잠 자 는 시스템 함수 이름 을 표시 합 니 다.
Flags
작업 표지,sched.h 참조
dmesg,시스템 로그 보기
dmesg

iostat,디스크 IO 상황 모니터링
iostat -xz 1
    
# r/s, w/s, rkB/s, wkB/s:                  (   )。     ,         。
# await:IO         ,     。             ,       ,  IO          。        ,                  。
# avgqu-sz:            。        1,           (              )。
# %util:     。             ,        60,     IO  (    IO        )。    100%,          。
#              ,                       。      ,  IO     ,                ,         、            。

free,메모리 사용 현황
free -m
    
eg:
    
                    total       used       free     shared    buffers     cached
Mem:            1002        769        232          0         62        421
-/+ buffers/cache:           286        715
Swap:          1153          0       1153
    
    Mem :
total     : 1002M
used         : 769M
free       : 232M
shared         ,  0
buffers Buffer      : 62M
cached Page      :421M
    
  :total(1002M) = used(769M) + free(232M)
    
    (-/+ buffers/cache):
(-buffers/cache) used   :286M (      Mem   used – buffers – cached)
(+buffers/cache) free   : 715M (      Mem   free + buffers + cached)
    
  -buffers/cache                , +buffers/cache             .
    
          

sar,네트워크 삼투 상태 보기
# sar                 。        ,            ,            
sar -n DEV 1
    
#
# sar         TCP    ,    :
# active/s:       TCP   ,   connect     TCP  ;
# passive/s:       TCP   ,   accept     TCP  ;
# retrans/s:  TCP    ;
# TCP                         ,               ,         。TCP             ,             
sar -n TCP,ETCP 1

vmstat,주어진 시간 에 CPU 사용률 모니터링,메모리 사용,가상 메모리 상호작용,IO 읽 기와 쓰기
# 2   2         , 1       (        )
vmstat 2 1
    
eg:
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 3499840 315836 3819660 0 0 0 1 2 0 0 0 100 0
0 0 0 3499584 315836 3819660 0 0 0 0 88 158 0 0 100 0
0 0 0 3499708 315836 3819660 0 0 0 2 86 162 0 0 100 0
0 0 0 3499708 315836 3819660 0 0 0 10 81 151 0 0 100 0
1 0 0 3499732 315836 3819660 0 0 0 2 83 154 0 0 100 0
  • r 는 실행 대기 열(즉,몇 개의 프로 세 스 가 정말 CPU 에 할당 되 었 는 지)을 표시 합 니 다.제 가 테스트 한 서버 는 현재 CPU 가 비교적 비어 있 고 프로그램 이 달리 고 있 지 않 습 니 다.이 값 이 CPU 수 를 초과 하면 CPU 병목 이 발생 합 니 다.이것 도 top 의 부하 와 관련 이 있 습 니 다.보통 부하 가 3 을 넘 으 면 높 고 5 를 넘 으 면 높 으 며 10 을 넘 으 면 정상 이 아 닙 니 다.서버 상태 가 위험 합 니 다.top 의 부하 가 초당 실행 대기 열 과 유사 합 니 다.실행 대기 열 이 너무 크 면 CPU 가 바 쁘 고 CPU 사용률 이 높다 는 뜻 입 니 다.
  • b 는 막 힌 프로 세 스 를 표시 합 니 다.이것 은 더 이상 말 하지 않 고 프로 세 스 가 막 히 는 것 을 알 고 있 습 니 다.
  • swpd 가상 메모리 가 사 용 된 크기 입 니 다.0 이상 이면 기계 의 물리 적 메모리 가 부족 하 다 는 것 을 의미 합 니 다.프로그램 메모리 가 유출 된 원인 이 아니라면 메모 리 를 업그레이드 하거나 메모리 소모 작업 을 다른 기계 로 옮 겨 야 합 니 다.
  • free 남 은 물리 적 메모리 의 크기,나의 기계 메모 리 는 모두 8G 이 고 나머지 3415 M 이다.
  • buff Linux/Unix 시스템 은 디 렉 터 리 에 어떤 내용,권한 등 이 있 는 캐 시 를 저장 하 는 데 사 용 됩 니 다.저 는 이 컴퓨터 에서 약 300 여 M
  • 을 차지 합 니 다.
  • cache cache 는 우리 가 연 파일 을 직접 기억 하고 파일 에 버퍼 링 을 합 니 다.저 는 이 컴퓨터 에서 약 300 여 M 을 차지 합 니 다.(여 기 는 Linux/Unix 의 똑똑 한 점 입 니 다.남 은 물리 적 메모리 의 일부분 을 파일 과 디 렉 터 리 의 캐 시 로 가 져 오 는 것 은 프로그램 이 실행 하 는 성능 을 향상 시 키 기 위해 서 입 니 다.프로그램 이 메모 리 를 사용 할 때 buffer/cached 는 빠르게 사 용 됩 니 다.)
  • si 는 1 초 에 디스크 에서 가상 메모리 의 크기 를 읽 습 니 다.이 값 이 0 보다 크 면 물리 적 메모리 가 부족 하거나 메모리 가 유출 되 었 음 을 나타 내 므 로 메모리 소모 프로 세 스 를 찾 아 해결 해 야 합 니 다.나의 기 계 는 메모리 가 넉넉 해서 모든 것 이 정상이다.
  • so 1 초 에 가상 메모리 가 디스크 에 기록 되 는 크기 입 니 다.이 값 이 0 보다 크 면 위 와 같 습 니 다.
  • bi 블록 장 치 는 1 초 에 받 는 블록 수량 입 니 다.이곳 의 블록 장 치 는 시스템 에 있 는 모든 디스크 와 다른 블록 장 치 를 말 합 니 다.기본 블록 크기 는 1024 byte 입 니 다.저 는 본 기계 에서 IO 작업 이 별로 없 기 때문에 0 이 었 습 니 다.그러나 저 는 대량의 데이터(2-3T)를 복사 하 는 기계 에서 본 적 이 있 습 니 다.140000/s 에 달 할 수 있 고 디스크 기록 속도 차이 가 많 지 않 습 니 다.
  • bo 블록 장치 가 1 초 에 보 내 는 블록 수량,예 를 들 어 우리 가 파일 을 읽 으 면 bo 는 0 보다 커 야 합 니 다.bi 와 bo 는 보통 0 에 가 까 워 야 한다.그렇지 않 으 면 IO 가 너무 잦 아서 조정 이 필요 하 다.
  • in 초당 CPU 중단 횟수,시간 중단 포함
  • cs 매 초 상하 문 전환 횟수,예 를 들 어 우리 가 시스템 함 수 를 호출 할 때 상하 문 전환 을 해 야 합 니 다.스 레 드 전환 도 해 야 합 니 다.프로 세 스 상하 문 전환 도 해 야 합 니 다.이 값 은 작 을 수록 좋 고 너무 큽 니 다.스 레 드 나 프로 세 스 의 수 를 낮 추 는 것 을 고려 해 야 합 니 다.예 를 들 어 apache 와 nginx 같은 웹 서버 에서우 리 는 일반적으로 성능 테스트 를 할 때 수천 개의 병발,심지어 수만 개의 병발 테스트 를 한다.웹 서버 의 프로 세 스 를 선택 하면 프로 세 스 나 스 레 드 의 피크 값 에서 계속 하향 조정 할 수 있다.압력 테스트 는 cs 에서 비교적 작은 값 까지 이 프로 세 스 와 스 레 드 수가 비교적 적합 한 값 이다.시스템 호출 도 시스템 함 수 를 호출 할 때마다 우리 의 코드 는 커 널 공간 에 들 어가 문맥 전환 을 초래 합 니 다.이것 은 자원 을 많이 소모 하고 시스템 함 수 를 자주 호출 하지 않도록 해 야 합 니 다.컨 텍스트 전환 횟수 가 너무 많 으 면 CPU 가 컨 텍스트 전환 에 낭비 되 고 CPU 가 올 바른 일 을 하 는 시간 이 적 으 며 CPU 가 충분히 이용 되 지 않 아 바람 직 하지 않다 는 것 을 나타 낸다.
  • us 사용자 CPU 시간 에 저 는 암호 화 복호화 가 빈번 한 서버 에서 us 가 100 에 가 깝 고 r 운행 대기 열 이 80(기계 가 압력 테스트 를 하고 성능 이 좋 지 않 음)에 달 하 는 것 을 볼 수 있 습 니 다.
  • sy 시스템 CPU 시간 이 너무 높 으 면 시스템 호출 시간 이 길 고 예 를 들 어 IO 작업 이 빈번 하 다 는 것 을 나타 낸다.
  • id 남 은 CPU 시간,일반적으로 id+us+sy=100,일반적으로 id 는 남 은 CPU 사용률,us 는 사용자 CPU 사용률,sy 는 시스템 CPU 사용률 이 라 고 생각 합 니 다.
  • wt IO CPU 대기 시간.
  • 좋은 웹페이지 즐겨찾기