Giả sử sau khi các bạn đã viết ra một worker service, và worker này không chỉ chạy trên Window, các bạn còn muốn nó chạy được trên Linux (cho xứng với cái danh .Net Core của nó chứ hả), thì các bạn có thể execute nó trực tiếp trên server, nhưng vấn đề là khi execute được rồi, nó không chạy ngầm, mà nó sẽ dừng khi bạn bấm Ctrl + C, vậy làm thế nào để nó chạy ngầm dưới background đây ta?
Bài viết giả sử bạn đã biết publish worker app sang môi trường Linux trên Visual Studio rồi nhá!
Bước 1: Tạo File Service Unit
Trong Linux để chạy một worker service được build từ .Net (C#) hoặc đơn giản là chạy một tác vụ ngầm dưới background thì chúng ta có thể sử dụng systemd. Với systemd nó cho phép chạy một tác vụ ngầm như một service, và có thể tự khởi động lại khi chúng ta reboot server.
Giả sử trong bài viết sẽ đặt tên service là mytool nhé, tên gì tùy các bạn, nhưng nên có .service đằng sau.
1 | sudo vi /etc/systemd/system/mytool.service |
Bước 2: Cấu hình file service
Thêm cấu hình sau vào file mytool.service:
1 | [Unit] |
Lưu lại và thoát khỏi vi
Bước 3: Cấp quyền chạy cho service
Nếu để mặc định thì service sẽ không có quyền execute, nên ta cần set quyền
1 | sudo chmod +x /path/to/my-tool-folder/file-executable |
Bước 4: Reload và start service
Reload systemd để áp dụng thay đổi:
1 | sudo systemctl daemon-reload |
Bước 5: Start service
1 | sudo systemctl start mytool.service |
Bạn có thể kiểm tra trạng thái, dừng bằng 2 lệnh tương ứng sau:
1 | sudo systemctl status mytool.service |
Bước 6: Setup service khởi động cùng hệ thống
1 | sudo systemctl enable mytool.service |
Bước 7: Xem và xóa Log
Để xem log của service tạo ra:
1 | sudo journalctl -u mytool.service |
Để xóa log:
1 | sudo rm -rf /run/log/journal/* |
Sau khi làm theo các bước trên, bạn đã tạo thành công một worker service chạy ngầm rồi đấy;.