대화형 터미널에 쓰고 읽는 응용 프로그램이 있는데 셸을 통해 실행하면 예상대로 작동합니다. 그러나 systemd 서비스로 실행하면 응용 프로그램이 stdout 또는 stderr을 캡처하지 않는 것 같습니다.
서비스 정의에서 StandardOutput 및 StandardError를 journal+console
수정해 보았습니다 tty
.
내 시스템 파일의 서비스 섹션은 다음과 같습니다.
[Service]
ExecStart=/bin/bash -c "cd /somedir && python3 myapp.py"
ExecStop=
Restart=always
RestartSec=10
StandardOutput=tty
StandardError=tty
나는 또한 그것을 설정하려고 시도했지만 TTYPath=/dev/tty2
운이 없었습니다.
우분투 16.04를 실행 중입니다.
편집: 추가 정보
이 애플리케이션을 실행하면 생성된 대화형 세션이 실제로 애플리케이션을 실행하는 터미널에서 읽기/쓰기가 되지 않습니다. 자체 터미널을 에뮬레이트합니다.
여기 링크를 참조하세요:
http://docs.paramiko.org/en/2.4/api/channel.html#paramiko.channel.Channel.get_pty
그리고 여기:
http://docs.paramiko.org/en/2.4/api/channel.html#paramiko.channel.Channel.invoke_shell