Я использую Ubuntu 15.04 Server на VPS. Я пытаюсь сделать так, чтобы мой друг мог изменить файл конфигурации для игрового сервера через FTP, а затем, когда это будет сделано, выполнить скрипт оболочки, который убивает сервер, а затем перезапустить его. Спасибо!
2 ответа
Запустите скрипт после загрузки
pureftpd предоставляет pure-uploadscript, который вы можете использовать для перезапуска игрового процесса:
ОПИСАНИЕ
Если Pure-FTPd скомпилирован с
--with-uploadscript(по умолчанию в бинарных дистрибутивах), и если-o(или--uploadscript) передается на сервер, именованный канал называется/var/run/pure-ftpd.upload.pipeсоздан. Вы также заметите важный файл/var/run/pure-ftpd.upload.lock, используемый для блокировки. После успешной загрузки имя файла записывается в канал.pure-uploadscriptчитает этот канал для автоматического запуска любой программы или сценария для обработки вновь загруженного файла.
(из справочной страницы)
Используйте это для обнаружения изменений в конфигурационном файле игры [s] (загруженный / измененный файл передается как первый аргумент скрипту $1), и если они будут изменены, перезапустите игровой сервер.
В противном случае вы можете использовать некоторые сценарии bash и cron чтобы проверить mtime файла конфигурации и перезапустить сервер, если он изменится на что-то более новое. Или вы можете по- настоящему придумать и подключить inotify через что-то вроде inotify-tools ; но это, вероятно, излишне для этого.
Предполагая, что вы используете или будете использовать proftpd, вы можете использовать модуль mod_exec и выполнить команду при изменении файла.
Однако я не рекомендую этого - вы должны использовать контролируемый удаленный сеанс для перезапуска службы. Это можно сделать с пользователем с наименьшими привилегиями, а затем исправить спецификацию файла sudoers, чтобы разрешить доступ только к интересующей службе.
