RHCSA 시리즈: Yum 패키지 관리, Cron으로 작업 자동화 및 시스템 로그 모니터링 – 제10부

이 기사에서는 Red Hat Enterprise Linux 7에서 패키지를 설치, 업데이트 및 제거하는 방법을 검토합니다. 또한 cron을 사용하여 작업을 자동화하는 방법을 다루고, 모든 시스템 관리자에게 필수적인 기술을 가르치기 위해 시스템 로그 파일을 찾고 해석하는 방법에 대해 설명할 것입니다.

RHCSA: Yum Package Management, Cron Job Scheduling and Log Monitoring – Part 10

Yum을 통한 패키지 관리

이미 설치되지 않은 모든 종속성을 포함하여 패키지를 설치하려면 다음을 사용합니다:

# yum -y install package_name(s)

패키지_이름(들)은 최소한 하나의 실제 패키지 이름을 나타냅니다.

예를 들어, httpdmlocate를 설치하려면 다음과 같이 입력하십시오.

# yum -y install httpd mlocate

참고: 위의 예제에서의 y는 요청한 프로그램의 실제 다운로드 및 설치를 수행하기 전에 yum이 제시하는 확인 프롬프트를 우회합니다. 원하지 않는 경우 이를 생략할 수 있습니다.

yum은 기본적으로 OS 아키텍처와 일치하는 아키텍처로 패키지를 설치합니다. 그러나 패키지 이름에 패키지 아키텍처를 추가하여 재정의할 수 있습니다.

예를 들어, 64비트 시스템에서 yum install package는 패키지의 x86_64 버전을 설치하고, 32비트 버전이 있다면 yum install package.x86을 설치합니다.

패키지를 설치하려는데 정확한 이름을 모를 때가 있습니다. 모두 검색 또는 검색 옵션을 사용하여 현재 활성화된 저장소에서 패키지 이름 또는 설명에 특정 키워드를 검색할 수 있습니다.

예를 들어,

# yum search log

는 이름과 요약에 log라는 단어가 포함된 패키지를 설치된 저장소에서 검색하고,

# yum search all log

는 패키지 설명과 url 필드에서 동일한 키워드를 찾을 것입니다.

검색 결과로 패키지 목록이 반환되면 설치하기 전에 일부 패키지에 대한 자세한 정보를 표시할 수 있습니다. 이때 info 옵션이 유용합니다.

# yum info logwatch
Search Package Information

다음 명령어를 사용하여 정기적으로 업데이트를 확인할 수 있습니다.

# yum check-update

위의 명령은 업데이트가 가능한 모든 설치된 패키지를 반환합니다. 아래 이미지에서 보여지는 예에서는 rhel-7-server-rpms만 업데이트가 가능합니다.

Check For Package Updates

그런 다음 해당 패키지만 업데이트할 수 있습니다.

# yum update rhel-7-server-rpms

여러 패키지를 업데이트할 수 있는 경우 yum update는 모두 업데이트합니다.

이제 ps2pdf와 같은 실행 파일 이름은 알지만 해당 패키지를 제공하는지 모를 때 어떻게 할까요? yum whatprovides “*/[executable]”를 사용하여 알아낼 수 있습니다.

# yum whatprovides “*/ps2pdf”
Find Package Belongs to Which Package

패키지를 제거할 때는 yum remove package를 사용할 수 있습니다. 쉽죠? 이것이 yum이 완벽하고 강력한 패키지 관리자임을 보여줍니다.

# yum remove httpd

읽기도 함께: RHEL 7 패키지 관리를 관리하기 위한 20개의 Yum 명령

좋은 올드 플레인 RPM

RPM (일명 RPM 패키지 관리자, 또는 원래 RedHat 패키지 관리자)는 독립형 .rpm 패키지 형식으로 제공될 때 패키지를 설치하거나 업데이트하는 데에도 사용할 수 있습니다.

일반적으로 -Uvh 플래그와 함께 사용되며, 이는 이미 설치되어 있지 않은 경우 패키지를 설치하거나 이미 설치된 경우 업데이트를 시도할 것을 나타내며, 작업이 수행되는 동안 자세한 출력 (-v)과 해시 마크가 있는 진행 표시줄 (-h)을 생성합니다. 예를 들어,

# rpm -Uvh package.rpm

rpm의 또 다른 전형적인 사용 방법은 현재 설치된 패키지 목록을 생성하는 것입니다. 코드>rpm -qa (모든 쿼리를 위한 짧은 형식):

# rpm -qa
Query All RPM Packages

읽기도 함께: RHEL 7에서 패키지를 설치하기 위한 20개의 RPM 명령

크론을 사용하여 작업 예약하기

리눅스 및 기타 유닉스류 운영 체제에는 주기적으로 실행되는 작업 (즉, 명령 또는 셸 스크립트)을 예약할 수 있는 도구인 cron이 포함되어 있습니다. Cron은 매 분마다 /var/spool/cron 디렉토리를 확인하여 /etc/passwd에 나열된 계정과 동일한 이름으로 지정된 파일을 찾습니다.

명령을 실행할 때 모든 출력은 크론탭의 소유자에게 이메일로 전송됩니다 (MAILTO 환경 변수에 지정된 사용자에게 전송됩니다).

