
我们在Linux服务器中运行服务时,确保程序始终运行非常重要。有时,突然崩溃或重新启动等情况可能会扰乱程序的工作方式,导致问题,甚至可能丢失重要的内容。
当发生棘手的事情,总有一些很酷的方法可以确保程序保持活力。让我们看看一些简单的方法来确保您的程序能够处理Linux系统中的困难情况。
1. 系统服务
有一种流行的方法是使用像systemd这样的进程管理器,它是一种广泛使用的init系统,可以配置为监视和重新启动失败的服务,从而为应用程序可靠性提供强大的解决方案。
创建 Systemd 服务
要使用 systemd 进行自动重启,请使用您最喜欢的编辑器创建一个服务文件(例如“ myapp.service ”)。
$ sudo nano /etc/systemd/system/myapp.service
接下来,定义重新启动行为,如图所示。
[Unit]
Description=My Application
[Service]
ExecStart=/path/to/myapp
Restart=always
[Install]
WantedBy=default.target
创建 systemd 文件后,您可以打开并启动我们的应用程序服务,这确保如果应用程序停止或计算机重新启动,它会自行重新启动。
sudo systemctl enable myapp.service
sudo systemctl start myapp.service
我们还可以快速了解我们的服务表现如何。如果我们只想知道服务是否正常工作,我们可以输入:
sudo systemctl is-active myapp.service
sudo systemctl status myapp.service
如果我们愿意,我们可以快速停止之前提供的任何服务。但是,由于我们的服务设置为在计算机打开时启动,因此即使我们手动停止它,它也会再次启动。
sudo systemctl stop myapp.service
为了防止它自动启动,我们需要使用“ disable ”命令。
sudo systemctl disable myapp.service
2. 保活脚本
创建特殊的 shell 脚本来定期检查您的计算机程序是否正常工作。如果不是,这些脚本可以再次启动它。将这些脚本想象成友好的机器人,确保您最喜欢的游戏或应用程序保持平稳运行!
为了让这些脚本在特定时间工作,您可以使用一个名为 cron 的工具,它就像一个神奇的时钟,告诉机器人何时定期执行其工作。因此,您的游戏或应用程序可以从机器人那里得到一点帮助,确保它保持打开状态并准备好供您随时玩!
#!/bin/bash
# Check if the app is running
if ! pgrep -x "myapp" > /dev/null
then
# If not, restart the app
/path/to/myapp
fi
接下来,使用cron (作业调度程序)安排脚本每分钟运行一次。
crontab -e
接下来,我们必须包含以下行。
* * * * * /path/to/keep_alive_script.sh
3. 主管
Supervisord是 Linux 的进程控制系统,可帮助您监视和控制进程,确保它们即使在崩溃或系统重新启动时也能保持正常运行。它充当您的应用程序的监管者,确保它们始终按预期运行
要在 Linux 上安装Supervisord,请使用以下适合您的特定 Linux 发行版的命令。
sudo apt install supervisor [在Debian、Ubuntu 和 Mint上]
sudo yum install supervisor [在RHEL/CentOS/Fedora和Rocky/AlmaLinux上]
sudo emerge -a sys-apps/supervisor [在Gentoo Linux上]
sudo apk add supervisor [在Alpine Linux上]
sudo pacman -S supervisor [在Arch Linux上]
sudo zypper install supervisor [在OpenSUSE上]
sudo pkg install supervisor [在 FreeBSD 上]
安装 Supervisor 后,您需要创建一个配置文件来告诉Supervisord要管理哪些进程。
sudo nano /etc/supervisor/supervisord.conf
接下来,您需要将以下配置添加到该文件中。
[program:myapp]
command=/path/to/your/application
autostart=true
autorestart=true
stderr_logfile=/var/log/myapp.err.log
stdout_logfile=/var/log/myapp.out.log
在上面的配置示例中,将/path/to/your/application替换为启动应用程序的实际命令。自动启动和自动重新启动选项可确保您的应用程序自动启动并在崩溃时重新启动。
设置完配置后,您可以使用supervisorctl命令与Supervisord交互。
supervisorctl status
supervisorctl start myapp
supervisorctl stop myapp
supervisorctl restart myapp
这些命令可让您检查进程的状态并根据需要手动启动、停止或重新启动它们。
通过实施这些方法,您可以显着增强 Linux 系统上应用程序的可靠性。无论您选择systemd还是自定义 shell 脚本,关键是要有一个主动策略来检测故障并自动从中恢复。
这可以确保您的游戏或应用程序保持平稳运行而不会出现任何中断,即使您的计算机突然停止工作或需要重新启动也是如此。