어제 저는 동료의 컴퓨터에서 작업을 하고 있었고 SSH를 사용하여 내 클러스터 계정에 로그인했지만 세션을 열어두고 이제 집에 왔습니다.
그가 나보다 먼저 세션을 종료했는지는 모르겠습니다.
내 컴퓨터에서 클러스터의 열려 있는 모든 세션을 로그아웃(종료)해야 합니다.
열려 있는 모든 세션에서 로그아웃하는 방법은 무엇입니까?
노트: 비밀번호를 변경하면 도움이 되지만 비밀번호를 변경할 수 없습니다.
답변1
who -u
로그인한 사용자 목록과 셸 세션의 PID를 제공하는 명령을 사용할 수 있습니다.
root@server:/# who -u
root - pts/0 2017-08-08 15:52 00:08 21934 (192.168.5.33)
root - pts/1 2017-08-08 16:07 . 31669 (192.168.5.33)
그런 다음 그에 따라 셸 세션을 종료합니다(귀하의 경우에는 사용자에게 속한 세션).
root@server:/# kill 21934 31669
쉘을 종료하면 상위 SSH 세션도 종료됩니다.
답변2
먼저 프로세스가 실행 중인 컴퓨터에 연결해야 합니다. SSH를 사용하세요.
당신은 보낼 수 있습니다신호그것에. 귀하의 경우 이 작업에 대한 올바른 신호는 다음과 같습니다.한숨을 쉬다. 이 신호는 터미널이 사라질 때 자동으로 전송됩니다(어원적으로 말하면 모뎀이시간웽위로).
이 컴퓨터의 모든 세션을 닫으려면 모든 프로세스에 SIGHUP을 보냅니다. 당신은 이것을 할 수 있습니다
kill -HUP -1
-1
"모든 프로세스"를 의미합니다. 다른 사용자의 프로세스는 종료할 수 없으므로 귀하의 프로세스만 종료됩니다.
특정 프로세스만 종료하려면 다음 명령을 실행하여 계정에서 실행 중인 모든 프로세스를 나열할 수 있습니다.
ps -u $(id -u) -ww
종료할 프로세스를 결정한 후에는 이 열의 값을 주의 깊게 복사하세요 PID
. 예를 들어, PID 123 및 125를 종료하려면 다음을 수행하십시오.
kill -HUP 123 125
프로세스가 SIGHUP에 응답하지 않으면 SIGKILL이 전송됩니다. SIGHUP은 친절하게 요청하지만 SIGKILL은 프로세스에 기회를 주지 않습니다.
kill -KILL 123 125