Wax*_*ead 3 debian hibernate systemd
我编写了一个简单的 zram.service 文件,它将为我设置压缩交换空间,以避免过多占用我的磁盘。zram 比其他交换设备具有更高的优先级。
问题是,当我尝试休眠系统时,它会将系统状态写入交换,在本例中是 zram,并且由于断电时内存内容会丢失,这当然不起作用。
解决方案是在执行systemctl hibernate之前停止我的zram.service,并在系统备份时再次启动它。
据我发现 systemctl hibernate 启动 /lib/systemd/system/systemd-hibernate.service 。我已将此服务复制到 /etc/systemd/system/ 来覆盖它,并且我可能可以通过使用 'ExecStartPost=' 节来使其工作,但我认为当另一个 systemd 服务启动时,必须有更好的方法来停止它开始,反之亦然。
编辑:对于那些感兴趣的人来说,Debian 系统上的工作 zram 服务
[Unit]
Description=ZRAM swap
Conflicts=hibernate.service
[Service]
Environment=ZRAM_MEM=1G
Environment=ZRAM_CMPALGO=lz4
Environment=ZRAM_CMPSTREAMS=2
Type=oneshot
User=root
ExecStartPre=/bin/sh -c "/sbin/modprobe zram num_devices=1"
ExecStartPre=/bin/sh -c "echo $ZRAM_CMPALGO >/sys/block/zram0/comp_algorithm"
ExecStartPre=/bin/sh -c "echo $ZRAM_CMPSTREAMS >/sys/block/zram0/max_comp_streams"
ExecStartPre=/bin/sh -c "echo $ZRAM_MEM > /sys/block/zram0/disksize"
ExecStartPre=/bin/sh -c "/sbin/mkswap /dev/zram0"
ExecStart=/sbin/swapon /dev/zram0 -p 10
ExecStop=/sbin/swapoff /dev/zram0
ExecStop=/bin/echo 1 > /sys/block/zram0/reset
ExecStop=/sbin/rmmod zram
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
小智 6
Conflicts=在 systemd 单元文件中定义。
来自 systemd.unit 联机帮助页:
冲突=
以空格分隔的单位名称列表。配置负面需求依赖性。如果一个单元在另一个单元上有 Conflicts= 设置,则启动前者将停止后者,反之亦然。请注意,此设置独立于 After= 和 Before= 排序依赖关系并与之正交。
如果与单元 B 冲突的单元 A 计划与 B 同时启动,则事务将失败(如果两者都是事务的一部分)或修改为固定(如果其中一个或两个都需要)工作不是交易的必需部分)。在后一种情况下,不需要的作业将被删除,或者如果两者都不需要,则将启动冲突的单元并停止冲突的单元。
| 归档时间: |
|
| 查看次数: |
4743 次 |
| 最近记录: |