这是我第一次尝试运行 Linux 服务器。我有一个服务器应用程序,我想在具有 ssh 访问权限的服务器上运行它。
如果这是 Windows 服务器,我只需打开远程桌面,运行该程序并断开远程桌面会话即可。但是,据我所知,注销 ssh 会话会终止其中生成的所有进程。
所以我做了一些搜索,似乎我必须使用screen
或tmux
才能在断开连接后保持我的进程运行。但是,我想知道是否有更好的方法。服务器进程应该能够从 stdin 读取控制命令,我更希望能够查看一些 stdout 日志输出(尽管其余部分不可避免地会进入日志文件)。
更新:我目前正在 tmux 会话中运行该应用程序。它似乎运行正常,但我不太觉得这是最好的方法...
答案1
要在 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}
启动服务器systemctl stop {service}
停止服务器systemctl enable {service}
使服务器在启动后启动systemctl disable {service}
防止服务器在重启后启动