[컴] systemctl --user도 linger 설정이 필요하다.

스프링 이유없이 죽는 이유

systemctl --user도 linger 설정이 필요하다.

systemctl --user 를 사용하는 경우에도 linger 설정이 필요하다.

만약 ssh login 을 해서 서버를 띄운 후에 ssh세션을 모두 닫는다면 그 시점에 서버가 종료될 것이다.

sudo loginctl enable-linger <user_id>

현재 linger설정 상태를 확인하려면 아래와 같은 command를 치면 된다.

loginctl user-status <user_id>

$ loginctl user-status admin
admin (1000)
           Since: Thu 2024-03-28 06:16:00 UTC; 4h 42min ago
           State: active
        Sessions: 642 *639
          Linger: no
            Unit: user-1000.slice
                  ├─session-639.scope
                  │ ├─67433 sshd: admin [priv]
                  │ ├─67456 sshd: admin@pts/0
                  │ ├─67457 -bash
                  │ ├─67906 loginctl user-status admin
                  │ └─67907 pager
                  ├─session-642.scope
                  │ ├─67469 sshd: admin [priv]
                  │ ├─67476 sshd: admin@notty
                  │ └─67477 /usr/lib/openssh/sftp-server
                  └─user@1000.service
                    ├─app.slice
                    │ └─myserver.service
                    │   └─67481 /usr/bin/java -Dspring.profiles.active=prod -Xms512M -Xmx1G -XX:+UseZGC -jar /services/myserver/myserver-0.0.1-SNAPSHOT.jar
                    └─init.scope
                      ├─67436 /lib/systemd/systemd --user
                      └─67437 (sd-pam)

개인적인 경험

처음에 systemctl --user 를 사용할 떄는 이것이 systemctl 과 같다고 봐서, daemon 으로 동작하기에 따로 nohup 등의 설정이 필요없다고 생각했다. 그래서 systemctl --user를 이용해서 웹서버를 실행했었다.

하지만 이 서버가 종종 gracefully shutdown 으로 죽었다.(spring server 였다.) 당연히 웹서버(WAS) 로그에는 남아있는 것이 없었다.

원인을 찾다가 deamon.log를 보게 되었다. 여기서 systemd가 stop 된 것을 보고 웹서버(WAS)가 죽은 이유를 추측해 볼 수 있었다. 그래서 결국 linger 설정이 필요한 것을 알았다.

cat /var/log/daemon.log | grep "Mar 28 06:12"

...
Mar 28 06:12:45 i-0127a77bf7ac67eaf systemd[1]: Stopping User Manager for UID 1000...
Mar 28 06:12:45 i-0127a77bf7ac67eaf systemd[104663]: Stopped target Main User Target.
Mar 28 06:12:45 i-0127a77bf7ac67eaf systemd[104663]: Stopping PMS api server(fish)...

Reference

  1. https://github.com/systemd/systemd/issues/8486#issuecomment-374318982

댓글 없음:

댓글 쓰기