×

How to Restart Programs After a Crash or Reboot in Linux

How to Restart Programs After a Crash or Reboot in Linux


In the computer world of Linux, it’s super important to make sure that programs keep running all the time. Sometimes, things like sudden crashes or restarts can mess up how programs work, causing problems and maybe even losing important stuff.

But guess what? There are cool ways to make sure programs stay alive, even when tricky things happen. Let’s check out some easy ways to make sure your programs can handle tough situations in Linux.

1. Systemd Service

One popular method is using process supervisors like systemd, which is a widely used init system that can be configured to monitor and restart failed services, providing a robust solution for application reliability.

Creating a Systemd Service

To use systemd for auto-restart, create a service file (e.g., ‘myapp.service‘) using your favorite editor.

$ sudo nano /etc/systemd/system/myapp.service

Next, define the restart behavior as shown.

[Unit]
Description=My Application

[Service]
ExecStart=/path/to/myapp
Restart=always

[Install]
WantedBy=default.target

Once you make a systemd file, you can turn on and start our app service, which makes sure that if the app stops or if the computer restarts, it will start again all by itself.

sudo systemctl enable myapp.service
sudo systemctl start myapp.service

We can also quickly see how our service is doing. If we only want to know if the service is working, we can type:

sudo systemctl is-active myapp.service
sudo systemctl status myapp.service

If we want to, we can quickly stop any service we made before. But, because our service is set to start when the computer turns on, it will start again even if we stop it manually.

sudo systemctl stop myapp.service

To prevent it from starting automatically, we need to use the “disable” command.

sudo systemctl disable myapp.service

2. Keep-Alive Scripts

Create special shell scripts that regularly check if your computer program is working. If it’s not, these scripts can start it again. Think of these scripts like friendly robots that make sure your favorite game or app keeps running smoothly!

To make these scripts work at specific times, you can use a tool called cron, which is like a magical clock that tells the robots when to do their job regularly. So, your game or app gets a little helping hand from the robots, making sure it stays on and ready for you to play whenever you want!

#!/bin/bash

# Check if the app is running
if ! pgrep -x "myapp" > /dev/null
then
    # If not, restart the app
    /path/to/myapp
fi

Next, schedule the script to run every minute using cron (job scheduler).

crontab -e

Next, we have to include the following line.

* * * * * /path/to/keep_alive_script.sh

3. Supervisord

Supervisord is a process control system for Linux that helps you monitor and control processes, ensuring they stay alive and well even in the face of crashes or system reboots. It acts as a supervisor for your applications, making sure they are always running as intended.

To install Supervisord on Linux, use the following appropriate command for your specific Linux distribution.

sudo apt install supervisor         [On Debian, Ubuntu and Mint]
sudo yum install supervisor         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/supervisor  [On Gentoo Linux]
sudo apk add supervisor             [On Alpine Linux]
sudo pacman -S supervisor           [On Arch Linux]
sudo zypper install supervisor      [On OpenSUSE]    
sudo pkg install supervisor         [On FreeBSD]

Once the supervisor is installed, you need to create a configuration file to tell Supervisord which processes to manage.

sudo nano /etc/supervisor/supervisord.conf

Next, you need to add the following configuration to the file.

[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

In the above configuration example, replace /path/to/your/application with the actual command to start your application. The autostart and autorestart options ensure that your application starts automatically and restarts if it crashes.

Once you’ve set up your configuration, you can interact with Supervisord using the supervisorctl command.

supervisorctl status
supervisorctl start myapp
supervisorctl stop myapp
supervisorctl restart myapp

These commands let you check the status of your processes and manually start, stop, or restart them as needed.

Conclusion

By implementing these methods, you can significantly enhance the reliability of your applications on Linux systems. Whether you choose systemd, or custom shell scripts, the key is to have a proactive strategy in place to detect failures and automatically recover from them.

This makes sure that your games or apps keep running smoothly without any interruptions, even if your computer suddenly stops working or needs to restart.



Source link