태그 Archives: systemd

cron 삭제 대비한 systemd 를 이용한 타이머 설정

일반적으로 crontab -l 를 이용하여 서버의 스케쥴링을 설정 한다.
Amazon linux 2023 에서는 cronie 가 삭제되었고 당연히 crontab 명령어를 사용할 수 없다. (뭐 설치한다면 사용할 수 있다 -.-a)
그래서 systemd 에서 제공하는 타이머 형태로 사용할 수 있다.

1. crontab -l 과 대응 되는 명령어는 systemctl list-timers 이다.

2. 기존에는 crontab 과 생성해둔 스크립트 조합으로 실행이 되었지만.
systemd 에서는 생성해둔 스크립트 + 서비스명.service + 서비스명.timer 조합으로 설정 할 수 있다.

아래는 간단한 timer 생성 예 이다.

아래는 스크립트를 실행하는 service 생성 예 이다. (Execstart= 에 생성 해둔 스크립트를 넣으면 해당 스크립트가 실행이 되겠다.)

스크립트, 타이머, 서비스 를 모두 생성 했다면 start 또는 enable 을 시켜서 작동을 확인한다.

springboot 의 systemd 설정 및 rsyslog 설정

스프링부트로 작성이 된 프로그램을 systemd 를 이용한 데모나이즈를 위해 아래와 같이 생성 한다. (가장 기본적인 부분..)

 

위와 같이 설정 파일을 생성 한뒤에 아래와 같은 명령어로 실행 할 수 있다.

 

위와 같이 실행을 할 경우 발생하는 로그는 CentOS 7 기준 /var/log/messages 파일에 누적이 된다.

가만히 두면 messages 파일이 엄청 커지거나 섞여 있어서 로그 확인에 에로 사항이 발생하게 된다.

때문에 다음 와 같이 /etc/rsyslog.d/30-springboot.conf 파일을 생성 하여 분리 하도록 한다.

 

rsyslog 를 재시작 한다.


PS1. 로그 순환 설정

 

rsyslog 에서 생성하는 별도의 파일을 새롭게 선언 되었기 때문에 logrotate 가 안되면 파일이 무한 증식 하게 되므로 아래와 같이 순환 설정을 하여

1달동안 보관 되고 삭제 되도록 설정 한다. (생성만 해두면 다음 주기에 적용됨..재시작할 필요는 없음.)


PS2. 프로그램 배포계정에 특정 데몬의 콘트롤 권한만 부여(sudo 이용) 하는 방법.

 

배포계정에 systemctl 을 이용 하여 특정 데몬을 콘트롤 할수 있는 권한을 부여 한다.

 

배포 계정은 아래와 같이 부여된 명령어를 root 와 같은 권한으로 실행이 가능 하다.

 

CentOS 7 에서 systemd 의 쓸모 없는 로그를 필터링

시스템 로그 분석을 매주 진행하는데 systemd 에서 아래와 같은 메세지가 많이 표현됨.

 

로그 분석할때 쓸모가 없기 때문에 rsyslog 에서 예외 적용 한다.

 

출처 : https://access.redhat.com/solutions/1564823