다음과 같이 명령을 받고 작업을 수행하는 Python으로 작성된 서비스가 있습니다.
print("\nWelcome!\n")
for line in sys.stdin:
cmd=line.rstrip()
if cmd == "ls" or cmd == "help":
print("Available Commands:")
이제 서비스가 시작되었으므로 systemd
해당 단위 파일은 다음과 같습니다.
[Service]
Environment=PYTHONUNBUFFERED=1
ExecStart=...service.py
WorkingDirectory=...
StandardOutput=tty
StandardInput=tty-force
TTYVHangup=yes
TTYPath=/dev/tty60
TTYReset=yes
따라서 서비스 입력 및 출력은 에 연결되어 서비스가 수행하는 작업을 확인하고 서비스와 상호 작용할 tty60
수 있습니다 . 예 를 conspy 60
들어 여기에 다음을 입력합니다 .test
help
test
Error: command 'test' not found.
Type 'help' for a list of available commands.
help
Avaliable Commands:
> status, fan1, fan2, fan3, fan4, wake, sleep, quit
Python은 내가 입력한 내용을 받아 예상대로 답변을 제공할 수 있었습니다.
이제 tty
대화형 프로그램과 같은 것을 입력하지 않고 어떻게 명령을 보낼 수 있습니까 conspy
?
피곤해요 echo -e "ls\n" >> /dev/tty60
. 다른 터미널에서 conspy
명령을 볼 수 있지만 Python이 명령을 처리하지 않습니다.
help **---> sent via conspy**
Avaliable Commands:
> status, fan1, fan2, fan3, fan4, wake, sleep, quit
help **---> sent with "echo"**
보시다시피, help
전송된 마지막 패스가 echo
처리되지 않았습니다.
감사해요.