Linux 원격으로 스크립트를 실행하면 화면이 멈추고 컨트롤로 돌아오지 않습니다.

Linux 원격으로 스크립트를 실행하면 화면이 멈추고 컨트롤로 돌아오지 않습니다.

서버에 스크립트가 있습니다. 로컬 서버에서 실행하면 문제가 없습니다.

<user@server> ~ % restart_forms A 
forms [A] is Restarting
<user@server> ~ %

그러나 클라이언트(다른 Linux 시스템)에서 원격으로 실행하면 다음과 같습니다.

<user@client> ~ % ssh server /path/restart_forms A
forms [A] is Restarting

이 화면이 멈추고 컨트롤로 돌아가지 않습니다. 매번 스크립트를 종료하려면 ctrl+c를 사용하고 컨트롤로 돌아와야 합니다.

나는 이것이 아마도 stdin, stdout 및 stderr와 관련이 있다는 것을 알고 있습니다. 지금은 이 배경을 실행하려고 했습니다.

<user@client> ~ % ssh server /path/restart_forms A &

또한 시도

<user@client> ~ % ssh server /path/restart_forms A >/dev/null 2>&1 &

위의 모든 것이 실패하고 동일한 문제가 발생합니다. (업무상 이유로 실행할 화면을 생성할 수 없습니다)

누구든지 어떤 생각을 가지고 있습니까? 감사합니다

업데이트: 클라이언트에서 시도하면 ps -ef | grep restart_forms이 스크립트가 클라이언트에서 여전히 실행 중인 것을 볼 수 있습니다. 이렇게 되어서는 안 됩니다.

답변1

자체적으로 종료되지 않는 스크립트를 실행해야 하고 이를 실행하려는 경우 또는 세션 ssh에서 실행하는 것이 가장 좋습니다 . 그러면 해당 터미널이 사용되는 터미널과 분리됩니다. 이렇게 하면 스크립트를 호출한 후 자유롭게 종료할 수 있으며 원하는 만큼 스크립트를 계속할 수 있습니다.screentmuxsshssh

그렇게 하려면 다음과 같이 하십시오:

ssh <user>@<host> screen -d -m restart_forms A

관련 정보