![알 수 없는 지점에서 tmux 세션이 손실되었습니다. 이유와 가능한 해결 방법은 무엇입니까?](https://linux55.com/image/23392/%EC%95%8C%20%EC%88%98%20%EC%97%86%EB%8A%94%20%EC%A7%80%EC%A0%90%EC%97%90%EC%84%9C%20tmux%20%EC%84%B8%EC%85%98%EC%9D%B4%20%EC%86%90%EC%8B%A4%EB%90%98%EC%97%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%20%EC%9D%B4%EC%9C%A0%EC%99%80%20%EA%B0%80%EB%8A%A5%ED%95%9C%20%ED%95%B4%EA%B2%B0%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
Python 웹 애플리케이션을 검사하기 위해 장기 실행 tmux 세션에 다시 연결하려고 합니다. 그러나 tmux attach
실행 중인 세션이 없다고 주장하고 프로세스(첫 번째 줄)를 ps
표시 tmux
하지만 숫자 대신 물음표가 표시됩니다 pts
.
이것은 무엇을 의미합니까? 이 tmux 세션이 영구적으로 손실됩니까? 원인은 무엇일까요? tmux 세션에서 생성되어 pts/19
실행 중인 Python 프로세스(두 번째 줄) 의 현재 상태를 볼 수 있는 방법도 있습니까 ?
[mhermans@web314 ~]$ ps -ef | grep mhermans
mhermans 16709 1 0 Mar04 ? 00:26:32 tmux
mhermans 8526 16710 0 Mar04 pts/19 00:20:04 python2.7 webapp.py
root 9985 6671 0 10:18 ? 00:00:00 sshd: mhermans [priv]
mhermans 10028 9985 0 10:18 ? 00:00:00 sshd: mhermans@pts/16
mhermans 10030 10028 0 10:18 pts/16 00:00:00 -bash
mhermans 16247 10030 6 10:28 pts/16 00:00:00 ps -ef
mhermans 16276 10030 0 10:28 pts/16 00:00:00 grep mhermans
mhermans 16710 16709 0 Mar04 pts/19 00:00:00 -bash
mhermans 16777 16709 0 Mar04 pts/21 00:00:00 -bash
답변1
제공되는 솔루션웹팩션 지원:
프로세스가 계속 실행 중이므로 소켓이 삭제되는 것이 문제입니다. 아마도 지워진 tmp 디렉토리로 인해 발생한 것 같습니다.
tmux
지도 에 따르면 :
소켓이 실수로 삭제된 경우 SIGUSR1 신호가 tmux 서버 프로세스로 전송되어 다시 생성될 수 있습니다.
따라서 신호를 보내고 작업을 첨부합니다.
killall -s SIGUSR1 tmux
tmux attach
답변2
터미널이 없다는 것은 세션이 분리되었다는 신호입니다. tmux
다음과 같이 모든 세션 이름을 찾을 수 있습니다 .
ls $TMP/tmux-$(id -u)
또는ls /var/run/tmux/tmux-$(id -u)
- 배포판에 따라 다소 다릅니다. 배포에 거의 독립적이고 더 핵심적인 것은 다음과 같습니다.
lsof -n -p 16709 -a -U
16709
목록에서 tmux의 PID는 어디에 있습니까?
답변3
그게 다야이전 답변은 여기에 있습니다.도와줬어요 (와우!) 나는 해결하려고 노력했다.정확히Tmux에 연결하는 경우 - 에서 볼 수 있습니다 tmux ls
.하지만에서도 ps
볼 수 있어요다른tmux, 목록에 없으므로 tmux ls
이름을 사용하여 연결할 수 없습니다(tmux attach -t myOldbas)
자세한 내용은 아래를 참조하세요. 프로세스:
71358 1849 9617 0 Sep04 pts/29 00:00:00 /bin/bash
71358 2528 9617 0 Aug31 pts/25 00:00:00 /bin/bash
71358 9617 1 0 Aug31 ? 00:08:55 tmux new -s myOld
71358 9618 9617 0 Aug31 pts/20 00:00:00 /bin/bash
71358 20199 33189 0 Sep16 pts/27 00:00:00 vim log
71358 20415 32257 0 Sep16 pts/30 00:00:00 /bin/bash
71358 24735 32257 0 Sep16 pts/33 00:00:00 /bin/bash
71358 32257 1 0 Sep16 ? 00:04:02 tmux new -s myses
지금,lsof 비트가 정말 도움이 되었습니다.- 그럴 때두 가지 프로세스, 내 경우에는 32257(내가 볼 수 있는 것)과 9617(이전 것)
/usr/sbin/lsof -n -p 32257 -a -U
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
..
tmux 32257 uzer.buzer 7u unix 0xffff881ff0c73480 0t0 995795763 /tmp/uzer.buzer/tmux-71358/default
그러나 이전 PID를 사용하면 다음이 표시됩니다.
/usr/sbin/lsof -n -p 9617 -a -U
tmux 9617 uzer.buzer 7u unix 0xffff881ff0c73480 0t0 995795763 /tmp/tmux-71358/default
알아채다,마지막 소켓 경로의 차이점은 무엇입니까? 다행스럽게도 그것이 나에게 필요한 것이었고 명시적 소켓을 사용하여 추가 명령을 실행했습니다.
tmux -S /tmp/tmux-71358/default at
나는 그 안에있다!
답변4
앞으로 이 스레드를 접하게 되는 모든 분들을 위해;
이를 사용하여 sudo
스크립트 등을 실행하는 경우 tmux
sudo 이후의 작업은 루트에서 수행되므로 세션은 sudo를 사용하는 사용자가 아닌 루트 아래에 나열됩니다.
이 문제를 해결하려면 루트로 sudo tmux a
또는 를 사용하여 tmux
tmux 세션 제어권을 다시 얻으십시오.