특정 사용자로 Perl에서 forever을 사용하여 NodeJS 서버를 시작하려고합니다.Perl에서이 명령을 실행하는 올바른 방법은 오류가 없습니다.
Perl에서 프로그래밍 한 것은 이번이 처음이므로 해결하는 것이 매우 간단합니다. 많은 예제를 살펴 봤지만 함수가 system
및 exec
과 관련하여 충돌하는 정보 만 있습니다.
내 Perl 모듈 파일에서 system
과 exec
을 모두 시도했습니다.
sub start_server {
my ($result) = @_;
my $return = system("forever --uid nodejs-34534 -a start /path/to/server.js");
$result->data($return);
return 1;
}
가 어떻게 Perl로 명령 forever --uid nodejs-34534 -a start /path/to/server.js
을 실행해야합니다 system 사용
? 아무것도 반환하지 않거나 오류를 표시하고 다른 명령을 실행하면 예를 들어 echo "$user"
이 제대로 작동하고 Perl 스크립트를 실행하는 사용자의 현재 사용자 이름을 반환합니다.
업데이트 : 필요한 출력을 얻기 위해 잘못된 기능을 사용하고 올바른 방향으로 포인터를 많이 아래 많은 댓글 후
. 배열 변수와 백틱을 사용 했어야하는데, @zdim 덕분에이를 지적했다. 이는 실행 된 명령의 출력을 보지 못하는 문제를 해결했습니다.
수정하여 역 따옴표는 :
sub start_server {
my ($result) = @_;
my @output = `forever --uid nodejs-34534 -a start /path/to/server.js`;
$result->data(\@output);
return 1;
}
그러면 또 다른 문제는 빛에왔다. 커맨드가 호출되었지만 출력이 수신 된 후 중지되었습니다. @Borodin이 스크립트와 모듈을 만들어 필요한 것으로 만들고 테스트해야한다고 말한 후. 그렇게하고 실행 된 명령을 테스트하면 살아 남습니다. 이제는 살아남지 못하는 문제가 내가 확장하려고하는 Perl API에 있다는 것을 알고 있습니다.
내가 확장하고있는 Perl API가 프로세스를 중지하는 이유는 무엇인지 생각해 볼 수 있습니까?
댓글이 확장 된 논의하지 않습니다; 이 대화는 [채팅으로 이동되었습니다] (http://chat.stackoverflow.com/rooms/130997/discussion-on-question-by-jjb-what-is-the-correct-way-to-run-this- command-in-p). – Flexo