운영 명령

7637 단어
  • 루트부터 모든 확장자를 찾습니다.log의 텍스트 파일을 찾아서 "ERROR"을 포함하는 줄을 찾아서 어떤 파일을 찾지 않습니다! -name
  • find / -type f -name "*.log" | xargs grep "ERROR"
    find ./ -type f ! -name "*.log"|xargs grep "a"  
    
  • 포트 정보
  • ps -ef |grep nginx  #  nginxp pid
    netstat -apn|grep ${pid} #  pid 
    
  • 디렉터리 파일을 복사하는 데 기본 권한, 시간, 그리고 -p 파라미터를 사용하면 많은 시간을 절약할 수 있습니다. sudo를 사용하지 않고 소유자sudo cp -p -r /var/lib/mysql /var/lib/mysql_3302를 수정해야 합니다
  • 원격 복제 폴더scp -r -P10087 [email protected]:/tmp/folder/ /tmp/
  • 프로필 주석 행 필터링grep "^[^#;\t].*$" /etc/supervisord.conf
  • redis 모호 일치 대량 삭제 키 값redis-cli KEYS "pattern" | xargs redis-cli DEL
  • redis 대량 추가 집합redis-cli -n 2 sadd uu_os_pkgs `cat ~/tmp/uu_pkgs.txt`
  • 조회 로그 접근 횟수 순위tail access.log -n 20000|awk '{print $7}'|sort|uniq -dc|sort -n
  • 파일 확장자별grep 문자열grep -r --include=\*.py User
  • LOG 로그 게임 패키지 다운로드 횟수 분석cat chn_app_rec.log|awk '{if ($1=="2017-02-12" && $5==2000973 && $8==2110000) print $0}'|wc -l
  • log 로그의 특정한 URL 지정 날짜 접근 횟수 분석cat access.log |awk '{if ($7 ~ /rec\/app\/detail\/xmqy2110000.html/ && $4 ~ /12\/Feb/) print $0}' > /tmp/2-12-rec.log
  • 초당 요청 수를 통계하고 top100의 시간점(정확히 초까지)awk '{print $4}' access.log |cut -c 14-21|sort|uniq -c|sort -nr|head -n 100은 약간의 전환 방법(awk의 수조로 누적):
  • cat   xx.log| awk '/14\/Mar\/2018:(19)/{ print $4"###"$7}'|awk -F "###" '{s[$1]++} END {for (k in s) print k, s[k]}'|sort -n -k 1
    
  • 100회 이상 방문한 페이지 보기
  • cat /data/log/nginx/tg.ouwan.com.access.log|awk '{print $7}'|sort|uniq -c |sort -n |tail
    cat /data/log/nginx/tg.ouwan.com.access.log|cut -d " " -f 7 |sort|uniq -c |sort -n |tail
    #  awk print $7 url
    #  cut  -d  , -f  , awk 
    
  • 분당 요청 수를 통계하고 top100의 시간점(정확히 분)awk '{print $4}' access.log |cut -c 14-18|sort|uniq -c|sort -nr|head -n 100
  • IP 액세스를 집계하고 500회 이상 액세스한 IP 보기cat xx.log|awk '{print $1}'|sort|uniq -c |sort -n -k 1|awk '{if($1 > 500) print $0}'
  • 표시
  • 로그의 어떤 URL을 분석하고 코드가 500인 통계cat access.log |awk '{if ($7 ~ /api\/wechat/ && $9 != "200") print $1}'|sort|uniq -c|sort -nr -k 1
  • nginxaccesslog의 URL 요청 총수, 요청 총 시간, 요청 평균 시간
  • 분석
    tail /data/log/nginx/api.mobi.ouwan.com.access.log -n 5000 | awk '/[0-9]\.[0-9]{3}$/{print  $NF, $7}'|cut -d "?" -f 1|awk '{url[$2]+=$1;url_count[$2]++}; END {for (k in url) print "url: " k, "time_consume: "url[k], "request_count: " url_count[k], "avg_time_consume: " url[k]/url_count[k]}'
    

    컨텐트 내보내기
    url: /essay/nativeEssayByHostId/ time_consume: 0.257 request_count: 3 avg_time_consume: 0.0856667
    url: /test/user/nativeFollowCommunityList/ time_consume: 1.361 request_count: 15 avg_time_consume: 0.0907333
    url: /mission/nativeGetCouponReward/ time_consume: 0.208 request_count: 4 avg_time_consume: 0.052
    url: /mission/nativeMissionSignin/ time_consume: 7.021 request_count: 43 avg_time_consume: 0.163279
    url: /user/nativeMyInfo/ time_consume: 89.307 request_count: 1127 avg_time_consume: 0.0792431
    url: /test/user/nativeMyInfo/ time_consume: 28.502 request_count: 15 avg_time_consume: 1.90013
    
  • socket 링크 상태 통계 얻기ss -ant|awk '{s[$1]++} END {for (k in s) print k, s[k] }'
  • netstat -n | awk '/^tcp/ {++S[$NF]} END {for (a in S) print a, S[a]}' # $NF ;NF netstat -an | awk '{print $6}' | sort | uniq -c | sort -rn
    CLOSE-WAIT 4
    ESTAB 130
    TIME-WAIT 64
    LISTEN 64
    SYN-SENT 3
    State 1
    
  • awk 표시 줄 수awk '{print NR " == " $0}' /etc/passwd
  • uniq는 인접 중복을 제거하는 두 줄입니다. 따라서 uniq를 사용하기 전에sort를 사용해서 중복된 것을 인접 위치에 놓습니다. uniq-c 또는--count: 각 열 옆에 이 줄이 중복된 횟수를 표시합니다. -d 또는 --repeated: 반복되는 행렬만 표시합니다.sort-n 숫자 크기에 따라 정렬 - r 역순으로 정렬 - k 몇 열로 정렬
    통계적 IP:
               IP
         81 101.226.62.17
         51 101.226.233.156
          .....
    
  • 100M의 파일을 신속하게 생성하여 10MB의 무작위 비트 흐름 데이터 입력head -c 10M < /dev/urandom > /var/log/log-file
  • grep의 and와 or
  • #  
    grep -E 'pattern1.*pattern2' filename
    cat chn_app_rec.log|grep -E '2017-02-13.*2000973.*2104006'
    
    #  p1&&p2 || p1&&p3
    grep -E 'pattern1.*pattern2|pattern1.*pattern3' filename
    cat chn_app_rec.log|grep -E '2017-02-13.*2000973.*2098000|2017-02-15.*2000973.*2098000'
    
    
    # or  1
    grep 'pattern1\|pattern2' filename
    # or  2
    grep -E 'pattern1|pattern2' filename
    # or  3
    grep -e pattern1 -e pattern2 filename
    
    # and  
    grep -E 'pattern1.*pattern2' filename
    grep -E 'pattern1.*pattern2|pattern2.*pattern1' filename
    

    grep 링크http://www.thegeekstuff.com/2011/10/grep-or-and-not-operators/
  • grep로 파일 이름 찾기
  • find ./ |xargs grep keyword
    #  
    #  :
    find /( ) -name ' ' -type d
    #  :
    find /( ) -name   -print
    
  • 프로세스gid(ps 내용을 형식으로 출력)ps ax o user,pid,%cpu,%mem,vsz,rss,tty,stat,start,time,comm,group,gidps ax o user,gid,pgid,pid,ppid,group,start,time,command|grep owan_webps o 형식 상세 보기:http://blog.csdn.net/shuanghujushi/article/details/51814447프로세스 사용자, 그룹, 명령 보기: ps -eo "%U %G %a" | grep nginx
  • 파일을 삭제할 때 특정 파일을 제외하고 현재 디렉터리에 있는 모든 파일을 삭제합니다*.txt 파일,test 제외.txtrm `ls *.txt|egrep -v test.txt` 또는 rm `ls *.txt|awk '{if($0 != "test.txt") print $0}'` 여러 파일 제외rm `ls *.txt|egrep -v '(test.txt|fff.txt|ppp.txt)'`rm -f `ls *.log.1|egrep -v '(access-2010-09-06.log|error-2010-09-06.log)'`rm -f `ls *.log|egrep -v '(access-2010-09-06.log|error-2010-09-06.log)'`
  • sed 명령으로 여러 파일의 문자열을 대량으로 대체할 수 있습니다.sed-i's/원 문자열/새로운 문자열/g'grep -rl : 예를 들어 저는 마후린을 마후린마로 바꾸고 명령을 실행합니다. sed-i's/마후린/마후린마/g''grep 마후린-rl/www'일정 개발 과정에서 어떤 변수 이름을 다른 변수 이름으로 수정하는 상황을 겪을 수 있습니다. 만약에 이 변수가 국부 변수라면vi는 충분히 감당할 수 있지만 만약에 어떤 전역 변수라면그리고 많은 파일에서 사용되었는데, 이때vi를 사용하는 것은 현명하지 못한 선택이다.모든 파일에 지정된 문자열을 한 번에 수정할 수 있는 간단한 셸 명령을 제공합니다. grep "abc"* - R | awk - F:'{print $1}'| sort | uniq | xargs sed - i's/abc/abcde/g'
  • N에서 M행 데이터로 파일 보기 awk'NR>= 57890000 & NR <= 57890010'/path/to/filehttps://unix.stackexchange.com/questions/47407/cat-line-x-to-line-y-on-a-huge-file그리고 sed 방법, sed,awk 변형이 심해서 미끄럼을 타면 많은 임무를 완성할 수 있다
  • scp 복제 폴더,rsync는 증량 복제
  • # -a  , ; -e  ,  ssh  ,  ,ssh  user@  
    rsync -avP -e "ssh   -p 10087"  /data/bak/2017-08-29_17-32-35  10.13.114.111:/data/ 
    #  
    rsync -vzrtopg --progress -e "ssh -p 10087" /tmp/ssl.tar [email protected]:/home/ymserver/
    rsync -vzrtopg --progress -e ssh --delete [email protected]:/www/* /databack/experiment/rsync
    

    출처:http://man.linuxde.net/rsync
  • 두 명령에 대한 출력 구차 집합
  • comm 

    참조 입력 리디렉션

    sed


    sed 기본적으로 파일 읽기 sed 's/^[^#]/#/g' 문제:grep나sed로 문자열이 포함되지 않은 줄을 찾아서 바꾸면?

    좋은 웹페이지 즐겨찾기