bash: ลองทำ cron ตรวจ apt-proxy
Submitted by wd on Fri, 2008-03-07 16:25
แพกเกจ apt-proxy เป็นแพกเกจที่ใช้เป็นคลังเก็บแพกเกจที่เครือข่ายเราใช้ประจำ ใช้ง่ายและสะดวก แต่ชอบตายบ่อย
จะเข้าไปรื้อดูการทำงาน ก็ยากเกินความสามารถ เลยลองเขียนเป็น cron แก้ปัญหาเฉพาะหน้าไปก่อน
การทำงานของสคริปต์ก็ไม่มีอะไรมาก แค่ตรวจว่าการใช้คำสั่ง aptitude update นานเกิน 60 วินาทีหรือไม่ ถ้านานก็ให้เริ่ม apt-proxy ใหม่ แค่นี้เอง
(สามารถปรับช่วงเวลารอที่ตัวแปร
(สามารถปรับช่วงเวลารอที่ตัวแปร
TIME_WAIT
ตามความเร็วของเน็ตที่มีอยู่จริง)
# vi /usr/local/sbin/d.cron-check-apt-proxy
#!/bin/bash
TIME_WAIT='60'
function sub_wait() {
sleep $TIME_WAIT
echo `date +%F-%R-%s`
}
function update_apt_proxy() {
aptitude update
echo `date +%F-%R-%s`
}
T1=`sub_wait` &
T2=`update_apt_proxy` &
wait
if [ "$T1" \< "$T2" ]; then
echo "apt-proxy update longer than $TIME_WAIT seconds, restart apt-proxy."
/etc/init.d/apt-proxy restart
fi
# chmod 755 /usr/local/bin/d.cron-check-apt-proxy
ตั้ง crontab ให้รันทุกชั่วโมง# crontab -e
... #CHECK apt-proxy EVERY 60 MIN 0 * * * * /usr/local/sbin/d.cron-check-apt-proxy ...เสร็จแล้ว ลองใช้ดูก่อน แล้วจะรายงานผลต่อไปตรับ update
- เจอสาเหตุแล้ว มาจากตั้ง squid3 เป็นแบบ transparent ไว้ ทางแก้คือ ยกเลิก transparent หรือไม่ก็ปรับ apt-proxy ให้ไปใช้ http_proxy ที่พอร์ต 8080 (หรือพอร์ตอื่นที่ตั้งไว้ใน squid) เรียบร้อยแล้ว - แต่สคริปต์นี้ก็ยังน่าใช้อยู่ดี อาจปรับเป็นทุก 3 ชั่วโมงก็ได้
- Printer-friendly version
- Log in or register to post comments
- 4719 reads
Recent comments