Ограничить количество запусков программы

Вы можете использовать это:

awk '{for(i=1;i<=NF;i++) t+=$i; print (t/(i-1)); t=0}' filename
2
16.01.2017, 01:09
1 ответ

PAM используется для авторизации входа в систему и изменения учетной записи. Это совершенно не имеет отношения к ограничению конкретной программы.

Единственный способ установить ограничение на количество раз, которое программа может быть выполнена, - это вызвать ее через оболочку, которая применяет это ограничение. Конечно, пользователи могут обойти эту оболочку, имея собственную копию программы; если вы этого не хотите, не давайте этим пользователям учетную запись на вашем компьютере.

Чтобы ограничить программу одним экземпляром, вы можете установить монопольную блокировку файла. Нет простого способа использовать файл, чтобы разрешить ограниченное количество экземпляров, но вы можете использовать 5 файлов, чтобы разрешить 5 экземпляров, и заставить сценарий оболочки пробовать каждый файл по очереди. Создайте каталог / var / lib / myapp / instance (или там, где вы хотите его разместить) и создайте в нем 5 файлов, все доступные для чтения, но доступные для записи только root.

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
5
27.01.2020, 22:03

Теги

Похожие вопросы