====== 리눅스에서 자주 사용하는 명령어 ======
* description :
* author : 김토피아
* email : kimmk@repia.com
* lastupdate : 2020-03-10
===== ls =====
용량이 제일 큰것부터 정렬하여 리스팅 하기
[www@www tmp]$ ls -alhS | more
> option
> a : all
> l : long format
> h : human reading (K, M, G)
> S : sort by Size, t : sort by Time
===== find =====
현재 디렉토리에 있는 '_header.txt' 파일을 하위 디렉토리마다 모두 복사하기
[www@www tmp]$ find ./ -type 'd' -ls -exec cp ./_header.txt {} \;
>
파일 사이즈가 0인 목록 가져오기
[www@www tmp]$ find ./ -type 'f' -size 0 -ls
or
[www@www tmp]$ find ./ -type 'f' -empty
파일 사이즈가 0인 파일 제거하기
[www@www tmp]$ find ./ -type f -size 0 -exec rm -f {} \;
or
[www@www tmp]$ find ./ -type f -size 0 | xargs rm -f
or
[www@www tmp]$ find ./ -type f -size 0 -delete
[[https://mycyberuniverse.com/linux/find-and-delete-the-zero-size-files-and-empty-directories.html|Find and delete the zero size files and empty directories]] \\
===== du =====
용량 높은 순서로 표시
[www@www tmp]$ du | sort -nr
===== sed =====
텍스트 파일안의 문자열를 치환하기
[www@www tmp]$ sed -i 's|/hello/|/Hello Word|g' *.conf
> /hello 는 치환대상, /Hello Word 치환 내용, *.conf 확장자가 conf 인 것의 모든 텍스트 파일 내용 치환
===== crontab =====
주기적으로 실행 파일 및 명령어 실행에 사용
[www@www tmp]$ crontab -e
#Repia_Search_RealRank
0,10,20,30,40,50 8-20 * * * /opt/search/RSA/bin/realRank.sh
0 7 * * * /opt/search/RSA/bin/acsctl.sh restart
#root에서 다른 계정으로 실행하는 경우
0,10,20,30,40,50 8-20 * * * su - search -c /opt/search/RSA/bin/realRank.sh
0 7 * * * su - search -c /opt/search/RSA/bin/acsctl.sh restart
> -e 수정, -l 등록 텝 보기
> www 계정에서 crontab -e로 등록하면 www 계정에서만 보이고 실행 됩니다.
> crontab 주기
* * * * *
분(0-59) 시간(0-23) 일(1-31) 월(1-12) 요일(0-7)
* [[https://jdm.kr/blog/2|리눅스 크론탭(Linux Crontab) 사용법]]
===== tar =====
리눅스 압축하기
[www@www tmp]$ tar fczvh search.tar.gz search
> f: 대상 tar 아카이브 지정, c: tar 아카이브 생성, z: gzip 압축 적용, v: 처리되는 View 출력, h(선택사항): 압축대상 폴더안에 심볼링크가 있으면 원본파일을 포함하여 압축
\\
압축파일에서 특정파일만 압축 풀기 \\
압축 파일의 내용 보기(경로, 이름, 용량, ...)
[www@www tmp]$ tar tvfz archive.tar.gz
> t: tar 파일의 List 출력, v: 파일들의 이름과 크기 표시, f: 강제, z: 압축을 해제하면서
\\
특정한 파일 풀기
[www@www tmp]$ tar xvfzp archive.tar.gz 디렉토리/파일명
> 디렉토리/파일명 은 정확해야 하면, 그 경로를 파악하기 위해서는 tar tvfz를 활용하면 도움이 된다.
\\
특정 내용 제외하고 압축하기
[www@www tmp]$ tar cvfz front_changwon.tar.gz front --exclude "*.mp4"
\\
===== top =====
시스템의 상태를 전반적으로 파악하는 명령어(CPU, Memory, Process)
*top 실행 전 옵션
[www@www tmp]$ top -b // 순간적인 정보 확인
[www@www tmp]$ top -n // top 실행 주기 설정(반복 횟수)
[www@www tmp]$ top -d [sec] // 설정된 초단위로 Refresh
[www@www tmp]$ top -c // command뒤에 인자값 표시
===== lsof =====
list open files의 약자로 시스템에서 열린 파일목록을 알려주고 사용하는 프로세스, 디바이스 정보, 파일의 종류등 상세한 정보를 출력한다.
$ lsof
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 253,0 4096 2 /
init 1 root rtd DIR 253,0 4096 2 /
init 1 root txt REG 253,0 150352 3932 /sbin/init
init 1 root mem REG 253,0 65928 784927 /lib64/libnss_files-2.12.so
init 1 root DEL REG 253,0 784911 /lib64/libc-2.12.so
init 1 root DEL REG 253,0 785325 /lib64/libgcc_s-4.4.7-20120601.so.1.#prelink#.YDRQV5
init 1 root DEL REG 253,0 784939 /lib64/librt-2.12.so
init 1 root DEL REG 253,0 784935 /lib64/libpthread-2.12.so.#prelink#.0jHMuJ
컬럼별 의미는 다음과 같다.
* COMMAND : 실행한 명령어
* PID : process id
* USER : 실행한 사용자
* FD: File Descriptor, 파일의 종류
* TYPE : 파일 종류
* DEVICE : 장치번호
* SIZE/OFF : 파일의 크기나 오프셋
* NODE : 노드번호
* NAME : 파일명
-i 옵션을 사용하여 IPv4 또는 IPv6 포트만 표시할수 있다.
$ lsof -i 4
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1068 rpc 6u IPv4 11858 0t0 UDP *:sunrpc
rpcbind 1068 rpc 7u IPv4 11860 0t0 UDP *:819
rpcbind 1068 rpc 8u IPv4 11861 0t0 TCP *:sunrpc (LISTEN)
rpc.statd 1086 rpcuser 5r IPv4 11949 0t0 UDP *:838
rpc.statd 1086 rpcuser 8u IPv4 11955 0t0 UDP *:47492
rpc.statd 1086 rpcuser 9u IPv4 11959 0t0 TCP *:38374 (LISTEN)
cupsd 1159 root 7u IPv4 12195 0t0 TCP localhost:ipp (LISTEN)
===== Ref =====
* [[https://serverfault.com/questions/62411/how-can-i-sort-du-h-output-by-size|How can I sort du -h output by size]]
* [[https://dora-guide.com/linux-commands/|리눅스 명령어 모음 50가지]]
{{tag>김토피아 도봉산핵주먹 천호동밤안개 주레피 slaptear 리눅스 ls find seq crontab tar}}