รีโมทเข้าไปที่ Elsatix ก่อนนะครับ จนได้พร้อมท์ของ Linux แล้วพิมพ์คำสั่ง
- โค้ด: เลือกทั้งหมด
amportal stop
เพื่อหยุดการทำงาน รอสักพักแล้วใช้คำสั่ง
- โค้ด: เลือกทั้งหมด
amportal start
เพื่อสตาร์ทให้ทำงานใหม่ หรือจะใช้คำสั่ง
- โค้ด: เลือกทั้งหมด
amportal restart
ทีเดียวเลยก็ได้
แต่ถ้าการการใช้คำสั่งข้างบนยังไม่สามารถแก้ปัญหาได้ อาจเป็นเพราะว่า โปรเซส Asterisk มันค้างอยู่ในเซอร์เวอร์ เราต้อง kill โพรเซส asterisk และ safe_asterisk ก่อน แล้วค่อยใช้คำสั่งข้างบน
โพรเซสการทำงานของ Asterisk บน Elastix
โพรเซสคือโปรแกรมที่กำลังทำงานอยู่ใน Linux ครับ (ใน Elasitx มี CentOS Linux อยู่) แต่ละโปรแกรมที่ทำงานอยู่จะมีหมายเลขโพรเซส (เรียกว่า Process ID) อยู่ บางโปรแกรมก็มีแค่ 1 โพรเซส บางโปรแกรมก็มีมากกว่า 1 โพรเซส ลองมาดูโพรเซสของ Asterisk ดูครับ
จากพร้อมท์ Linux พิมพ์คำสั่ง ps -ef หรือ ps -ef | grep asterisk แล้วกด Enter
นี้เป็นรายชื่อโปรแกรมที่กำลังรันอยู่บน Elastix (CentOS Linux) ในขณะนี้ จริงๆมีเยอะกว่านี้ครับแต่ผมตัดเอามาเฉพาะที่อยากให้ดู คอลัมน์แรกเป็นชื่อยูสเซอร์ที่ใช้รันแต่ละโปรแกรม คอลัมน์ที่ 2 เป็นหมายเลขโพรเซส (Process ID) ซึ่งจะไม่ซ้ำกัน คอลัมน์สุดท้ายเป็นชื่อโปรแกรมที่กำลังทำงานอยู่ ซึ่งจะบอกชื่อโฟลเดอร์ที่เก็บโปรแกรมและไฟล์ที่สั่งรันด้วย
โพรเซสของ Asterisk จะมี 2 ไฟล์ที่รันคู่กันครับ บรรทัดบนคือไฟล์ safe_asterisk เก็บอยู่ในโฟลเดอร์ /usr/sbin เป็นไฟล์สคริปต์ซึ่งใช้เซ็ตออปชั่นในการรัน Asterisk เราแก้ไขได้ และบรรทัดล่างคือไฟล์ asterisk เป็นไฟล์โปรแกรมเก็บอยู่ในโฟลเดอร์เดียวกัน
จากโปรเซสที่แสดงในรูป ยังมีอีก 2 โพรเซสที่เกี่ยวข้องคือ safe_opserver และ op_server.pl ซึ่งเป็นโพรเซสของ FOP (Flash Operator Panel) ที่ Elastix เอามาใช้เพื่อแสดงสถานะของเบอร์ Extension ดูหน้าตาของ FOP ได้ในเว็บคอนฟิกของ Elastix นะครับ เมนู PBX -> PBX Configuration -> Flash Operator Panel
อาจต้อง Kill โพรเซส Asterisk ถ้าจำเป็น
เมื่อพูดถึงการ Kill ใน Linux จะหมายถึงการใช้คำสั่ง kill เพื่อหยุดการทำงานของโปรแกรมที่ต้องการ บางครั้งเราก็ต้องสั่ง Kill เพราะโปรแกรมมันทำงานเพี้ยน แฮ้งค์ กินเมมโมรี่มาก กินซีพียูมาก อะไรทำนองนี้หล่ะครับ
ในกรณีของ Asterisk บน Elastix ก็เช่นเดียวกัน บางครั้งเราใช้แค่คำสั่ง amportal restart แล้วมันก็ยังไม่ดีขึ้น ก็ต้องลองใช้ amportal stop ก่อนแล้วมาเช็คโพรเซสของ Asterisk (ใช้คำสั่ง ps -ef | grep asterisk) ถ้ามันยังอยู่แสดงว่ามีผิดปกติแล้วหล่ะครับ นี่เป็นสาเหตุที่ทำให้ใช้คำสั่ง amportal restart ใช้ไม่ได้ผล
เราต้อง kill โพรเซสของ Asterisk ออกทั้ง 2 โพรเซสครับ ดังนี้
1. ดูว่า Asterisk มีหมายเลขโพรเซสอะไร ทั้ง 2 บรรทัดเลย เช่นจากรูปก่อนคือ 16425 และ 16432
2. พิมพ์คำสั่ง kill -9 ตามด้วยหมายเลขโพรเซส ทีละโพรเซสนะครับ แล้วกด enter
[root@callcenter ~]# kill -9 16425
[root@callcenter ~]# kill -9 16432
เท่านี้ก็เรียบร้อยครับ จะเช็คอีกทีก็ได้ว่ายังมีค้างอีกหรือไม่
3. ใช้คำสั่งปกติได้แล้วคือ amportal restart หรือไม่ก็ amportal stop และ amortal start
Note! สำหรับอีก 2 โปรแกรมคือ safe_opserver และ op_server.pl นั้นไม่ค่อยมีปัญหาครับ แต่ถ้าเมื่อใดก็ตามที่ใช้ amportal restart แล้วได้รับข้อความแจ้งว่าไม่สามารถปิด FOP ได้ แสดงว่าเราต้อง kill มันด้วยนะครับ
ข้อความที่เกิดขึ้นหลังจากใช้คำสั่ง amportal stop/start
[root@callcenter ~]# amportal stop
STOPPING ASTERISK
STOPPING FOP SERVER
FOP Server Stopped
[root@callcenter ~]# amportal start
SETTING FILE PERMISSIONS
Permissions OK
STARTING ASTERISK
Asterisk Started
STARTING FOP SERVER
FOP Server Started