알 수 없는 지점에서 tmux 세션이 손실되었습니다. 이유와 가능한 해결 방법은 무엇입니까?

알 수 없는 지점에서 tmux 세션이 손실되었습니다. 이유와 가능한 해결 방법은 무엇입니까?

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스크립트 등을 실행하는 경우 tmuxsudo 이후의 작업은 루트에서 수행되므로 세션은 sudo를 사용하는 사용자가 아닌 루트 아래에 나열됩니다.

이 문제를 해결하려면 루트로 sudo tmux a또는 를 사용하여 tmuxtmux 세션 제어권을 다시 얻으십시오.

관련 정보