Я использую 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, чтобы разрешить доступ только к интересующей службе.