나는 이것을 만들어 왔습니다 (http://tryperl.com) 리눅스를 배워보세요. 그래서 제 질문은 제가 완전히 이해하지 못하는 *nix에 관한 것입니다.
내가 하고 싶은 한 가지는 생성된 스크립트(내 애플리케이션에서)를 제한된 사용자로 실행하는 것입니다. 그래서 하나를 만든 limiteduser
다음 포크 제한을 설정할 수 있습니다.이와 같이: limiteduser hard nproc 300
.
그럼 이건가?올바른 방법다음과 같이 스크립트를 실행하십시오 limiteduser
.
sudo -u limiteduser perl myscript.pl
두번째, 동시 요청이 있으면 어떻게 되나요?포크 및 실행그리고 다른 스크립트를 사용하여 위 코드를 동시에 실행하세요. 이로 인해 문제가 발생합니까? 동일한 사용자가 두 프로세스를 실행하면 어떻게 되는지 들었습니다.
특히 저는 우분투에서 실행하고 있지만 이것이 모든 *nix 배포판에 적용된다고 가정합니까?
업데이트: 추가적으로 사용할 계획입니다.정지시키다너무 오래 걸리면 스크립트 시간 초과를 허용하므로 이상적으로는 제한된 수의 프로세스를 실행해야 합니다.
답변1
첫째, sudo는 제한된 사용자로 스크립트를 실행하는 좋은 방법입니다.
둘째, 스크립트의 여러 인스턴스를 동시에 실행하면 문제가 발생할지 여부는 스크립트가 실제로 수행하는 작업에 따라 달라집니다. 이는 (일반적으로) 개별 인스턴스가 동일한 사용자에 의해 실행되는지 여부와 관련이 없습니다. 대신 스크립트가 파일을 편집하려고 하는지 여부를 고려해야 합니다. 이 경우 두 인스턴스가 동일한 파일을 편집하려고 할 수 있습니다. 동시에 파일이 예상치 못한 상태에 빠질 수 있습니다.
또한, 물론 사용자가 실행할 수 있는 프로세스 수나 소비할 수 있는 메모리의 양을 제한하면 어느 시점에서 한계에 도달할 수 있으며 스크립트가 원하는 작업을 수행하지 못할 수 있습니다. 그러나 이것은 전체 제한 시스템의 특징입니다. (제한이 없으면 제대로 작성된 프로그램으로 인해 전체 시스템이 무릎을 꿇을 수 있습니다. 그러나 이는 프로그램을 누가 실행하는지가 아니라 프로그램이 작성된 방식 때문입니다(루트로 실행하지 않는 한). 일을 망가뜨리기 때문에 제한된 사용자가 일을 실행하도록 하는 것이 좋은 것입니다).
답변2
첫 번째 요점과 관련하여 여기에 한 가지 방법이 있습니다! 맞습니다.
두 번째 점과 관련하여 Unix/Linux는 다중 프로세스 운영 체제와 마찬가지로 많은 동시 프로세스를 처리할 수 있습니다. 문제가 발생하는 경우 일반적으로 리소스 경합으로 인해 발생합니다. 따라서 모든 프로세스가 느린 저장소의 파일이나 파일 시스템, 큰 잠금 장치가 있는 IPC 리소스 등에 액세스합니까? 따라서 기본적으로 OS X 또는 Windows에서 발생하는 동시성 문제는 Linux/Unix 세계에서도 유사합니다.