나는 linkedin의 glu 플랫폼을 통해 배포 된 node.js 응용 프로그램을 작성하고 있습니다.java vs terminal을 통해 프로세스를 실행하는 것과 다른 점은 무엇입니까?
실행 명령은 sudo -u <user> node app.js
을 호출하여 노드 사용자를 올바른 사용자로 시작합니다. 기본적으로이 명령을 문자열로 저장하고 Groovy의 exec()
명령을 호출합니다.
노드 응용 프로그램은 사용 가능한 프로세서의 개수에 따라 클러스터를 사용하지만 기본적으로 주요 정보는 정보를 얻은 다음 exec()
을 통해 쉘 스크립트를 실행하는 것입니다.
때로는 쉘 스크립트에서 오류가 발생하지만 때때로 glu 아래에서이 셸 스크립트가 오류로 인해 종료 될 때 문제가 발생하지만 노드를 통해 노드 프로세스를 시작해야합니다 (sudo -u <user> node app.js
). 프로세스가 시작됩니다. 벌금 및 껍질 프로세스가 제대로 정리 얻을.
동작이 어떻게 달라질 수 있습니까?
그것을 몇 가지 방법을 시작한 후 프로세스의 런타임 환경을 몇 가지 더 POC의 일을하고 검사 후, 당신이있어 제안 확실히 작동합니다. 그러나 제안을 보여주는 것처럼 bash를 사용하여 프로세스를 시작한 후에도 여전히 셸 프로세스가 발견되지 않았습니다. 이 문제를 해결할 수있는 유일한 방법은 disown % 1을 사용하여 자식 프로세스가 Java 프로세스 아래에 있지 않도록하는 것입니다. 자바 프로세스가 여전히 stdout과 err 스트림을 자식 프로세스에서 가져 오는 것을 알고 있지만이 문제가 발생하지 않아야한다는 것을 이해합니다. – AgentRegEdit