ฉันสร้างสคริปต์ที่ประมวลผลไฟล์ในลูปโดยใช้การเรียกใช้โปรเซส ฉันตรวจสอบรหัสออกของการโทรที่ได้รับการกล่าวถึงเพื่อดูว่าฉันควรย้ายไฟล์ (ตามความสำเร็จ) หรือไม่ปัญหาคือเมื่อกระบวนการล้มเหลวโดยมีข้อยกเว้นจะไม่มีการออก ฉันจะตรวจสอบข้อยกเว้นที่เกิดขึ้นได้อย่างไรฉันจึงสามารถย้ายสคริปต์ไปยังไฟล์ถัดไปได้
ส่วนที่เกี่ยวข้องของสคริปต์
# Stream data
sstableloader -d $3 $tablepathfull
# On success, move data to target dir
if [[ $? != 0 ]]; then
echo "Error: Table failed - $tablepathfull"
else
echo "Table OK - $tablepathfull"
trgtdir="$2/$hostname/$keyspacename/$typename/$timestamp/$keyspacename/$tablename"
mkdir -p $trgtdir
mv $tablepathfull/* $trgtdir
rmdir $tablepathfull
fi
หากไม่มีวิธี 'เป็นทางการ' เป็นไปได้หรือไม่ที่จะจับเอาท์พุท (ดูด้านล่าง) ของการเรียกใช้กระบวนการและฆ่ากระบวนการเพียงครั้งเดียว / ถ้ามีข้อยกเว้นเกิดขึ้น?
เอาต์พุตข้อยกเว้น
Exception in thread "STREAM-OUT-/XX.XX.XXX.88" Exception in thread "STREAM-OUT-/XX.XX.XXX.92" java.lang.NullPointerException
at org.apache.cassandra.streaming.ConnectionHandler$MessageHandler.signalCloseDone(ConnectionHandler.java:249)
at org.apache.cassandra.streaming.ConnectionHandler$OutgoingMessageHandler.run(ConnectionHandler.java:375)
at java.lang.Thread.run(Thread.java:744)
java.lang.NullPointerException
at org.apache.cassandra.streaming.ConnectionHandler$MessageHandler.signalCloseDone(ConnectionHandler.java:249)
at org.apache.cassandra.streaming.ConnectionHandler$OutgoingMessageHandler.run(ConnectionHandler.java:375)
at java.lang.Thread.run(Thread.java:744)
ข้อยกเว้นนั้นควรเป็นเทอร์มินัล โปรดรายงานสิ่งนี้ว่าเป็นข้อผิดพลาด
—
Dan D.
@DanD เพื่อใครและที่ไหน และเป็นไปได้หรือไม่ว่าแอปพลิเคชัน java ที่ฉันโทรพิมพ์นั้นมีข้อยกเว้น แต่ไม่ออก ฟังดูน่าจะเป็นไปได้สำหรับฉัน ...
—
natli
@Radoo ฉันสามารถดูได้ใน htop
—
natli