Em làm thread này hướng dẫn cho các bác code trên python và sử dụng hệ điều hành có systemd là service manager (đại loại là quản lý các service chạy ngầm). Quá trình này gọi là "daemonize", các bác có thể google với từ khóa daemonize python script. 1. Yêu cầu hệ thống - Có sử dụng systemd (thay cho initd cũ). Thí dụ : Ubuntu 15.04 trở lên, Debian Jessie trở lên, ... Hầu hết các distro mới hiện tại đều đã chuyển sang dùng systemd : https://en.wikipedia.org/wiki/Systemd#Adoption - file script viết bằng python, ví dụ đặt tại /home/abc/script.py 2. Thực hiện Bước 1 : Tạo file mới trong /etc/systemd/system/ với tên script_run.service bằng cách chạy : sudo nano /etc/systemd/system/script_run.service và dán vào nội dung như sau : Code: [Unit] Description=Chay Script script.py cua tui [Service] Type=simple ExecStart=/usr/bin/python /home/abc/script.py [Install] WantedBy=multi-user.target Bước 2 : Nạp lại cache của systemd bằng lệnh : sudo systemctl daemon-reload Bước 3 : Bật service vừa tạo và khởi động nó luôn bằng 2 lệnh sudo systemctl enable script_run.service sudo systemctl start script_run.service Tạo service khác các bác chỉ cần thay đường dẫn đến script thôi Với cách này thì log mà in ra màn hình các bác không xem được nhé, nên sử dụng gói logging có sẵn của python để log ra file cho tiện
py hình như là viết tắt của từ python, còn daemon theo em biết là tên của 1 phần mềm email server/client trên linux. Mấy cái này hiện ko dùng nên .
Em có thể giải thích như thế này đơn giản cho a dễ hiểu tất cả service install lên vps được quản lý bởi systemd, deamon kiểu như thằng trông coi mấy cái đó vd như nginx, php, ... Bác này đang hướng dẫn là tự tạo cho mình service riêng có thể stop, start và enable là khởi động cùng vps. Bác ấy đang lấy vd là là chạy lệnh python như thật ra anh có thể áp dụng cho mọi thứ khác mà anh mong muốn nó kiểu y service vậy. Vd a soạn 1 script php đơn giản crawl kw mà kiểu crawl liên tục ngày này tháng nọ. A có thể làm 1 cái service kiểu này cho nó khoẻ. A viết 1 bash script thực thi file php đó và trỏ đường dẫn ở ExecStart là đuoc, hoặc có thể exec thẳng như bác ấy đang ví dụ.
Cám ơn các pé nhưng anh chỉ nói anh ko biết py lẫn daemon (tức là chưa từng mần 2 em đoá) chứ anh hiểu thớt nói gì mà
Chức năng có phần hơi giống screen (vì post này em thấy hai bác bàn bên screen của anh money nên em đoán vậy) em muốn hỏi cái này có ưu điểm gì hơn ko? Ví dụ em để phần mềm trên linux đôi khi bị nó killed nếu dùng daemon này có thể giúp hạn chế phần nào ko a
Khác nhau cơ bản chứ. Screen thì nó thực thi xong hết commnad nó sẽ dừng. Còn kiểu này nó chạy cùng vps chỉ dừng khi stop thôi. Nếu k sẽ k dừng. Y kiểu web server vậy chỉ dừng khi stop. Đông chí này dev java có bao h deploy microservice chạy trên ubuntu chưa? Nếu có chắc phải xài service kiểu này. Java phải chạy lệnh java -jar ... đồng chí chạy k thể nào screen mà chạy được vì sẽ chiếm màn hình trong khi đang cần nó chạy liên tục. Thay vì vậy thì nên xài service. Clear?
Chạy kiểu daemon (hay service) này, nếu process bị dừng vì lý do gì đó (oom - hết bộ nhớ chẳng hạn) thì nó sẽ tự khởi động lại nha các bác Với lại nếu dùng python3 thì chỗ /usr/bin/python phải thành /usr/bin/python3 nha
java mình k code nên k rõ, nhưng chắc cũng tương tự thôi. Đầu tiên bạn đánh which java để tìm đường dẫn file binary của nó, thường là /usr/bin/java, sau đó copy cái đường dẫn đó vào chỗ ExecStart ấy
https://dzone.com/articles/run-your-java-application-as-a-service-on-ubuntu làm theo hướng dẫn, thay User=root là được