리눅스 관련 팁 (계속 업데이트)

Page content

 


🏷 로그파일에서 특정문자로 카운트시키기

아파치 로그에서 바로 아이별로 카운트 시킬때 사용하는 명령어입니다.
자주는 아닌데, 갑자기 트래픽 치고 올라오면 사용합니다.
로그파일은 이와 같은 형식으로 기록된다고 할때입니다.

12.34.56.76 - - [09/Sep/2023:14:20:25 +0900] “GET /assets/images/ico_play.png HTTP/1.1” 200 3271

로그파일명은 ssl_app_access_log 이고,
grep 으로 파일 내에서 특정 패턴을 검색하고,
awk ‘{print $1}’: 필터링된 라인들에서 첫 번째 필드, 즉 IP 주소만 추출
sort -u: 추출된 IP 주소들을 중복 없이 정렬
wc -l: 정렬된 IP 주소들의 개수를 세어 출력
이렇게 카운트가 되게 됩니다.

> grep "10/Sep/2023:15" /etc/httpd/logs/ssl_app_access_log | awk '{print $1}' | sort -u | wc -l
59  
# 시간이 "10/Sep/2023:15" 인 로그중 아이피 중복제거후 아이피로만 카운트함

> grep "10/Sep/2023:13" /etc/httpd/logs/ssl_app_access_log | awk '{print $1}' | wc -l 
138548
# 시간이 "10/Sep/2023:13"인 로그중 중복제거하시 않고, 1시에 접속한 모든 아이피를 카운트함


> grep "10/Sep/2023:13:12" /etc/httpd/logs/ssl_app_access_log | awk '{print $1}' |sort -u | wc -l 
66
# 시간이 "10/Sep/2023:13:12"인 로그중 1분동안 접속 아이피(중복제거)

 


🏷 특정 단어가 포함된 파일 찾을때

> grep -r "db" /home/dev/html/
# /home/dev/html/ 디렉토리에서 db라는 단어가 포함된 파일을 찾을때..
# 디렉토리에서 사용시에는 -r 옵션을 사용해야 하위 디렉토리까지 검색이 됩니다.

> grep "db" /home/dev/html/dbconnect.js
# /home/dev/html/dbconnect.js 파일에서 db라는 단어가 포함된 라인을 찾을때..

> grep -v '^#' httpd.conf 
ServerRoot "/etc/httpd"

Listen 80

Include conf.modules.d/*.conf

User apache
Group apache
..........
# httpd.conf에서 #(주석)으로 시작하는 라인을 제외하고 출력할때..
# 중간에 #을 사용하는 것은 못 잡고, #으로 시작하는 라인은 제거하고 출력합니다.

 


MySQL 루트 패스워드를 잃어 버렸을때

> vi /etc/my.cnf
.....
[mysqld]
.....
skip-grant-tables # 추가

mysql -u root -p -S /dev/null --skip-grant-tables 이렇게 명령어 옵션으로도 가능하다가 된 글을 보았는데..
버전이 낮은 것에서만 되고, 5.7 이상부터는 안되는 것으로 알고 있습니다.

그런데, gpt는 상위 버전에서도 된다고 하니.. 더 헤깔리네요.
하지만 안되는게 맞을 겁니다.  

> systemctl restart mysqld
> mysql -u root mysql # 이처럼 패스워드 없이 접근이 가능합니다.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 187844
Server version: 5.7.24 MySQL Community Server (GPL)
.....
mysql> update user set authentication_string=PASSWORD('새로운 패스워드') where user='root';
# 또는 mysql> update user set password=PASSWORD('새로운 패스워드') where user='root';
mysql> flush privileges;

> systemctl restart mysqld