Để chạy một ứng dụng Python trên Ubuntu liên tục, ngay cả khi bạn thoát khỏi phiên làm việc SSH, bạn có thể sử dụng một trong các cách sau:
1. Sử dụng nohup
Câu lệnh nohup cho phép bạn chạy một tiến trình mà không bị ảnh hưởng khi thoát khỏi terminal.
nohup python3 app.py &
nohup giữ cho tiến trình tiếp tục chạy ngay cả khi bạn đăng xuất.
& đặt tiến trình vào chế độ chạy nền.
Kết quả đầu ra (stdout và stderr) sẽ được ghi vào tệp nohup.out theo mặc định.
Nếu bạn muốn ghi log vào một tệp cụ thể:
nohup python3 app.py > output.log 2>&1 &
2. Sử dụng screen
screen là một công cụ mạnh mẽ để quản lý các phiên làm việc.
Cài đặt screen (nếu chưa có):
sudo apt-get install screen
Tạo một phiên làm việc mới:
screen -S myapp
Chạy ứng dụng:
python3 app.py
Để tách khỏi phiên mà không dừng tiến trình, nhấn tổ hợp phím:
css
Copy code
Ctrl + A, sau đó nhấn D
Để quay lại phiên:
screen -r myapp
3. Sử dụng tmux
tmux tương tự như screen nhưng hiện đại hơn.
Cài đặt tmux:
sudo apt-get install tmux
Tạo một phiên làm việc mới:
tmux new -s myapp
Chạy ứng dụng:
python3 app.py
Tách khỏi phiên:
css
Copy code
Ctrl + B, sau đó nhấn D
Quay lại phiên:
tmux attach -t myapp
4. Sử dụng systemd để tạo dịch vụ
Nếu bạn muốn chạy ứng dụng Python như một dịch vụ hệ thống:
Tạo một tệp dịch vụ:
sudo nano /etc/systemd/system/myapp.service
Thêm nội dung sau:
ini
Copy code
[Unit]
Description=Chạy ứng dụng Python
After=network.target
[Service]
ExecStart=/usr/bin/python3 /path/to/app.py
WorkingDirectory=/path/to/
Restart=always
User=yourusername
Group=yourgroupname
[Install]
WantedBy=multi-user.target
Kích hoạt và chạy dịch vụ:
sudo systemctl daemon-reload
sudo systemctl start myapp.service
sudo systemctl enable myapp.service
Kiểm tra trạng thái:
sudo systemctl status myapp.service
Chọn cách phù hợp nhất với nhu cầu của bạn!