====== 리눅스에서 자주 사용하는 명령어 ====== * 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}}