ฉันมีสคริปต์จ้องจับผิดที่เรียกใช้แอปพลิเคชันที่อยู่ในไฟล์ ฉันต้องการเรียกใช้แอปพลิเคชันตามที่ป้อนในไฟล์นั้น ขณะนี้ฉันแค่วนซ้ำไฟล์และเรียกใช้ในพื้นหลังหากไม่มี pid เชื่อมโยงกับแอพเหล่านั้น ฉันเพียงแค่เรียกใช้แอพด้วย (list_Entry &) เพื่ออนุญาตอาร์กิวเมนต์ทั้งหมดที่แอพอาจมีและเปลี่ยนเส้นทางของ I/O เหมือนเดิม ในขณะที่อาร์กิวเมนต์ทำงานอย่างถูกต้อง แต่มันไม่ทำงานสำหรับ listEntry ที่ดูเหมือน "my_app >> /tmp/mylog.txt 2>&1" อาร์กิวเมนต์การเปลี่ยนเส้นทางไม่ได้สร้าง /tmp/mylog แต่ stdout จะถูกส่งไปยังสคริปต์ของฉันแทน . ฉันจะป้องกันไม่ให้สิ่งนี้เกิดขึ้นได้อย่างไร
ในขณะที่จริง
ทำ
ทดสอบ /mnt/appsList && {
อินพุต="/mnt/appsList"
ในขณะที่ IFS= read -r บรรทัด
ทำ
ถ้า echo $line | grep -q "^[a-z/(]"; แล้ว
app_base=$(ชื่อฐาน `echo "$line"|cut -f1 -d ' '|tr -d [:space:]`)
#echo "กำลังทดสอบสถานะการทำงานสำหรับ $app_base"
pid_app=$(pgrep -f $app_base)
# echo "`date` : pid ของ $app_base คือ $pid_app" | ที -a $_SYS_LOG_DIR/system_log
ถ้า [ -z "$pid_app" ];แล้ว
echo "`date` : กำลังเรียกใช้ $line " | ที -a $_SYS_LOG_DIR/system_log
(บรรทัด $) &
นอน10
ไฟ
ไฟ
เสร็จสิ้น < "อินพุต $"
}
นอน5
เสร็จแล้ว
ขอบคุณ
รัตนิน