Logrotate 란?

 

리눅스내에서 시스템에 있는 모든 로그파일들을 관리할 수 있으며, 이들 로그파일들을 날짜를 지정하여 주기적으로 압축, 백업, 삭제, 메일로 보내는 등의 작업을 할 수 있도록 하여주는 기능

==============================================================

Logrotate가 필요한 이유

 

리눅스를 서버로 돌리면 하루에도 많은 로그 파일들이 생성된다. 서버 용량은 한정되어 있고 이와 같은 로그들이 차곡차곡 쌓이다보면 로그로 인해 하드 용량이 부족한 경우가 생겨 성능이 떨어질 수 있는데 매번 수동으로 로그파일이 저장되는 곳으로 이동하여 하나하나 삭제하는 일은 번거로운 일이 아닐수 없습니다. 이와 같이 로그파일를 수동으로 관리하지 않고 logrotate기능을 사용한다면 보다 효과적으로 관리할 수 있을것입니다.

 

rqm -qa | grep logrotate

 

yum -y install logrotate

==============================================================

기본적인 옵션 정보

 

daily : 매일 로테이트 진행

weekly : 매주 로테이트 진행
monthly : 매달 로테이트 진행
yearly : 매년 로테이트 진행
rotate [파일갯수] : 로테이트 진행될 파일갯수 ex) rotate 5
compress : 로테이트 진행된 로그파일 압축(gzip)

create [권한] [유저] [그룹] : 로테이트 되는 로그파일 권한 지정 ex) create 644 root root

nocompress : 로테이트 진행된 로그파일을 압축하지 않는다(기본값) 

compresscmd [압축명] : gzip 이외의 압축프로그램 지정 

uncompresscmd : 압축해제 명령 지정(기본값 : gunzip)
compressext [확장자명] : 압축된 백업 로그파일에 지정할 확장자 설정 
compressoptions [옵션] : 압축 프로그램에 대한 옵션 설정(-9 : 압축률 최대) 
dateext : 로그파일에 YYYYMMDD형식의 확장자 추가  백업 파일의 이름에 날짜가 들어가도록 함  
errors [메일주소] : 에러 발생시 지정된 메일주소로 메일발송
extention 확장자명 : 로테이트 진행된 로그파일의 확장자 지정 
ifempty : 로그파일이 비어있는 경우 로테이트 진행 (기본값)

noifempty : 로그파일이 비어있는 경우 순환하지 않는다 

mail [메일주소] : 순환후 이전 로그파일을 지정된 메일주소로 발송 
maxage : count로 지정된 날수가 지난 백업 파일 삭제 ex) maxage 30 30dl
missingok : 로그파일이 없을 경우에도 에러 처리하지 않는다
prerotate / endscript : 로테이트 진행작업 전에 실행할 작업 설정
postrotate / endscript : 로테이트 진행작업 후에 실행할 작업 설정
sharedscripts : prerotate, postrotate 스크립트를 한번만 실행 
size [사이즈] :  로테이트 진행 결과 파일사이즈가 지정한 크기를 넘지않도록 설정 
                            지정된 용량보다 클 경우 로테이트 실행 ex) size +100k
copytruncate : 현재 로그파일의 내용을 복사하여 원본 로그파일의 크기를 0으로 생성

==============================================================

logrotate 구동순서

 

 

 

cron(주기적으로 반복되는 일을 자동적으로 실행될수 있도록 설정해놓는 것, 데몬)을 이용해 logrotate 실행

 

crontab > cron.daily > logrotate > logrotate.conf > logrotate.d

 

vi  /etc/logrotate.conf

 

# see "man logrotate" for details

# rotate log files weekly   

#로그파일을 순환할 기간을 설정합니다 (yearly:매년, monthly:매달, weekly:매주, daily:매일)

 

weekly

 

# keep 4 weeks worth of backlogs  

#순환될 파일의 개수를 설정합니다. 최소값은 0입니다.

#예를들어 위에서 weekly로 설정하고 rotate 4를 주게되면 4주간 보관한뒤 순환하게 되며,

#위에서 daily로 설정하고 rotate 15를 주게되면 15일간 보관한뒤 순환하게 된다는 의미입니다.

 

rotate 4

 

# create new (empty) log files after rotating old ones 

#로그파일을 백업하고 새로운 파일을 생성할 것인지를 설정합니다.

create

 

#uncomment this if you want your log files compressed

#순환된 로그파일을 압축할것인지를 설정합니다.(압축방식 : gzip)

 

#compress

 

# RPM packages drop log rotation information into this directory

#로그 순환정보를 가진 디렉토리를 불러옵니다.

include /etc/logrotate.d

 

# no packages own wtmp -- we'll rotate them here

#/var/log/wtmp의 로그설정을 합니다.

#monthly, rotate 1, minsize 1M이므로 한달에 한번 로그파일용량이 1M가 되면 순환하게 되며

