รองรับการอัพเดด แบบชื่อโมดูลที่ต้องการอัพเดด หรือ ถ้าไม่ระบุจะอัพเดดให้ทุกโมดูล
ระบบจะ stop Service หลัก แล้วทำงาน เมื่ออัพเดดเรียบร้อย จะ start service odoo หลักกลับขึ้นมาให้ใหม่
รองรับการเก็บ logs ข้อมุลในการทำงานไว้ตรวจสอบภายหลังได้
ตัวอย่างโค้ด
โค้ด: เลือกทั้งหมด
upgrade_modules.sh
โค้ด: เลือกทั้งหมด
#!/bin/bash
# รายชื่อฐานข้อมูลที่ต้องการอัปเดต
databases=("db1" "db2" "db3") # เพิ่มชื่อฐานข้อมูลทั้งหมดที่ต้องการอัปเดต
# ไดเรกทอรี Odoo และไฟล์การตั้งค่า
config_file="/etc/odoo-server.conf"
odoo_bin="/odoo/odoo-server/odoo-bin"
log_dir="/tmp"
# ตรวจสอบว่ามีการระบุชื่อโมดูลหรือไม่
if [ -z "$1" ]; then
module_option="-u all"
echo "Updating all modules for all databases"
else
module_option="-u $1"
echo "Updating module $1 for all databases"
fi
# หยุดบริการ Odoo ก่อนอัปเดตโมดูล
echo "Stopping Odoo service..."
sudo service odoo-server stop
# วนลูปผ่านแต่ละฐานข้อมูลและอัปเดตโมดูล
for db in "${databases[@]}"
do
echo "Updating for database $db"
log_file="$log_dir/update_$db.log"
sudo -u odoo python3 $odoo_bin -c $config_file -d $db $module_option --log-level=debug &> $log_file &
pid=$!
echo "Started process $pid for database $db"
# รอให้กระบวนการเสร็จสิ้นโดยการตรวจสอบ log
while kill -0 $pid 2> /dev/null; do
if grep -q "INFO ? odoo.modules.loading: loading 1 modules..." $log_file; then
echo "Update for database $db completed successfully."
sudo kill -9 $pid
break
fi
sleep 5
done
# ตรวจสอบสถานะการอัปเดต
if grep -q "INFO ? odoo.modules.loading: loading 1 modules..." $log_file; then
echo "Update for database $db completed successfully."
else
echo "Update for database $db failed." >&2
sudo service odoo-server start
exit 1
fi
# ค้นหาและฆ่ากระบวนการที่ยังค้างอยู่
pids=$(pgrep -f "python3 $odoo_bin -c $config_file -d $db")
if [ ! -z "$pids" ]; then
echo "Killing processes: $pids"
sudo kill -9 $pids
fi
done
# เริ่มบริการ Odoo หลังอัปเดตโมดูลเสร็จสิ้น
echo "Starting Odoo service..."
sudo service odoo-server start
echo "Update completed for all databases."
viewforum.php?f=238
สำหรับสมาชิกพิเศษของ mindphp.com เท่านั้น