How to Use the Supervisor Command in Linux: A Practical Guide
Managing processes in Linux often requires robust tools to ensure stability and automation. One such tool is supervisord, a process control system that helps manage and monitor processes in a reliable and organized manner. Here’s a comprehensive guide on how to use supervisord effectively, along with a practical demo.
Installing Supervisor
Before diving into usage, ensure supervisord is installed on your system. You can typically install it using your package manager. For example, on Ubuntu, you can use:
sudo apt-get install supervisor
Configuring Supervisor
Once installed, supervisord needs a configuration file where you define the programs and processes it will manage. The main configuration file is usually located at /etc/supervisor/supervisord.conf. You can edit this file directly or create separate configuration files in the /etc/supervisor/conf.d/ directory.
Here’s a basic example of a supervisord.conf file:
[program:myprogram]
command=/path/to/myprogram
autostart=true
autorestart=true
stderr_logfile=/var/log/myprogram.err.log
stdout_logfile=/var/log/myprogram.out.log
Understanding Configuration Options
program: This defines the program or process you want supervisord to manage.
command: Specifies the command to start your program.
autostart: Controls whether the program starts automatically when supervisord starts.
autorestart: Determines if the program should automatically restart if it exits.
stderr_logfile, stdout_logfile: Path to error and standard output log files.
Starting Supervisor
Once configured, start supervisord using: sudo systemctl start supervisor
To ensure supervisord starts automatically on boot: sudo systemctl enable supervisor
Managing Processes with Supervisor
After supervisord is running, you can manage processes using the supervisorctl command-line tool.
Checking Status: supervisorctl status
Starting a Process: supervisorctl start <program_name>
Stopping a Process: supervisorctl stop <program_name>
Restarting a Process: supervisorctl restart <program_name>
Reloading Configuration: supervisorctl reread
supervisorctl update
Demo: Managing a Sample Application
Let’s demonstrate by managing a simple Python web server using supervisord.
Create a Python HTTP Server Script: Save the following Python script as server.py:
from http.server import HTTPServer, BaseHTTPRequestHandler
class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.end_headers()
self.wfile.write(b'Hello, world!')
httpd = HTTPServer(('localhost', 8000), SimpleHTTPRequestHandler)
httpd.serve_forever()Create a Supervisor Configuration File: Create a file named myapp.conf in /etc/supervisor/conf.d/:
[program:myapp]
command=python3 /path/to/server.py
autostart=true
autorestart=true
stderr_logfile=/var/log/myapp.err.log
stdout_logfile=/var/log/myapp.out.logReload Supervisor and Start the Application:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start myapp
Manage the Application:
Check status: supervisorctl status
Restart: supervisorctl restart myapp
Stop: supervisorctl stop myapp
Conclusion
supervisord simplifies process management in Linux environments, providing robust control and monitoring capabilities. By following this guide and exploring further options in supervisord's documentation, you can effectively streamline the management of various processes on your system. Start using supervisord today to enhance your Linux server administration experience!