odoo服务相关shell脚本

odoo服务相关shell脚本

odoo服务相关shell脚本_第1张图片

1 确定系统不会自动休眠

ubuntu 22.04登陆之后,如果系统较长时间不操作,系统就自动休眠了。

如果重启之后,从来都没有登陆,就不会出现系统自动休眠的情况。

观察系统日志,发现类似如下的内容:

724 21:23:24 odoo-pc kernel: r8169 0000:03:00.0 enp3s0: Link is Down
724 21:23:24 odoo-pc systemd[1]: Reached target Sleep.
724 21:23:24 odoo-pc systemd[1]: Starting Record successful boot for GRUB...
724 21:23:24 odoo-pc systemd[1]: Starting System Suspend...
724 21:23:24 odoo-pc systemd[1]: grub-common.service: Deactivated successful>
724 21:23:24 odoo-pc systemd[1]: Finished Record successful boot for GRUB.
724 21:23:24 odoo-pc systemd[1]: Starting GRUB failed boot detection...
724 21:23:24 odoo-pc systemd[1]: grub-initrd-fallback.service: Deactivated s>
724 21:23:24 odoo-pc systemd[1]: Finished GRUB failed boot detection.
724 21:23:24 odoo-pc systemd-sleep[119211]: Entering sleep state 'suspend'...
724 21:23:24 odoo-pc kernel: PM: suspend entry (deep)
724 21:23:24 odoo-pc kernel: Filesystems sync: 0.002 seconds

发现是触发了systemd的自动休眠功能,检查休眠功能的状态以及历史记录,如下:

odoo@odoo-pc:~/Desktop$ service status sleep.target
status: unrecognized service
odoo@odoo-pc:~/Desktop$ systemctl status sleep.target
○ sleep.target - Sleep
     Loaded: loaded (/lib/systemd/system/sleep.target; static)
     Active: inactive (dead) since Tue 2023-07-25 07:02:18 CST; 9min ago
       Docs: man:systemd.special(7)

724 21:23:24 odoo-pc systemd[1]: Reached target Sleep.
725 07:02:18 odoo-pc systemd[1]: Stopped target Sleep.

普通桌面应用这个情况问题不大,但是如果是作为服务器使用的时候,我们一般远程访问系统,这个功能就会导致我们无法远程控制服务器,因此我们需要关闭这个功能。

执行关闭休眠功能的命令,如下:

odoo@odoo-pc:~/Desktop$ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
[sudo] odoo 的密码: 
Created symlink /etc/systemd/system/sleep.target → /dev/null.
Created symlink /etc/systemd/system/suspend.target → /dev/null.
Created symlink /etc/systemd/system/hibernate.target → /dev/null.
Created symlink /etc/systemd/system/hybrid-sleep.target → /dev/null.

再次观察系统休眠状态,如下:

odoo@odoo-pc:~/Desktop$ systemctl status sleep.target
○ sleep.target
     Loaded: masked (Reason: Unit sleep.target is masked.)
     Active: inactive (dead) since Tue 2023-07-25 07:02:18 CST; 38min ago

发现自动休眠功能已经被关闭,不会出现自动休眠导致远程控制无法访问的情况了。

但是

另外一台跑odoo服务的测试机从来没有半夜休眠的情况,配置跟这台机器是一样的,不清楚为什么。 那台测试机,晚上也有人在使用odoo服务,可能这根ubuntu的休眠机制有关系。

2 开机自动启动

系统开机后会自动执行rc.local服务,rc.local服务的文件就是 /etc/rc.local,默认这个文件是没有的,需要手工创建

# 新建/etc/rc.local
chmod +x /etc/rc.local

rc.local

#!/bin/bash
# 注意命令最后面一定要加 & 放入后台运行,不然系统会卡住
/home/odoo/bin/start_odoo.sh &

start_odoo.sh

#!/bin/bash

#启动odoo的脚本
# fatux
# [email protected]
cd /home/odoo/odoo16
# 激活虚拟环境
source ./venv/bin/activate
# 启动odoo
python odoo-bin -c odoo.conf

odoo.conf 跟日志有关的配置

log_level = debug      # 设置日志级别
logfile = odoo.log     # 日志输出到文件中
logrotate=True         # 日志值保留30天
log_db=True            # 在数据库保存日志  ir_logging
log_db_level=warning   #  数据库保存日志的级别

3 检测服务是否正常,如果服务停了,自动拉起来

check_odoo.sh crontab 设置成1分钟执行一次, 其实这段脚本可用代替开机自动启动脚本了,而且还是用odoo用户执行的,安全性也好

check_odoo.sh

#!/bin/bash
str=$(ps -aux | grep odoo-bin | grep -v grep)
if [ -z "$str" ]; then
	nohup /home/odoo/odoo16/bin/start_odoo.sh &
fi
crontab -e
* * * * * sh /home/odoo/bin/check_odoo.sh  >> /home/odoo/bin/check_odoo.log 2>&1 

3 自动备份并清理过期文件

如果数据库比较小,可用通过这种方式进行定期备份。

#!/bin/bash
BACKUP_PATH=/home/odoo/backup/
DB_NAME=odoo
TIME=`date  +%Y%m%d%H%M%S`
FileName="$BACKUP_PATH$DB_NAME.$TIME"
echo "--------------------------------------------------------"
echo $FileName

curl -X POST -F 'master_pwd=Hx@admin' -F 'name=odoo' -F 'backup_format=zip' -o $FileName  http://192.168.1.190:9001/web/database/backup

echo "备份odoo数据库成功"
echo "清理过期文件"
cd $BACDUP_PATH
find . -ctime +30 -type f | xargs rm -rf
echo "清理文件成功"
exit 0
echo "--------------------------------------------------------"

定时任务,每天凌晨2点30分备份

crontab -e
30 2 * * * sh /home/odoo/bin/backup_odoo.sh  >> /home/odoo/bin/backup_odoo.log 2>&1 

你可能感兴趣的:(Odoo16,odoo)