#백업파일은 root사용자의 utmp그룹의 소유로 퍼미션 644를 부여합니다.

 

/var/log/wtmp {

    monthly

    minsize 1M

    create 0664 root utmp

    rotate 1

}

==============================================================

vi /etc/logrotate.d/apache

==============================================================

/usr/local/apache/logs/*log{

weekly

rotate 5

compress

missingok

create 644 root root

dateext

}

==============================================================

정상적으로 동작하기 위해서 강제로 logrotate를 실행해보자.

강제로 실행하기 위해서는 다음과 같이 명령어를 입력하면 된다.
/usr/sbin/logrotate -f /etc/logrotate.conf

 

출처 : https://93it-security-service.tistory.com/123

RockyLinux 8.x 에는 openssl 1.1.1 버전이 설치되어 있으므로 기존 openssl 라이브러리인 libcrypto.so.10, libssl.so.10 파일이 존재하지 않는 것 같습니다.

​RockyLinux 8.x 에 libcrypto.so.10, libssl.so.10 파일을 설치하는 방법은 다음과 같은 것 같습니다.

# yum install compat-openssl10
compat-openssl10 패키지에 포함된 파일 리스트는 다음과 같습니다.

# repoquery -l compat-openssl10
/etc/pki
/etc/pki/openssl10.cnf
/usr/lib/.build-id
/usr/lib/.build-id/7b
/usr/lib/.build-id/7b/b58c473d7139e785790ba04ff391537f6dd1f9
/usr/lib/.build-id/97
/usr/lib/.build-id/97/f01bd6cb968372c03fea6fc7c0806adbf40ba0
/usr/lib64/.libcrypto.so.1.0.2o.hmac
/usr/lib64/.libcrypto.so.10.hmac
/usr/lib64/.libssl.so.1.0.2o.hmac
/usr/lib64/.libssl.so.10.hmac
/usr/lib64/libcrypto.so.1.0.2o
/usr/lib64/libcrypto.so.10
/usr/lib64/libssl.so.1.0.2o
/usr/lib64/libssl.so.10
/usr/share/doc/compat-openssl10
/usr/share/doc/compat-openssl10/FAQ
/usr/share/doc/compat-openssl10/NEWS
/usr/share/doc/compat-openssl10/README
/usr/share/doc/compat-openssl10/README.FIPS
/usr/share/doc/compat-openssl10/README.legacy-settings
/usr/share/licenses/compat-openssl10
/usr/share/licenses/compat-openssl10/LICENSE
/etc/pki
/etc/pki/openssl10.cnf
/usr/lib/.build-id
/usr/lib/.build-id/e5
/usr/lib/.build-id/e5/0572ab24f698a413b17a4bc6639ee04141e074
/usr/lib/.build-id/fd
/usr/lib/.build-id/fd/db58815e208df6a4da932ace9b21df133a9265
/usr/lib/.libcrypto.so.1.0.2o.hmac
/usr/lib/.libcrypto.so.10.hmac
/usr/lib/.libssl.so.1.0.2o.hmac
/usr/lib/.libssl.so.10.hmac
/usr/lib/libcrypto.so.1.0.2o
/usr/lib/libcrypto.so.10
/usr/lib/libssl.so.1.0.2o
/usr/lib/libssl.so.10
/usr/share/doc/compat-openssl10
/usr/share/doc/compat-openssl10/FAQ
/usr/share/doc/compat-openssl10/NEWS
/usr/share/doc/compat-openssl10/README
/usr/share/doc/compat-openssl10/README.FIPS
/usr/share/doc/compat-openssl10/README.legacy-settings
/usr/share/licenses/compat-openssl10
/usr/share/licenses/compat-openssl10/LICENSE


출처 :https://blog.naver.com/websearch/223125226220

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent

User-Agent: <product>/<product-version> (platform; os version; ) Browser version ; <comment>

 

* 소문자로 치환된 값

- macbook, chrome

mozilla/5.0 (macintosh; intel mac os x 10_15_7) applewebkit/537.36 (khtml, like gecko) chrome/94.0.4606.61 safari/537.36

- macbook, safari

mozilla/5.0 (macintosh; intel mac os x 10_15_7) applewebkit/605.1.15 (khtml, like gecko) version/15.0 safari/605.1.15

- iphone, kakaotalk webview

mozilla/5.0 (iphone; cpu iphone os 15_0_1 like mac os x) applewebkit/605.1.15 (khtml, like gecko) mobile/15e148 kakaotalk 9.5.1

- iphone, safari

mozilla/5.0 (iphone; cpu iphone os 15_0_1 like mac os x) applewebkit/605.1.15 (khtml, like gecko) version/15.0 mobile/15e148 safari/604.1

- iphone, chrome

mozilla/5.0 (iphone; cpu iphone os 15_0 like mac os x) applewebkit/605.1.15 (khtml, like gecko) crios/94.0.4606.52 mobile/15e148 safari/604.1

- android, kakaotalk webview

Mozilla/5.0 (Linux; Android 15; SM-S908N Build/AP3A.240905.015.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.63 Mobile Safari/537.36 KAKAOTALK/25.6.0 (INAPP) 

- android, chrome

Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Mobile Safari/537.36

- android, naver webview

mozilla/5.0 (linux; android 11; sm-a908n build/rp1a.200720.012; wv) applewebkit/537.36 (khtml, like gecko) version/4.0 chrome/80.0.3987.163 whale/1.0.0.0 crosswalk/25.80.14.29 mobile safari/537.36 naver(inapp; search; 1000; 11.6.7)

- windows, chrome

mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/94.0.4606.61 safari/537.36

- windows, edge

mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/94.0.4606.71 safari/537.36 edg/94.0.992.38

- windows, ie

mozilla/5.0 (windows nt 10.0; wow64; trident/7.0; .net4.0c; .net4.0e; .net clr 2.0.50727; .net clr 3.0.30729; .net clr 3.5.30729; zoom 3.6.0; rv:11.0) like gecko

* 추가 

- android, instagram webview

Mozilla/5.0 (Linux; Android 13; SM-S908N Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/120.0.6099.43 Mobile Safari/537.36 Instagram 311.0.0.32.118 Android (33/13; 420dpi; 1080x2115; samsung; SM-S908N; b0q; qcom; ko_KR; 545986896)

- android, naver webview

Mozilla/5.0 (Linux; Android 14; SM-S908N Build/UP1A.231005.007; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/114.0.0.0 Whale/1.0.0.0 Crosswalk/28.114.0.25 Mobile Safari/537.36 NAVER(inapp; search; 2000; 12.9.2)

- android, line webview

Mozilla/5.0 (Linux; Android 15; SM-S908N Build/AP3A.240905.015.A2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/138.0.7204.63 Mobile Safari/537.36 Line/15.10.2/IAB

 

- iphone, naver webview

Mozilla/5.0 (iPhone; CPU iPhone OS 18_1_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.1 Mobile/15E148 Safari/605.1 NAVER(inapp; search; 2000; 12.9.3; 12)

 

출처 : https://kakao-tam.tistory.com/110

 

리눅스 rpm 패키지는 의존적이다. 특정 패키지를 설치하기 위해서는 의존하고 있는 다른 패키지가 설치되어 있어야 한다.

패키지 의존성을 확인하려면 rpm 명령어에 -qpR 옵션을 사용하면 된다.

rpm -qpR [패키지명]

예를 들어 리눅스에 있는 openssl-1.0.2k-19.el7.x86_64.rpm 설치 시 필요한 의존성 확인을 위해서는

[root@newhost rpm]# rpm -qpR openssl-1.0.2k-19.el7.x86_64.rpm
/bin/bash
/bin/sh
coreutils
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.15)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libc.so.6(GLIBC_2.7)(64bit)
libcom_err.so.2()(64bit)
libcrypto.so.10()(64bit)
libcrypto.so.10(OPENSSL_1.0.1_EC)(64bit)
libcrypto.so.10(OPENSSL_1.0.2)(64bit)
libcrypto.so.10(libcrypto.so.10)(64bit)
libdl.so.2()(64bit)
libgssapi_krb5.so.2()(64bit)
libk5crypto.so.3()(64bit)
libkrb5.so.3()(64bit)
libssl.so.10()(64bit)
libssl.so.10(libssl.so.10)(64bit)
libz.so.1()(64bit)
make
openssl-libs(x86-64) = 1:1.0.2k-19.el7
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
rpmlib(PayloadIsXz) <= 5.2-1

이런 식으로 확인할 수 있다.


다만 여기 출력된 건 말그대로 필요한 패키지 목록일뿐 이 리눅스에 해당 패키지들이 설치가 되어 있는지를 알려주지는 않는다. 
그래서 이거 확인하는 게 큰 의미가 있나… 싶은 생각도 들긴 한다.

하지만 필요한 glibc 버전을 알 수 있다는 점에서 어느 정도 도움은 되지 않나 싶다.

libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.15)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libc.so.6(GLIBC_2.7)(64bit)

이런 식으로 같은 so 라이브러리에 대해 여러 개의 GLIBC 버전이 보이기도 하는데 이중 가장 높은 버전의 GLIBC 버전이 설치되어 있어야 한다고 생각하면 된다.
이 경우엔 GLIBC_2.15이 설치되어 있어야 된다.

ldd 버전을 확인하면 현재 리눅스에 설치된 glibc 버전을 볼 수 있다.

[root@newhost rpm]# ldd --version
ldd (GNU libc) 2.17

출처 : https://binwrite.com/linux-rpm-dependencies/

'All about car' 카테고리의 다른 글

엔진에 좋다는 연료첨가제의 진실은?  (0) 2015.10.28