วิธีการรีสตาร์ท Asterisk ใน Elastix

Elastix IP Pbx

Moderator: jubjang

วิธีการรีสตาร์ท Asterisk ใน Elastix

โพสต์โดย voip4share » 27 ธ.ค. 2009 11:52

ถ้าหากว่า Asterisk ที่มีอยู่บน Elastix นั้นทำงานเพี้ยนๆไปหล่ะก็ (ยกตัวอย่างเช่นไม่สามารถโทรไปเบอร์ใดเบอร์หนึ่งได้ทั้งๆที่เบอร์นั้นก็ออนไลน์อยู่) ควรจะรีโหลด Asterisk ใหม่ครับ

รีโมทเข้าไปที่ 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

asterisk-processes-small.png
Asterisk Process
asterisk-processes-small.png (86.92 KiB) เปิดดู 5285 ครั้ง


นี้เป็นรายชื่อโปรแกรมที่กำลังรันอยู่บน 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
voip4share
Administrator
 
โพสต์: 656
ลงทะเบียนเมื่อ: 18 พ.ย. 2009 11:26
ที่อยู่: รามคำแหง กรุงเทพฯ

ย้อนกลับไปยัง Elastix - Unified Communications Software

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และ บุคคลทั่วไป 0 ท่าน

cron