systemctl은 돌고 있는 서비스를 조회하고 컨트롤 할 때 많이 쓰는 명령어 입니다. 이 글에서는 상태를 볼 수 있는 status만 간단하게 다루어 보겠습니다.

 


 man 페이지를 보면, systemctl 명령어는 systemd system과 서비스 manager를 컨트롤 한다고만 되어 있습니다. 이 중에서 저는 stop, start, status, enable, disable을 많이 써 보았던 듯 합니다. man 페이지를 보면 이들 말고도 다른 것들도 있는데요. 이 글에서는 중요하게 다룰 내용이 아닙니다.

 

 

 저는, elasticsearch가 떠 있는지 보기 위해서, systemctl status elasticsearch를 쳤습니다. 이것은 단지, 일라스틱 서치가 떠 있는지, 상태를 보는 명령어입니다.

 

 

 위 명령어를 쳐서, 일라스틱 서치 서비스를 시작해 보겠습니다.

 


 사실, 저는 systemctl status mysql 이런 식으로 서비스의 상태를 보곤 했습니다. 그런데, 특정한 패턴을 만족하는 서비스 전체를 보고 싶을 때도 있습니다. 예를 들자면, el로 시작하는 것이라던지, 아니면, el이 포함되는 것이라던지, my로 시작하는 것 등이 있을 겁니다. 혹은, git으로 시작하는 것 전체를 볼 수도 있을 겁니다.

 

 이 때 쓸 수 있는 것이 pattern인데요. '*el*'은, el을 부분 문자열로 가지는 서비스들을 의미합니다.

 

 

 위와 같이 입력해 보겠습니다. 그러면, sys-kernel-debug.mount가 뜹니다. 이게 무엇인지는 잘 모르겠습니다만, 한 가지 확실한 것은 el이 부분 문자열로 들어갔다는 점입니다.

 

 

 그리고 elasticsearch도 뜹니다. 당연하게도, el을 부분 문자열로 가졌기 때문입니다. el을 부분문자열로 가지는 게 아니라, el을 접두어로 가지는 것만 출력하게 하려면, 'el*'로 적는 게 좋겠네요.

 

 

 사실 이 정도만 알고 있어도 꽤 편할 듯 싶습니다.

 

 


 man 페이지에 보시면, pid 값으로도 status를 볼 수 있다고 나옵니다. pid는 프로세스를 구분할 수 있는 번호를 의미합니다. 예를 들어서, 1번은 init, ... , 6941은 일라스틱 서치. 이렇게 프로세스마다 번호를 부여한다는 것 정도만 이해하시면 편합니다.

 

 

 ps -aux에 grep ela를 piping 해 보겠습니다. 이것은 ps -aux의 결과에, ela라는 패턴이 나오는 행만 보여줍니다. 빨간색으로 표시가 된 elastic+ 옆에 6941이 있는데요. 이것은 pid를 의미합니다.

 

 

 이 번호를 그대로 입력해서 조회해 보니, elasticsearch.service라고 나옵니다.

 

 

 ps -aux의 결과에 git이 나오는 행만 필터링 해서 보도록 합시다. 이 중에서, 1646번 pid를 가지는 gitlab-workhorse가 어떤 서비스와 연관이 있는지 보도록 하겠습니다. 그리고 이것은 아래 git의 readme를 보았을 때, http request에 관여하는 것으로 보입니다. 이것이 어느 서비스와 연결이 되어 있는지 봅시다.

 

 

 gitlab-runsvdir.service가 결과에 나타납니다. 그리고 CGroup이 출력이 되고, redis, logrotate, node_exporter 등이 트리 구조로 출력이 되고 있습니다. 1646은 이것과 관련이 있다는 것을 알 수 있습니다.