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