![SSH를 통해 실행되는 프로세스의 PID를 얻는 방법](https://linux55.com/image/14530/SSH%EB%A5%BC%20%ED%86%B5%ED%95%B4%20%EC%8B%A4%ED%96%89%EB%90%98%EB%8A%94%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%9D%98%20PID%EB%A5%BC%20%EC%96%BB%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
server1과 server2라는 두 개의 서버가 있다고 가정해 보겠습니다.
서버 1에서는ssh root@server2 "some_command"
some_command
server1에서 pid를 찾는 방법은 무엇입니까?
답변1
ssh user@server2 'echo "$$" | tee some_command.pid && exec some_command'
코드를 해석한 쉘 프로세스의 PID를 출력하고, some_command.pid
홈 디렉터리의 파일 에 복사본을 저장한 user
후 동일한 프로세스(자식 프로세스가 아님)에 저장하므로 동일한 PID로 실행됩니다 some_command
.
나중에 ssh user@server2 'cat some_command.pid'
해당 PID를 검색할 수 있습니다(해당 프로세스를 실행 중인 프로세스가 아직 있는지 여부 some_command
, 해당 프로세스 중 하나에 동일한 PID가 있는지 여부, 셸을 실행한 프로세스가 some_command
여전히 실행 중인지 여부 some_command
).
답변2
다음을 사용하여 server1에서 명령의 pid를 찾을 수 있습니다.
ssh root@server2 "some_command && ps -ef|grep some_command"
답변3
또 다른 옵션은 다음과 같습니다.
ssh user@server2 'pidof some_command'
어떤 *nix를 사용하고 있는지 언급하지 않으셨기 때문에 해당 명령에 액세스할 수 있는지는 알 수 없습니다. 나는 Debian 및 그 파생물과 RedHat 및 그 파생물에서 가장 적게 사용할 수 있다는 것을 알고 있습니다.
답변4
다음과 같이 할 수도 있습니다.
ssh user@server2 'some_command & echo "$!" '
편집자: Stéphane Chazelas 사실 확인했을 때 두 개의 개별 명령이 PID를 반영하지 않는다는 사실을 깨닫지 못했습니다. 그것은 이 화신에서 작동합니다. 감사해요.