วันนี้ส่งงานไปรันที่คลัสเตอร์ ผ่าน sun grid engine ( SGE ) แต่ว่าโปรแกรมไม่สามารถรันได้ ขึ้นข้อความว่า
Warning: no access to tty (Bad file descriptor).
Thus no job control in this shell.
วิธีการแก้ไข สามารถทำได้โดย เพิ่ม -S /bin/bash ไปที่ท้ายสุดของไฟล์ /opt/gridengine/default/common/sge_request
เสร็จแล้ว สามารถรันได้ตามปกติ ครับ
Credit : list.sdsc.edu
ถ้าผิดพลาดก็ขออภัยด้วย
ผมเดาเอาว่า การเพิ่ม -S /bin/bash ลงไปในแฟ้มนี้ น่าจะเป็นการบังคับให้ทุก script ที่สั่งผ่าน sge มีบรรทัดนี้อยู่
ซึ่งเป็น directive ที่จะบอกให้ SGE รู้ว่า script นี้ใช้ shell อะไร
ผมไม่แน่ใจว่า จะเกิดปัญหาขึ้นหรือไม่ ถ้าผู้ใช้เองเกิดระบุ directive นี้ลง ใน script ตัวเอง แล้วบอกว่าอยากใช้ shell อื่น
ทางแก้ที่ผมเลือกคือ เข้าไปแก้ default shell ของ queue นั้นๆ ให้เป็น bash แทน
โดยใช้คำสั่ง
qconf -mq <queue name>
มันจะเข้า vi ให้อัตโนมัติ แล้วให้แก้ค่า shell ซึ่งจากเครื่องที่ผมใช้ มันจะใช้ค่าเดิมเป็น /bin/csh ให้แก้เป็น /bin/bash
รวมถึงแก้ global configuration ให้ SGE รู้จัก bash โดยเรียกคำสั่ง
qconf -mconf global
จะเห็น list ของ shellให้ เพิ่ม bash เข้าไป
เคยอ่านเจอใน SGE mailling list ครับ