每次笔记本电脑从休眠/睡眠状态唤醒以及启动时,我都需要在某个页面上打开浏览器。
我已经在文件夹中创建了一个脚本 wakeUp.sh,/lib/systemd/system-sleep/
以chmod 777 /lib/systemd/system-sleep/wakeUp.sh
确保授予该文件所有权限。
现在脚本本身(我尝试在关闭笔记本电脑盖后让浏览器打开页面[睡眠唤醒]):
#!/bin/sh
echo "$@" > /tmp/wakeUpParams.txt
case $1/$2 in
post|*)
chromium-browser --no-sandbox http://google.com 1>/home/liza/out.txt 2>/home/liza/err.txt
echo "$@" > /tmp/AfterBrowserLaunch.txt
;;
esac
在脚本中,我将传入参数的输出保存到一个/tmp
文件夹中,关闭/打开盖子后,我在 txt 文件中找到这些参数:
post suspend
因此参数 $1 = post 且 $2 = suspend
如果我从终端运行脚本:
sudo ./wakeUp.sh
或者
sudo ./wakeUp.sh post suspend
它成功运行。因此它执行打开浏览器的那一行。
如果我关闭/打开盖子,wakeUpParams.txt 中的参数仍然存在post suspend
并且该echo "$@" > /tmp/AfterBrowserLaunch.txt
行也会执行,但浏览器仍然不会启动。
现在来说说错误:
当我通过终端执行脚本时浏览器启动了,但是 err.txt 文件中出现错误:
Home directory not accessible: Permission denied
[13870:13961:0316/181921.003202:ERROR:bus.cc(394)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
(chromium-browser:13870): LIBDBUSMENU-GLIB-WARNING **: Unable to get session bus: Unknown or unsupported transport 'disabled' for address 'disabled:'
[13870:13870:0316/181922.813336:ERROR:gpu_process_transport_factory.cc(1009)] Lost UI shared context.
[13968:14061:0316/181923.018813:ERROR:cmd_buffer_helper.cc(158)] ContextResult::kFatalFailure: CommandBufferHelper::AllocateRingBuffer() failed
out.txt 是空的。
当盖子关闭/打开时:
- out.txt-空
- err.txt - 空(为什么这里没有错误?)
我还使用参数执行,chromium-browswer
因为--no-sandbox
由于chromium-browser --no-sandbox
某些安全问题,如果没有这个参数,它就无法从终端启动。这是正常的启动方式吗?因为浏览器在黄色消息弹出中说:“您正在使用不受支持的命令行标志:--no-sandbox。稳定性和安全性将受到影响。”这是chromium-browser
从命令行执行的最佳方式吗?
更新 1
我换了chromium-browser
一个简单的文本编辑器gedit
,它仍然无法在打开/关闭盖子时启动 Gedit,而终端脚本运行时没有问题...所以我认为这不是 Chromium 的问题...
更新 2
开始明白从 systemd 启动 GUI 是个坏主意。请参阅使用 systemd 在启动时启动 Chromium - Unix 和 Linux