목적 :
linux에서 사용하면 편리한 명령어들을 정리해보려 합니다.
지속적으로 추가, 수정 진행 중입니다.
- 파일검색 후 삭제
예를들어 특정 디렉토리의 압축된 (gz)파일이 1일 이후 수정된 파일을 보고싶을때
find /검색디렉토리 -name “*.gz” -mtime +1 -exec ls -l {} \;
만약 그 해당 파일을 삭제하고자 하면 ls-l 대신 rm 사용
find /검색디렉토리 -name “*.gz” -mtime +1 -exec rm {} \;
mtime : 수정된 시간 즉 파일의 마지막 변경시각
ctime : inode가 변경되는 행위 발생시 기록 (권한 변경이나, 소유자 변경등)
atime : 파일의 마지막 접근시각 (cat으로 파일 읽어도 atime이 변경됩니다..)
- 파일내용 찾기
find . -type f | xargs grep "찾을 내용"
→ 해당 내용의 파일명과 내용이 같이 출력됨
find . -type f | xargs grep -l "찾을 내용"
→ 해당 내용이 있는 리스트만 출력
파일내용 일괄 변경
find . -type f -exec perl -pi -e 's/찾을 문자열/변경할 문자열/g' {}\;
- 파일내용으로 찾기 (grep)
보통 grep을 파이프라인으로 묶어서 잘 사용을 하는데, 단독으로도 사용을 잘 하는 명령어 입니다.
위의 find랑 섞어서 사용할 수 있지만, 단독으로 사용하는 부분이 더 간단하기도 합니다.
grep -rin "찾고자 하는 텍스트"
옵션 명령어의 뜻은 아래와 같습니다.
-r : 명령어 실행한 곳의 하위 디렉토리까지 찾기
-i : 대소문자 상관없이 검색
-n : 해당 텍스트가 파일의 몇 번째 줄에 있는지 줄번호 출력
- 파일내용 일괄 변경 (grep)
grep -rl "찾을 문자열" | xargs sed -i 's/찾을 문자열/변경할 문자열/g'
위의 검색 옵션 명령어가 다른데요.
위 명령어가 동작하는 순서는 grep 으로 문자열을 찾고, 그것을 xargs로 넘겨서 변경처리 하는 부분입니다.
옵션명령어로 -rin을 사용하면, 파일명, 줄넘버등이 나와서 문자열이 복잡해지기 때문입니다. -l 옵션은 리스트화만 해서 보여 줍니다.
- OPENSSL로 인증서 확인
openssl x509 -noout -text -dates -in 인증서파일명.pem
- 반복 작업으로 찾기
for문도 사용할 수 있겠지만, 저는 보통 아래의 방법으로 사용합니다.
디스크 현황, 리스닝된 포트 찾기 등 여러가지를 활용할 수 있습니다.
while true
do
sleep 10 <- 반복 문을 실행할 초 (10으로 해두면, 10초마다 아래 명령어가 계속 실행됩니다.)
사용하고자 하는 명령어
ex. netstat -ltup
ex. df -hP
done
- 현재 있는 디렉토리에서 기존 디렉토리로 바로 이동하기
디렉토리 이동시 보통 “cd /절대경로/” or “cd 상대경로” 로 이동하게 됩니다.
디렉토리 이동을 자주하다보면, 절대경로가 길어져서 이동이 ..조금 귀찮을 수 있는데
아래와 같이 “cd -” 을 입력하면 바로 이전의 디렉토리로 이동합니다.
- 예시
ubuntu@ubuntu:~/snap$ cd -
/home/ubuntu
ubuntu@ubuntu:~$ cd -
/home/ubuntu/snap
- 디렉토리별 디스크 사용량 확인
du명령어를 통해 각 디렉토리, 파일의 사용량을 체크할 수 있습니다.
기본적으로 최하위 디렉토리부터 사용량을 보여 줍니다.
유의사항으로는 du 실행시 결과가 운영체제별 (aix, linux)로 다르게 나올 수 있으며, man du, du -help등을 통해 운영하는 운영체제의 du가 어떤 옵션명령어를 지원하는지 확인하는 것이 좋습니다.
- 기본 사용방법
경로를 지정하지 않으면 현재 위치를 기준으로 동작됩니다.
du명령어만 사용하면, 기본 단위인 KB로 되어서 보기가 불편합니다.
그래서 -h 옵션 (human-readable format)을 주어 사람이 보기 쉬운형태로 봅니다.
-s는 summarize로 해당디렉토리의 총 사용량만 보여줍니다.
- 예시
du -sh ”용량 체크할 디렉토리”
- 출력결과
ubuntu@ubuntu:~$ du -hs /home
134M /home
응용 - 현재 디렉토리에서 하위모든 디렉토리와 파일의 사용량 보기
* 를 사용하여, 하위 전체의 파일과 디렉토리 사용량 보기
- 예시
du -sh *
- 출력결과
ubuntu@ubuntu:~$ du -sh *
4.0K Check.yaml
24K add-google-cloud-ops-agent-repo.sh
4.0K cert_new.sh
4.0K close_wait.sh
4.0K firewall.sh
4.0K firewall_test.sh
- 응용 : 하위디렉토리를 제한하여 크기 계산
기본으로 du를 사용하게 되면, 하위 디렉터리를 모두 계산하게 됩니다.
depth를 주어 하위디렉토리 깊이를 제한할 수 있습니다.
- 예시
du -h /디렉토리 --max-depth="깊이"
- 출력결과
ubuntu@ubuntu:/$ du -h /home --max-depth=2
12K /home/ubuntu/.ansible
32K /home/ubuntu/pki
28K /home/ubuntu/work
4.0K /home/ubuntu/sync
16K /home/ubuntu/.config
122M /home/ubuntu/.cache
20K /home/ubuntu/snap
16K /home/ubuntu/.ssh
1.9M /home/ubuntu/projects
9.8M /home/ubuntu/.local
134M /home/ubuntu
134M /home
- 응용 : 현재 디렉토리에서 용량이 큰 순서대로 10개만 보기
-h 옵션을 사용하면 문자열도 같이 정렬이 되기 때문에 용량순으로 정리가 안됩니다.
하여 좀 불편하지만 -m, -k 옵션과 같이 용량단위를 지정하는 옵션을 사용해야됩니다.
그리고 정렬(sort)과 head를 같이 사용하여 봅니다.
sort의 n은 오름차순, r은 내림차순 옵션입니다.
- 예시
du -m * | sort -n | head -10
- 출력결과
ubuntu@ubuntu:~$ du -m * | sort -n | head -10
1 Check.yaml
1 add-google-cloud-ops-agent-repo.sh
1 cert_new.sh
1 close_wait.sh
1 firewall.sh
1 firewall_test.sh
1 get-docker.sh
1 info.sh
1 mysql-2.sql
1 mysql.sql
그 외 총용량을 보는 -c 옵션, -x, -t등 여러 사용옵션이 있으니 du --help, man du등을 이용해 필요할때 조합해서 사용하면 디스크 사용량 운영에 많은 도움을 받을 수 있습니다.
소수점 잘라내기
스크립트를 작성하다보면, 결과 값에서 소수점을 잘라내어 사용할 경우가 있습니다.
- 예시
- 명령어
df -hP
ubuntu@ubuntu:~$ df -hP
Filesystem Size Used Avail Use% Mounted on
tmpfs 91M 3.1M 88M 4% /run
/dev/mmcblk0p2 117G 18G 96G 16% /
tmpfs 453M 0 453M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/mmcblk0p1 253M 126M 127M 50% /boot/firmware
-> 여기서 /run 디렉토리의 3.1M를 소수점을 제거하고 받아보겠습니다.
ubuntu@ubuntu:~$ df -hP | grep /run | grep -v /user/1000 | grep -v /run/lock
tmpfs 91M 3.1M 88M 4% /run
-> grep -v를 통해 /run만 출력되도록 하였습니다.
이제 소수점을 제거하여 원하는 값만 출력하도록 하겠습니다.
- 출력결과
ubuntu@ubuntu:~$ df -hP | grep /run | grep -v /user/1000 | grep -v /run/lock | awk '{printf "%.0f",$3}'
3
3.1에서 3으로 출력이 완료되었습니다.
awk 의 print기능 중 특정 필드만 출력되는 기능을 결합하여, 진행했습니다.
%f는 실수를 출력할 때 사용되는 서식 문자열이고, 0f는 출력 되길 원하는 값의 자릿 수 입니다.
1f입력시에는 소수점 첫째자리, 2f입력시에는 소수점 둘째자리까지 출력됩니다.
- CPU 사용률
linux에서 시스템 성능을 체크하는 도구들은 무척 많습니다.
간략하게 CPU사용률을 보는 방법입니다.
- 명령어
mpstat | tail -1 | awk '{print 100-$NF}'
- 출력결과
ubuntu@ubuntu:~$ mpstat | tail -1 | awk '{print 100-$NF}'
0.86
현재 CPU 사용률은 0.86%입니다.
mpstat는 CPU성능지표를 출력해 주는 도구이며 그냥 실행시에는 아래와 같이 출력됩니다.
ubuntu@ubuntu:~$ mpstat
Linux 5.15.0-1035-raspi (ubuntu) 09/08/23 _aarch64_ (4 CPU)
17:30:27 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
17:30:27 all 0.20 0.02 0.57 0.06 0.00 0.00 0.00 0.00 0.00 99.14
$NF는 마지막 컬럼을 의미하며, mpstat의 마지막 컬럼은 idle입니다.
그래서 100-idle값을 계산하여 CPU사용률을 구하는 것입니다.
mpstat외에 top, sar 으로도 사용률을 구할 수 있습니다.
'시스템 > Linux' 카테고리의 다른 글
[OS] scp를 사용하여 서버간 파일 전송 (0) | 2024.12.04 |
---|---|
load average 관련 (0) | 2024.10.02 |
로그 압축 및 로그 삭제 쉘스크립트 (0) | 2024.05.31 |
CPU 부하 줄때 간단히 사용할만한 방법 (0) | 2023.08.01 |
[OS] linux에서 사용하면 편리한 명령어 정리 (0) | 2023.05.02 |
Linux File system 증설 (0) | 2021.07.12 |
/sys/kernel/security/ima 파일 (0) | 2021.07.09 |