프로그램 실행 횟수 제한

프로그램 실행 횟수 제한

프로그램의 동시 실행 수를 제한하는 방법을 알려주세요. 내 말은 특정 프로그램은 한 번에 5번만 실행할 수 있다는 것입니다. 사용자의 프로세스 수를 제한하는 방법을 알고 있지만 PAM을 사용하여 프로그램의 프로세스 수를 제한하려면 어떻게 해야 합니까?

답변1

PAM은 로그인 및 계정 수정을 승인하는 데 사용됩니다. 특정 프로그램을 제한하는 것과는 전혀 관련이 없습니다.

프로그램 실행 횟수에 제한을 적용하는 유일한 방법은 이 제한을 적용하는 래퍼를 통해 프로그램을 호출하는 것입니다. 물론 사용자는 자신만의 프로그램 복사본을 가지고 이 래퍼를 피할 수 있습니다. 이를 원하지 않으면 컴퓨터에 해당 사용자에 대한 계정을 제공하지 마십시오.

프로그램을 단일 인스턴스로 제한하려면 파일에 배타적 잠금을 부여하면 됩니다. 하나의 파일을 사용하여 제한된 수의 인스턴스를 허용하는 직접적인 방법은 없지만 5개의 ​​파일을 사용하여 5개의 인스턴스를 허용하고 래퍼 스크립트가 각 파일을 차례로 시도하도록 할 수 있습니다. 디렉터리 /var/lib/myapp/instances(또는 원하는 위치)를 만들고 그 안에 5개의 파일을 만듭니다. 모두 읽을 수 있지만 루트만 쓸 수 있습니다.

umask 022
mkdir /var/lib/myapp
touch /var/lib/myapp/instances/{1,2,3,4,5}

래퍼 스크립트( myapp.original원본 실행 파일의 경로로 대체), Linux 사용flock유용:

#!/bin/sh
for instance in /var/lib/myapp/instances/*; do
  flock -w 0 -E 128 "$instance" myapp.original "$@"
  ret=$?
  if [ "$ret" -ne 128 ]; then exit "$ret"; fi
done
echo >&2 "Maximum number of instances of myapp reached."
exit 128

관련 정보