타이머를 사용하여 서버에서 tmux 프로세스를 종료할 수 있습니까?

타이머를 사용하여 서버에서 tmux 프로세스를 종료할 수 있습니까?

tmux서버에 설치하여 실행하고 있습니다 jupyter. 신경망을 맞추는 데 시간이 많이 걸리지만 서버가 공개되어 있으므로 리소스가 부족합니다. 내 프로그램을 실행하고, 실행하는 데 걸리는 시간을 대략적으로 예측한 다음, 예상 실행 시간을 초 단위로 tmux kill --time 5000사용하여 비슷한 명령을 작성할 수 있는지 궁금했습니다 . 5000이렇게 하면 사용하지 않는 리소스를 빌리지 않습니다.

답변1

나는 이것을 직접 발견했습니다.

프로세스를 종료하려면 sleep다음 명령을 사용할 수 있습니다.

sleep <time in seconds> && tmux kill-session -t <session name>

또는 모든 세션을 종료해야 하는 경우 tmux간단히 다음을 입력할 수 있습니다.

sleep <time in seconds> && pkill tmux

UPD: 또는 의견에서 권장하는 대로 다음을 사용할 수 있습니다. timeout <time> tmux <command>

답변2

kill서버는 tmuxtmux 내에서 실행하는 프로세스를 반드시 중지하지는 않습니다. 그러나 tmux그 안에서 시작한 모든 프로그램이 더 이상 존재하지 않으면 해당 프로그램을 종료하고 싶은 것 같습니다.

기본적으로 tmux 서버는 해당 창에 할당된 모든 프로세스가 종료되면 종료됩니다. 이를 사용하여 remain-on-exit창을 열어두고 종료 프로세스의 결과를 확인할 수 있지만 다시 연결하고 검토하지 않고 서버를 종료하려는 것 같으 므로 remain-on-exit. 세션 없이 켜져 있지만 당신은 그것을 원하지 않습니다. 기본 동작은 정확히 당신이 원하는 것 같습니다. 당신이 해야 할 일은 창에 할당된 프로세스가 종료되는지 확인하는 것뿐입니다.exit-emptyoff

tmux new-session command1이렇게 하면 command1새로 생성된 세션의 단일 창에 있는 단일 창에 프로세스가 할당됩니다. 그러면 tmux new-window command2기다리시면 됩니다 tmux split-window command3. tmux 서버는 command1, , command2, (및 다른 경우) 종료 후에 종료되며 command3다른 세션은 없습니다.

대화형 셸을 사용하여 세션/창/창을 만드는 경우 셸이 중요한 프로세스입니다. command4셸에서 시작된 프로그램은 종료될 수 있지만 셸과 tmux 서버는 그대로 유지됩니다. 대화형 셸에서 tmux의 프로그램을 실행하는 데 익숙하고 이 방식을 유지하려는 경우 필요하지 않을 때 tmux가 즉시 종료되도록 하려면 각 셸이 작업이 완료되자마자 각 셸이 종료되는지 확인해야 합니다. 종료됩니다. tmux 내의 쉘에서는 다음을 수행할 수 있습니다.

command4; exit

심지어

command4; command5 && command6 | (command7; command8) | command9; exit

이렇게 하면 명령이 종료되자마자 쉘이 결국 종료됩니다. command4전화할 수 있는 유일한 간단한 경우라면

exec command4

shell을 으로 바꾸십시오 command4. 이제부터 tmux 서버에 중요한 것은 command4이것뿐입니다.

어떤 방식으로든 모든 세션의 모든 창에 있는 모든 창이 결국 종료되는지 확인하세요. 이 작업을 올바르게 수행하면 tmux 서버가 모두 종료된 후 자동으로 종료됩니다.

이 방법을 사용하면 아무것도 추정할 필요가 없습니다. tmux 서버는 필요한 만큼 계속 실행되므로 조기에 종료할 위험이 없습니다.

다시 말하지만, 이 모든 것은 해당 tmux에 있는 터미널(창)의 모든 출력이 소비 가능하다고 가정합니다. 귀하의 답변에서 아무것도 확인하지 않고 세션이나 tmux 서버를 종료하고 싶다는 것을 알았습니다.

내 솔루션을 사용하면 일부 오래된 타이머가 더 이상 새로운 상황에 적합하지 않을까 걱정할 필요 없이 필요할 때마다 새 세션이나 창 또는 분할창을 생성할 수 있습니다. 더 이상 필요하지 않으면 모든 창이 사라집니다. 모든 창, 모든 세션 및 전체 tmux 서버에서 동일합니다.

창에 할당된 명령 중 일부가 무기한 실행되도록 되어 있는 경우(즉, 요청 시 종료될 때까지) 이 솔루션은 실제로 작동하지 않습니다. 나는 그런 명령에 문제가 없다고 생각합니다. 하지만 그렇다면 command4다음과 같을 수도 있다는 점을 명심하세요 timeout 5000 actual_command4.

관련 정보