我有一个用go-rod编写的程序,它启动了一个无头铬,并连接到调试端口以执行一些与web相关的操作。使用模式相当于python中的selenium或puppeter。
当我在ssh会话中从命令行运行程序时,它会起作用。
我现在需要每晚执行这个程序。不幸的是,将其作为cron作业运行不起作用未能获取调试url:/system.slice/cron.service不是快照组
.
snap提供的安全性是一件好事,我想保护它。
如何使用快照在夜间运行我的程序?
编辑:根据noisefloor的建议,我设置了一个systemd计时器来作为用户服务运行我的程序。它可以工作,即使我注销并重新启动后也是如此。这是食谱。
mkdir-p~/.config/systemd/user
loginectl启用程序<用户>
:告诉systemd,<user>中存储了一些systemd服务和计时器~/.config/systemd/user
.<user>将替换为您的帐户名。
创建服务文件~/.config/systemd/user/myservice.service
包含
[单位]Description=我的服务[服务]ExecStart=<cmd args>[安装]WantedBy=多用户目标
- 创建名为
~/.config/systemd/user/myservice.timer
包含
[单位]Description=我的服务计时器[计时器]#每天早上05:00:00开始我的服务OnCalendar=*-*-*5:00:00持久=真[安装]WantedBy=计时器目标
systemctl—用户启动myservice.timer
检查计时器是否正在运行:systemctl—用户列表计时器
重新启动后启用计时器systemctl—用户启用myservice.timer
这比添加crontab行要繁琐一些,但我们受益于cgroup沙箱保护。
注意:systemctl命令不必以sudo或root身份执行。