ในการพัฒนาระบบสารสนเทศที่ใช้ภาษาพวก 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
การจัดการระบบก็จะง่ายขึ้นเยอะเลยครับ 🙂