byobu / tmux 세션 내에서 시작할 때 Python 스크립트를 시작하고 (존재하지 않는 경우 세션을 생성) 나중에 연결할 수 있습니다.
다음 명령을 포함하는 start_script.sh를 만들었습니다.
byobu-tmux new-session -A -s userscript \; rename-window userscript1 \; send-keys "cd /home/username/scripts/ && python userscript1.py" C-m
수동으로 실행하면 제대로 작동합니다. 그런 다음 systemd 서비스 파일을 만들었습니다.
[Unit]
Description=Sensors service
After=multi-user.target
StartLimitIntervalSec=0
[Service]
Type=forking
User=username
ExecStart=/bin/bash /home/username/start_script.sh
RemainAfterExit=yes
[Install]
WantedBy=default.target
그러나 서비스는
Jun 21 17:11:39 hostname bash[15061]: open terminal failed: not a terminal
또한 ExecStart = 뒤에 start_script 명령을 넣으려고 시도했지만 동일한 오류 메시지와 함께 서비스 시작이 실패합니다 ( bash 대신 명령 이름 으로 byobu-tmux ).
이상적으로는 python 프로세스가 systemd에서 서비스로 처리되기를 원하므로 실패시 자동으로 다시 시작되지만 필수 사항은 아닙니다.
마침내 나를 위해 일한 것입니다 (Ubuntu 18.04에서).
/home/username/start_script.sh
합니다 (잊지 마세요 chmod +x
해당 파일을) :
#!/bin/bash
set -x
set -e
byobu list-sessions | grep my-app || byobu new-session -d -s my-app
byobu list-windows -t my-app | grep start-script || byobu new-window -t my-app -n 'start-script'
byobu send-keys -t my-app:start-script "cd /home/username/scripts/ && python userscript1.py" C-m
그리고 /etc/systemd/system/my-app.start_script.service
:
[Unit]
Description=My app start script
[Service]
Type=forking
ExecStart=/bin/bash -l -c '/home/username/start_script.sh'
User=username
Group=usergroupname
[Install]
WantedBy=multi-user.target
그런 다음 sudo systemctl enable my-app.start_script.service
.
서비스 로그를 보려면 : sudo journalctl -u my-app.start_script.service
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다