크론탭 파일(이는 crontab -e 를 입력하고 Enter를 눌러 생성됩니다)은 다음과 같은 형식을 갖습니다:

Crontab Entries

따라서 우리가 매월 두 번째 날에 오전 2시 15분에 로컬 파일 데이터베이스(이는 이름 또는 패턴으로 파일을 찾기 위해 locate에서 사용됨)를 업데이트하려면 다음 크론탭 항목을 추가해야 합니다:

15 02 2 * * /bin/updatedb

위의 크론탭 항목은 “매월 두 번째 날, 매월마다, 요일에 관계없이 오전 2시 15분에 /bin/updatedb 실행”를 읽습니다. 별표 기호가 와일드카드 문자로 사용된다는 것을 이미 추측하셨을 것입니다.

크론 작업을 추가한 후에는 앞서 언급한 대로 /var/spool/cron 내에 root라는 파일이 추가된 것을 볼 수 있습니다. 이 파일은 crond 데몬이 실행해야 하는 모든 작업을 나열합니다:

# ls -l /var/spool/cron
Check All Cron Jobs

위 이미지에서 현재 사용자의 크론탭은 cat /var/spool/cron/root를 사용하여 표시할 수 있습니다. 또는,

# crontab -l

보다 세밀한 기준으로 작업을 실행해야 하는 경우(예: 하루에 두 번 또는 매월 세 번), 크론도 도움이 될 수 있습니다.

예를 들어, 매월 1일과 15일에 /my/script를 실행하고 모든 출력을 /dev/null로 보내려면 두 개의 크론탭 항목을 다음과 같이 추가할 수 있습니다:

01 00 1 * * /myscript > /dev/null 2>&1
01 00 15 * * /my/script > /dev/null 2>&1

01 00 1,15 * *  /my/script > /dev/null 2>&1

이전 예제를 따라서, 우리는 매 세 달마다 매월 첫째 날 새벽 1시 30분에 /my/other/script를 실행할 수 있습니다.1:30 am

30 01 1 1,4,7,10 * /my/other/script > /dev/null 2>&1

하지만 특정 작업을 “매 x분, 시간, 일 또는 월”마다 반복해야 할 때, 원하는 빈도로 오른쪽 위치를 나눌 수 있습니다. 다음 crontab 항목은 이전 것과 정확히 같은 의미를 가지고 있습니다.

30 01 1 */3 * /my/other/script > /dev/null 2>&1

또는 특정 작업을 고정된 빈도로 또는 시스템 부팅 후에 실행해야 할 필요가 있을 수도 있습니다. 예를 들어, 작업이 실행되길 원하는 정확한 시간을 나타내기 위해 다음 문자열 중 하나를 사용할 수 있습니다 다섯 필드 대신:

@reboot    	Run when the system boots.
@yearly    	Run once a year, same as 00 00 1 1 *.
@monthly   	Run once a month, same as 00 00 1 * *.
@weekly    	Run once a week, same as 00 00 * * 0.
@daily     	Run once a day, same as 00 00 * * *.
@hourly    	Run once an hour, same as 00 * * * *.

Read Also: RHEL 7에서 Cron 작업 예약하는 11가지 명령어

로그 찾기 및 확인

시스템 로그는 /var/log 디렉토리 내에 위치하고(회전됨) 있습니다. Linux 파일시스템 계층 표준에 따르면, 이 디렉토리에는 시스템 작동 중에 해당 데몬들에 의해 기록되는 여러 로그 파일이 포함되어 있습니다(예: 아래 이미지에서 audit, httpd, 또는 samba와 같은 적절한 하위 디렉토리).

# ls /var/log
Linux Log Files Location

다른 흥미로운 로그는 dmesg (커널 링 버퍼에서 모든 메시지를 포함), secure (사용자 인증이 필요한 연결 시도를 기록), messages (시스템 전반적인 메시지) 및 wtmp (모든 사용자 로그인 및 로그아웃 기록)입니다.

로그는 시스템에서 언제나 무슨 일이 일어나고 지난 일들을 엿볼 수 있도록 해주기 때문에 매우 중요합니다. 이들은 Linux 서버를 문제 해결하고 모니터링하는 데 귀중한 도구를 대표하며, 따라서 종종 이벤트를 실시간으로 표시하고 기록된 로그에서 발생하는 대로 보기 위해 tail -f 명령어와 함께 사용됩니다.

예를 들어, 커널 관련 이벤트를 표시하려면 다음 명령어를 입력하십시오:

# tail -f /var/log/dmesg

웹 서버에 대한 액세스를 보려면 다음 명령어를 입력하십시오:

# tail -f /var/log/httpd/access.log

요약

패키지를 효율적으로 관리하고 작업을 예약하며 시스템의 현재 및 과거 작동에 대한 정보를 어디서 찾아야 하는지 알고 있다면 놀라운 일에 자주 부딪히지 않을 것입니다. 이 기본적인 기술에 대해 배우거나 기억을 새롭게 할 수 있도록 도움이 되었기를 바랍니다.

질문이나 의견이 있으시면 아래의 연락 양식을 사용하여 언제든지 연락해 주시기 바랍니다.

Source:
https://www.tecmint.com/yum-package-management-cron-job-scheduling-monitoring-linux-logs/