How to Keep Linux Process Running After a Crash or Reboot

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.

Ravi Saive
I am an experienced GNU/Linux expert and a full-stack software developer with over a decade in the field of Linux and Open Source technologies

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Join the TecMint Weekly Newsletter (More Than 156,129 Linux Enthusiasts Have Subscribed)
Was this article helpful? Please add a comment or buy me a coffee to show your appreciation.

2 Comments

Leave a Reply
  1. I was a little misled by the headline. I was expecting something like a discussion of systems that periodically checkpoint a running process and that after a restart could roll back and continue from the checkpointed state. A bit like process migration from the pre-crash system to the post-crash system.

    Still, I haven’t encountered supervisord so will check it out. Seems to be a cutdown systemd or something from the Solaris svc, smf stable.

    Reply
    • @Bebu,

      Hi there! I appreciate your feedback on the article. I understand your expectation based on the headline, and I apologize for any confusion.

      The article focused on using supervisord as a process control system rather than discussing checkpointing and process migration.

      Supervisord is indeed a useful tool for process management, and I hope you find it helpful in your work.

      Reply

Got Something to Say? Join the Discussion...

Thank you for taking the time to share your thoughts with us. We appreciate your decision to leave a comment and value your contribution to the discussion. It's important to note that we moderate all comments in accordance with our comment policy to ensure a respectful and constructive conversation.

Rest assured that your email address will remain private and will not be published or shared with anyone. We prioritize the privacy and security of our users.