Это - моя первая попытка выполнения сервера Linux. У меня есть серверное приложение, которое я хочу работать на сервере, к которому у меня есть ssh доступ.
Если бы это был Windows Server, то я просто открыл бы удаленный рабочий стол, выполнил бы вещь и разъединил бы сессию удаленного рабочего стола. Однако это - мое понимание, что выходить из ssh сессии уничтожает все процессы, порожденные в.
Таким образом, я сделал немного поиска, и кажется, что я должен буду использовать screen
или tmux
сохранять мой процесс, бегущий за разъединением. Однако я хотел бы знать, существует ли лучший путь. Серверный процесс должен смочь считать команды управления из stdin, и я смог бы просмотреть некоторый stdout вход вывода также (хотя остальная часть его неизбежно входит в файл журнала).
ОБНОВЛЕНИЕ: я в настоящее время запускаю приложение в tmux сессии. Это, кажется, работает хорошо, но я не вполне чувствую, что это - самый лучший путь...
Чтобы запустить сервер в Linux, вы добавляете его к вещам, которыми управляет systemd
. Службы описываются коротким файлом service
, который помещается в /etc/systemd/system/{target}/
, где {target}
указывает состояние системы (обычно multi-user.target.wants
). Описание службы включает в себя такие вещи, как исполняемый файл и что делать, если он завершается. Например, сервер mysql
:
# MySQL systemd service file
[Unit]
Description=MySQL Community Server
After=network.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
PermissionsStartOnly=true
ExecStartPre=/usr/share/mysql/mysql-systemd-start pre
ExecStart=/usr/sbin/mysqld
ExecStartPost=/usr/share/mysql/mysql-systemd-start post
TimeoutSec=600
Restart=on-failure
RuntimeDirectory=mysqld
RuntimeDirectoryMode=755
После настройки файла вы используете команду systemctl
:
systemctl start {service}
для запуска сервера [ 1112] systemctl stop {service}
для остановки сервера systemctl enable {service}
для запуска сервера после загрузки systemctl disable {service}
для предотвращения запуска сервера после перезагрузки