Мне нужно написать программу или скрипт bash, который будет запускаться время от времени (на основе cron). Программа будет содержать конечный автомат и будет вести себя по-разному в зависимости от того, в каком состоянии она находится.
Программа (или скрипт bash) не зависит от пользователя, поэтому ее не должно быть в папке / home.
Где (по соглашению) хранить файл с внутренним состоянием программы на Ubuntu Server?
Дополнительный вопрос: какое место лучше всего подходит для самого скрипта?
Какое самое лучшее место для самого сценария?
blockquote>Это может быть ...
/usr/local/bin/
Где (по соглашению) хранить файл с внутренним состоянием программы на сервере Ubuntu?
blockquote>Я не думаю, что существует такое местоположение. Вы можете использовать
/var/local/
. Я видел несколько методов, и популярный, кажется, использует/opt/
. Таким образом:/opt/{software_name}/ /opt/{software_name}{.version_1}/ /opt/{software_name}{.version_2}/ ...
где 1-й символическая ссылка на активную версию. И
./bin
внутри этих каталогов для двоичных файлов,./log
для (повернутого) журнала и, в вашем случае,./state
с уникальным идентификатором или без него. И все настроено для пользователя root с разрешениямиn00
, чтобы никто не мог прочитать содержимое «state».Проясняет, где вы можете найти все, что вам нужно.
Я бы сделал папку для данных в /var/local/
и сохранил скрипт в /usr/local/bin/
Если вы хотите, чтобы ваш скрипт был доступен для всех пользователей, поместите его в /usr/local/bin
, это лучшее место для скриптов и программ, когда вы устанавливаете их вручную, тогда как другие места управляются менеджером пакетов. Если этот скрипт предназначен только для модераторов, он должен быть размещен в /usr/local/sbin
.
Чтобы сохранить состояние вашего скрипта, вы должны учитывать, какой пользователь будет запускать скрипт? Вы запустите его, используя root
в своем файле crontab
? если это так, то, по моему мнению, вы должны сохранить состояние в домашнем каталоге пользователя root. Вы также можете рассмотреть возможность использования /tmp