有没有办法在重新启动时重新启动 acpid?

有没有办法在重新启动时重新启动 acpid?

我已经安装了一个名为 的软件包thinkpad-scripts。简而言之,它是一堆脚本,用于激活 Linux 上的 thinkpad 设备上的各种功能,而这些功能在新安装时无法开箱即用。

我已经让脚本可以工作等等,但是每当我重新启动机器时。将笔记本电脑转换为平板电脑模式时,自动旋转功能不起作用。我注意到罪魁祸首与acpid.当我acpid在终端中重新启动时,它再次工作。有没有一种方法可以acpid在重新启动时自动重新启动,这样我就不必一遍又一遍地重复执行此操作?

我正在运行 64 位 Debian

编辑:我尝试制作一个 cronjobcrontab -e

并写在我的文件末尾,在末尾留下换行符

@reboot sh $HOME/acpid_restart.sh

该脚本acpid_restart.sh包括

#!/bin/sh 
systemctl restart acpid

但这仍然失败......

答案1

首先,确保acpid.service实际上是开始在启动期间。主机重新启动后,使用以下命令验证:

# systemctl status acpid.service

应该说startedenabled。如果没有,那么systemctl enable acpid.service可以通过在重新启动时实际启动服务来解决您的问题。

其次,如果服务确实在启动过程中启动,则检查日志以查看是否有问题。您应该已经在输出中看到日志中的一些行systemctl status,然后您可以使用以下命令从该服务获取更多日志:

# journalctl -u acpid.service

您还可以使用以下命令查看自上次重新启动以来的所有日志:

# journalctl -b

这可能会显示与您遇到的问题相关的其他问题。

如果事实证明acpid.service它实际上是在启动过程中启动的,并且屏幕旋转在重新启动之前不起作用,则很可能它在启动过程中启动得太早,这就是导致它在重新启动之前表现不佳的原因。希望如果是这种情况,日志可能会为您提供更多详细信息,以便您解决该问题。

(如果您通过建议的故障排除发现了一些问题,请发布更新,如果您能更具体地说明您看到的症状,我很乐意提供更多指导。)

最后,使用 cron 来管理 systemd 服务很可能不会真正按预期工作。

如果您确实想强制服务在启动后某个时间重新启动,那么使用 systemd 计时器单元是更好的方法。您可以在启动时禁用该服务并在系统启动一段时间后使用计时器单元实际启动它,或者您可以在启动时保持其启用状态并使用计时器单元触发单独的服务单元(restart-acpid.service也许? )它使用Type=oneshot并执行/usr/bin/systemctl restart acpid.service命令(或包装脚本,其作用基本相同。)

然而,这是相当老套的。因此,我建议您实际上尝试通过找到根本原因来解决真正的问题,而不是投资于如此笨拙的解决方法。

相关内容