SSH를 통해 실행되는 프로세스의 PID를 얻는 방법

SSH를 통해 실행되는 프로세스의 PID를 얻는 방법

server1과 server2라는 두 개의 서버가 있다고 가정해 보겠습니다.

서버 1에서는ssh root@server2 "some_command"

some_commandserver1에서 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를 반영하지 않는다는 사실을 깨닫지 못했습니다. 그것은 이 화신에서 작동합니다. 감사해요.

관련 정보