웹사이트 검색

RHCSA 시리즈: Yum 패키지 관리, Cron을 사용한 작업 자동화 및 시스템 로그 모니터링 - 10부


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

Yum을 통해 패키지 관리

아직 설치되지 않은 모든 종속성과 함께 패키지를 설치하려면 다음을 사용합니다.


yum -y install package_name(s)

여기서 package_name(s)은 하나 이상의 실제 패키지 이름을 나타냅니다.

예를 들어 httpdmlocate(순서대로)를 설치하려면 다음을 입력합니다.


yum -y install httpd mlocate

참고: 위 예에서 문자 y는 요청된 프로그램의 실제 다운로드 및 설치를 수행하기 전에 yum이 표시하는 확인 메시지를 우회합니다. 원하시면 생략하셔도 됩니다.

기본적으로 yum은 패키지 아키텍처를 이름에 추가하여 재정의하지 않는 한 OS 아키텍처와 일치하는 아키텍처로 패키지를 설치합니다.

예를 들어, 64비트 시스템에서 yum install packagex86_64 버전의 패키지를 설치하는 반면, yum install package.x86 (사용 가능한 경우) 32비트 버전을 설치합니다.

패키지를 설치하고 싶지만 정확한 이름을 모르는 경우가 있습니다. 모두 검색 또는 검색 옵션은 각각 패키지 이름 및/또는 설명에서 특정 키워드에 대해 현재 활성화된 저장소를 검색할 수 있습니다.

예를 들어,


yum search log

설치된 저장소에서 이름과 요약에 log라는 단어가 포함된 패키지를 검색합니다.


yum search all log

패키지 설명과 url 필드에서도 동일한 키워드를 찾습니다.

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


yum info logwatch

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


yum check-update

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

그런 다음 해당 패키지를 단독으로 업데이트할 수 있습니다.


yum update rhel-7-server-rpms

업데이트할 수 있는 패키지가 여러 개 있는 경우 yum update는 모든 패키지를 한 번에 업데이트합니다.

이제 ps2pdf와 같은 실행 파일의 이름을 알고 있지만 어떤 패키지가 이를 제공하는지 모르면 어떻게 될까요? yum whatprovides “*/[executable] ”을 사용하여 확인할 수 있습니다.


yum whatprovides “*/ps2pdf”

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


yum remove httpd

또한 읽어 보세요: RHEL 7 패키지 관리를 관리하기 위한 20개의 Yum 명령

좋은 오래된 일반 RPM

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

패키지가 아직 존재하지 않는 경우 패키지를 설치해야 함을 나타내거나 (-U)가 설치된 경우 업데이트를 시도해야 함을 나타내기 위해 -Uvh 플래그와 함께 자주 사용됩니다. 작업이 수행되는 동안 자세한 출력 (-v) 및 해시 표시 (-h)가 있는 진행률 표시줄이 표시됩니다. 예를 들어,


rpm -Uvh package.rpm

rpm의 또 다른 일반적인 용도는 코드>rpm -qa(query all의 약어)를 사용하여 현재 설치된 패키지 목록을 생성하는 것입니다.


rpm -qa

참조: RHEL 7에서 패키지를 설치하기 위한 20RPM 명령

Cron을 사용하여 작업 예약

Linux 및 기타 Unix 계열 운영 체제에는 정기적으로 실행되도록 작업(예: 명령 또는 셸 스크립트)을 예약할 수 있는 cron이라는 도구가 포함되어 있습니다. Cron은 매분마다 /var/spool/cron 디렉토리에서 /etc/passwd의 계정 이름을 따서 명명된 파일을 확인합니다.

명령을 실행하면 모든 출력이 crontab 소유자(또는 /etc/crontabMAILTO 환경 변수에 지정된 사용자)에게 메일로 전송됩니다. Strong>(존재하는 경우).

Crontab 파일(crontab -e을 입력하고 Enter를 눌러 생성됨) 형식은 다음과 같습니다.

따라서 매월 둘째 날 오전 2시 15분에 로컬 파일 데이터베이스(이름이나 패턴으로 파일을 찾기 위해 찾기에 사용됨)를 업데이트하려면 다음을 추가해야 합니다. crontab 항목:


15 02 2 * * /bin/updatedb

위의 crontab 항목에는 "매월 둘째 날, 요일에 관계없이 오전 2시 15분에 /bin/updatedb를 실행합니다"라고 나와 있습니다. 이미 짐작하셨겠지만 별표 기호는 와일드카드 문자로 사용됩니다.

cron 작업을 추가한 후 앞서 언급한 대로 /var/spool/cron 내부에 root라는 파일이 추가된 것을 확인할 수 있습니다. 해당 파일에는 crond 데몬이 실행해야 하는 모든 작업이 나열되어 있습니다.


ls -l /var/spool/cron

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


crontab -l

좀 더 세분화된 방식으로 작업을 실행해야 하는 경우(예: 하루에 두 번 또는 매달 세 번) cron이 이를 수행하는 데 도움이 될 수도 있습니다.

예를 들어, 매월 1일과 15일에 /my/script를 실행하고 출력을 /dev/null로 보내려면 다음을 수행합니다. 다음과 같이 두 개의 crontab 항목을 추가합니다.


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

이전 예에 따르면 3개월마다 매월 1일 오전 1시 30분/my/other/script를 실행할 수 있습니다.


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

또는 예를 들어 고정된 빈도로 또는 시스템 부팅 후에 특정 작업을 실행해야 할 수도 있습니다. 5개 필드 대신 다음 문자열 중 하나를 사용하여 작업을 실행하려는 정확한 시간을 나타낼 수 있습니다.


@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 * * * *.

또한 읽어 보세요: RHEL 7에서 크론 작업을 예약하는 11가지 명령

로그 찾기 및 확인

시스템 로그는 /var/log 디렉터리 내에 위치하며 순환됩니다. Linux 파일 시스템 계층 표준에 따르면 이 디렉토리에는 기타 로그 파일이 포함되어 있으며 이 파일은 해당 디렉토리나 적절한 하위 디렉토리(예: audit, httpd 또는 samba)에 기록됩니다. 아래 이미지 참조) 시스템 작동 중 해당 데몬에 의해:


ls /var/log

다른 흥미로운 로그로는 dmesg(커널 링 버퍼의 모든 메시지 포함), secure(사용자 인증이 필요한 연결 시도 로그), message(시스템 전체 메시지) 및 wtmp(모든 사용자 로그인 및 로그아웃 기록)가 있습니다.

로그는 시스템에서 항상 무슨 일이 일어나고 있는지, 과거에 무슨 일이 일어났는지 엿볼 수 있다는 점에서 매우 중요합니다. 이는 Linux 서버 문제를 해결하고 모니터링하는 귀중한 도구이므로 tail -f 명령과 함께 이벤트가 발생하고 로그에 기록되는 대로 실시간으로 표시하는 데 자주 사용됩니다.

예를 들어 커널 관련 이벤트를 표시하려면 다음 명령을 입력합니다.


tail -f /var/log/dmesg

웹 서버에 대한 액세스를 보려는 경우에도 마찬가지입니다.


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

요약

패키지를 효율적으로 관리하고 작업을 예약하는 방법과 시스템의 현재 및 과거 작동에 대한 정보를 찾을 수 있는 위치를 알고 있다면 당황스러운 일이 자주 발생하지 않을 것이라고 확신할 수 있습니다. 이 기사가 이러한 기본 기술에 대한 지식을 배우거나 새로 고치는 데 도움이 되기를 바랍니다.

질문이나 의견이 있는 경우 주저하지 말고 아래 문의 양식을 사용하여 연락해 주세요.