스크립트(bash, python 등) 내 로깅 및 인쇄는 장치 이름과 어떤 관련이 있습니까?
매우 간단한 단위 파일 test-service.service가 있다고 가정해 보겠습니다.
[Unit]
Description=Test Unit
[Service]
Type=simple
User=myuser
Group=myuser
ExecStart=/usr/bin/bash /home/myuser/hello.sh
[Install]
WantedBy=default.target
hello.sh에는 다음이 포함됩니다.
#!/bin/bash
echo "Hello World"
해당 특정 유닛 파일에 대한 로그를 표시하려고 하면 "Hello World" 로그 줄이 표시되지 않습니다.
journalctl -u test-service -f
-- Logs begin at Mon 2019-12-09 10:07:15 CET. -- Dec 09 10:10:51 localhost.localdomain systemd[1]: Started Test Unit.
단위별로 필터링하지 않고 Journalctl을 실행하면 다음과 같은 로그 줄을 볼 수 있습니다.
journalctl -f
-- Logs begin at Mon 2019-12-09 10:07:15 CET. --
Dec 09 10:14:07 localhost.localdomain bash[4776]: Hello World
이제 이 유닛 파일에서도 동일한 일이 발생합니다.
[Unit]
Description=Test Unit
[Service]
Type=simple
User=myuser
Group=myuser
ExecStart=/usr/bin/python /home/myuser/test.py
[Install]
WantedBy=default.target
test.py에는 다음이 포함됩니다.
import logging
class TestService(object):
def __init__(self):
logging.basicConfig()
self.log = logging.getLogger("test-service")
self.log.setLevel(logging.INFO)
def hello_world(self):
exit_code = 0
print("Hello world, exit_code = {}".format(exit_code))
self.log.info("Hello world!!!")
exit(exit_code)
if __name__ == "__main__":
print("starting up..")
r = TestService()
r.hello_world()
해당 특정 유닛 파일에 대한 로그를 다시 표시하려고 하면 "Hello World" 로그 줄이 표시되지 않습니다.
journalctl -u test-service -f
-- Logs begin at Mon 2019-12-09 10:07:15 CET. --
Dec 09 10:10:51 localhost.localdomain systemd[1]: Started Test Unit.
단위별로 필터링하지 않고 Journalctl을 실행하면 다음과 같은 로그 라인이 보입니다.
systemd[1]: Started Test Unit.
Dec 09 10:28:52 localhost.localdomain python[5449]: INFO:test-service:Hello world!!!
Dec 09 10:28:52 localhost.localdomain python[5449]: starting up..
Dec 09 10:28:52 localhost.localdomain python[5449]: Hello world, exit_code = 0
Bash 및 Python 스크립트의 스크립트는 유닛 파일과 어떤 관련이 있습니까? "bash[4776]" 및 "python[5449]"는 스크립트와 관련된 기본 단위 이름입니까, 아니면 기본값은 무엇입니까?