원격 서버가 있고 브라우저를 통해 연결합니다.목성거기에 호스팅된 노트북입니다. jupyter 서비스는 를 통해 실행됩니다 systemd
. 문제는 jupyter가 기대한다는 것입니다둘 ctrl-c
5초 이내에 서로 명령을 내려 깔끔하게 종료하세요. systemd
프로세스를 중지하라는 신호를 보낸 다음 시간 초과를 기다린 후 마지막으로 jupyter가 중지되지 않은 것을 확인하면 종료 신호를 보냅니다. 이로 인해 서비스를 중지하거나 다시 시작하려고 할 때 오랜 지연과 불결한 종료가 발생합니다. systemd에 매개변수가 있다는 것을 알고 있지만 이를 실제로 사용하는 방법과 이 메커니즘을 통해 두 번의 키 입력에 해당하는 신호를 보내는 ExecStop
방법에 대한 예를 찾을 수 없습니다 .ctrl-c
내 현재 서비스 파일은 다음과 같습니다
[Unit]
Description=Jupyter notebook
[Service]
Type=simple
PIDFile=/var/run/jupyter-notebook.pid
ExecStart=/home/linuxbrew/.linuxbrew/bin/jupyter notebook --no-browser
User=pgcudahy
Group=pgcudahy
WorkingDirectory=/home/pgcudahy
Environment=PATH=/home/linuxbrew/.linuxbrew/opt/python/libexec/bin:/home/linuxbrew/.linuxbrew/opt/cython/bin:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:/home/pgcudahy/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[Install]
WantedBy=multi-user.target
답변1
그래서 더 많은 연구를 통해 보내드리고 싶은 ctrl-c
것은 다음을 SIGINT
사용하여 수행할 수 있는 것 입니다./bin/kill -s SIGINT
이것을 내 서비스 파일에 추가하면 jupyter가 완전히 종료됩니다.
ExecStop=/bin/kill -s SIGINT -$MAINPID & /bin/kill -s SIGINT -$MAINPID
전체 파일은
[Unit]
Description=Jupyter notebook
[Service]
Type=simple
PIDFile=/var/run/jupyter-notebook.pid
ExecStart=/home/linuxbrew/.linuxbrew/bin/jupyter notebook --no-browser
ExecStop=/bin/kill -s SIGINT -$MAINPID & /bin/kill -s SIGINT -$MAINPID
User=pgcudahy
Group=pgcudahy
WorkingDirectory=/home/pgcudahy
Environment=PATH=/home/linuxbrew/.linuxbrew/opt/python/libexec/bin:/home/linuxbrew/.linuxbrew/opt/cython/bin:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:/home/pgcudahy/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[Install]
WantedBy=multi-user.target
답변2
나에게 이것은 "some_systemd.service" 파일에 다음 코드를 추가하여 작동했습니다.
[Service]
ExecStart=/usr/local/sbin/DVR_Living_Room.sh
KillSignal=SIGINT
"SIGINT"는 종료 신호로, "Ctrl + C"로 해석되며 깔끔하게 종료됩니다.
FFMPEG 라이브 녹화 중 다른 종류의 종료로 인해 비디오가 손상되기 때문에 이 FFMPEG 신호가 필요합니다. FFMPEG는 비디오를 손상시키지 않고 비디오 녹화를 완전히 중지하기 위한 유효한 종료로 "CTRL+C"만 허용합니다.
또한 여기에서 다양한 종료 신호를 찾을 수 있습니다. https://man7.org/linux/man-pages/man7/signal.7.html