ubuntu 22.04登陆之后,如果系统较长时间不操作,系统就自动休眠了。
如果重启之后,从来都没有登陆,就不会出现系统自动休眠的情况。
观察系统日志,发现类似如下的内容:
7月 24 21:23:24 odoo-pc kernel: r8169 0000:03:00.0 enp3s0: Link is Down
7月 24 21:23:24 odoo-pc systemd[1]: Reached target Sleep.
7月 24 21:23:24 odoo-pc systemd[1]: Starting Record successful boot for GRUB...
7月 24 21:23:24 odoo-pc systemd[1]: Starting System Suspend...
7月 24 21:23:24 odoo-pc systemd[1]: grub-common.service: Deactivated successful>
7月 24 21:23:24 odoo-pc systemd[1]: Finished Record successful boot for GRUB.
7月 24 21:23:24 odoo-pc systemd[1]: Starting GRUB failed boot detection...
7月 24 21:23:24 odoo-pc systemd[1]: grub-initrd-fallback.service: Deactivated s>
7月 24 21:23:24 odoo-pc systemd[1]: Finished GRUB failed boot detection.
7月 24 21:23:24 odoo-pc systemd-sleep[119211]: Entering sleep state 'suspend'...
7月 24 21:23:24 odoo-pc kernel: PM: suspend entry (deep)
7月 24 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)
7月 24 21:23:24 odoo-pc systemd[1]: Reached target Sleep.
7月 25 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的休眠机制有关系。
系统开机后会自动执行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 # 数据库保存日志的级别
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
如果数据库比较小,可用通过这种方式进行定期备份。
#!/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