การสร้าง service unit file สำหรับกำหนด deamon ง่าย ๆ ใน systemd

ในการพัฒนาระบบสารสนเทศที่ใช้ภาษาพวก static type มักจะต้อง compile แล้วสั่ง run จาก command line ซึ่งเวลาจะใช้งานจริงที่อาจจะต้องมีการ stop, start หรือ restart ระบบ อาจจะค่อนข้างยุ่งยาก เพราะเราต้องทำการ kill process และทำการ run ใหม่อีกครั้ง ใน Linux ที่ใช้ systemd เราสามารถสร้าง service unit file ให้กับงานของเราได้ และสามารถทำการ stop, start หรือ restart ผ่านคำสั่ง systemctl แบบง่าย ๆ ได้ โดยมีขั้นตอนดังนี้ครับ

1. สร้าง service unit file

สมมุติว่าระบบของเราเมื่อจะใช้งานจะเป็นไฟล์ binary ที่ชื่อ eservice ซึ่งเวลาเราใช้งานเราจะเข้าไปยัง folder ที่มี binary นั้นแล้วสั่ง run โดย ./eservice และเวลาจะปิดระบบ เราก็ต้องหาหมายเลขโปรเซสและทำการ kill ซึ่งยุ่งยาก เราสามารถสร้าง service unit file ซึ่งเป็น text ไฟล์ธรรมดา ไว้ในโฟล์เดอร์ /usr/lib/systemd/system และมีชื่อไฟล์เป็น eservice.service โดยมีเนื้อหาดังนี้ครับ

File : /usr/lib/systemd/system/eservice.service

[Unit]
Description=eservice service
After=syslog.target
After=network.target
# After=mysqld.service
# After=postgresql.service
# After=memcached.service
# After=redis.service

[Service]
Type=simple
User=eservice
Group=eservice
WorkingDirectory=/home/eservice
ExecStart=/home/eservice/eservice
Restart=always
Environment=USER=eservice HOME=/home/eservice

[Install]
WantedBy=multi-user.target

2. สั่งงานผ่าน systemctl

หลังจากสร้างไฟล์ unit service แล้ว เราสร้างสั่งงานผ่านคำสั่ง systemctl ได้เหมือนกับระบบทั่วไปดังนี้ครับ

Start Service

$ systemctl start eservice

Stop Service

$ systemctl stop eservice

Restart Service

$ systemctl restart eservice


Auto Start Service when boot up

$ systemctl enable eservice

Cancel Auto Start Service when boot up

$ systemctl enable eservice

การจัดการระบบก็จะง่ายขึ้นเยอะเลยครับ 🙂