如果您拥有服务器或永远不会关闭计算机,使用Cron是不错的,但是如果您的笔记本电脑在确切的一分钟内您设置为运行脚本的时间就睡着了,该怎么办?如果您必须重新启动怎么办?如果您的计算机实际运行,但是您宁愿等到它在运行备份过程或其他密集脚本之前关闭盖子的闲置怎么办?
借助Lazycron,“您的计算机最终将遍及它。” Lazycron采取了更加缺乏的生活方法。当然,这将完成工作,但是没有急事。您没有设置时间运行,而是设置范围。更好的是,每当脚本运行并遇到错误时,LC都会弹出一条消息,让您知道某些问题出了问题,而不仅仅是默默失败。
您可以使用要运行的程序编辑Schedule.txt文件:
“时间”是窗口允许脚本运行的时候。您可以将多个时间窗口与逗号分开。例如: 1-3am, 2pm-4pm, 11:30-11:34玩这些数字;该系统非常灵活。运行我的脚本时,它将向您显示每个程序可用的下一个时间窗口,因此您可以确认它正在执行您的期望。
例如,假设您有一个备份脚本,仅在计算机在线时才想运行,但不在使用中。在下面的schedule.txt中,我将时间范围设置为晚上8:30至凌晨3点之间。频率设置为* ,这意味着在此期间只能运行一次。日期设置为sat-sun这意味着它将仅在周六和周日运行。需求字段说,计算机必须至少闲置5分钟,并插入并在线插入。否则,脚本将等到满足这些条件。
您还可以设置各种要求,例如:计算机必须在一定时间内闲置,忙碌,插入,在线,盖子必须关闭,等等。请参阅[需求](#要求)部分中的完整选项。
#Time Frequency Date Requirements Script Path
8:30pm-3am * sat-sun idle 5m, plugged, online daily_backup_script_path_goes_here.sh
* 1h * busy 10, idle 5 my_hourly_backup_script.py
2pm-8pm 1h elapsed * online a_daily_script.py
-5pm * m-f random 8h A_surprise_everyday.py
4-6pm * 2nd Thursday busy 5m mpg123 'Libera - Going Home.mp3'
* * March 14 * pi_day.py
* * 1st-2nd * zenity --info --text="Monthly todo"
* * * start 1 run_at_startup.sh
允许脚本运行的窗口。
- `1-3am, 2pm - 4pm` (You can have multiple windows separated with commas.)
- `-5pm` will run until 5pm everyday
- A `*` will run 24 hours a day.
Play around with these numbers, the system is very flexible. When you run my script it will show you the next time window available for each program.
程序多久运行一次。 m =分钟,h =小时等。我的脚本应在这里允许大多数自然语言输入。
- 1h will run every hour
- 1h elapsed will only count time when the computer is actively in use by user.
- A `0` will run as often as possible.
- A `*` will only run once a day.
通常将其设置为限制在一周的某些日子里运行的范围:示例:MF,每2个星期四
- `m-f` will run monday through friday
- `2nd Thursday` will run every 2nd thursday of the month
- `1-2nd` will run on the first two days of the month
- A `*` will run on any day of the year.
逗号分开的脚本所需的其他要求。与时间,频率和日期一样,允许大多数自然语言输入。可用的如下:
| 时间要求 | |
idle | 计算机闲置的时间。 |
busy | 计算机一直忙于 |
elapsed | 总时间计算机必须使用。 |
today | 今天的总时间必须用于计算机。 |
| 计算机状态要求 | |
online | 我们有互联网访问吗? |
closed/open | 盖子必须关闭。 |
(un)plugged | 必须附着电源线。 |
lowbatt | 如果电池百分比低于一定百分比,则运行。 |
minbatt | 如果电池百分比高于一定百分比,则运行。 |
disk | 以KB/S表示的最大电流磁盘使用启动过程 |
cpu | 最大电流CPU用法启动过程,表示为CPU组合功率的百分比。 |
network | 最大当前网络用法启动过程,表示为kb/s |
ssid | 检查在运行前查看WiFi网络名称是否匹配。 |
| 何时何地多久 | |
start | 在启动时只运行很多次。 0 =无限 |
skip | 跳过在启动时运行此过程X时间。 |
max | 运行脚本的最多次数。 |
reps | 每天或每个时间窗口仅运行很多次。 |
delay | 启动脚本之前延迟 |
suspend | 在暂停上运行脚本(如果用脚本触发 - iDle选项) |
wake | 暂停后醒来运行脚本 |
random | 脚本将随机运行 示例:随机8H(平均)每8小时运行一次。 有时候它可能会运行5次以上,而其他日子一点也不是。 这就是随机性的工作方式。 |
| 循环 | |
loop | 在脚本结束时多次运行脚本。循环0 =永远循环。不计入代表。 |
retry | 在失败时重试了这么多次。不计入代表。 |
loopdelay | 延迟循环或重试后很长时间。默认值= 60秒(如果未设置)。 |
delaymult | 每个循环后乘以延迟。默认为2(重试模式下每个环的双重延迟) |
| 环境 | |
nice | 以Unix良好价值启动脚本。更高的值对其他过程更好 |
nologs | 删除日志如果脚本返回代码0 (都可以) |
noerrs | 不要警报任何脚本错误 |
localdir | 从其所在的同一目录中运行脚本。 |
timeout | 是时候让脚本在杀死它之前运行了。 |
environs | 开始之前设置环境变量。 格式: environs VAL1=TEXT $ VAL2=TEXT ($) |
shell | 设置subprocess.run(shell=True)允许访问命令中的高级外壳功能,但被认为是安全风险。 |
提醒:使用*用于您不需要填写的字段。所有5个字段必须至少包含1个字符。
需要xprintidle才能使计算机数量闲置。
使用系统监视实用程序作为cpu , network或disk标志;请安装psutil : python3 -m pip install psutil
不确定您的日程安排是否正常工作?使用 - 测试选项运行程序,或者只是在每个脚本路径之前放一个##以显示其将要做什么。日志保留在 /tmp /lazycron_logs中
--idle (minutes) - 插入了很多分钟后,就可以入睡。 --idlebatt (minutes) - 在电池电量上这么多分钟后入睡。
suspend选项的程序添加到Requirements列表中,以便在暂停之前运行它们。 -LC在运行悬挂程序后将等待1个周期,然后才能使计算机入睡。如果计算机在此期间显示活动,则睡眠将被取消。 我的脚本每天只运行一次!
0而不是*Xprintidle无法开放外交官
crontab或其他非GUI终端启动Lazycron,则必须先导出显示。例如,运行export DISPLAY=:0ssh上运行,请确保使用-X标志附加到会话: ssh -X还设置X11转发, X11Forwarding yes /etc/ssh/sshd_config和RESTART SSH。如果程序失败,我如何在桌面上获取消息?
从PIP安装PYQT6 PYTHON模块(首选): sudo pip install PyQt6
或安装第三方应用程序: zenity sudo apt install zenity
数字列表是什么意思是每次以--verbose = 2 mode?
这是跑步的历史。我发现没有记录UNIX时间戳,而是发现自日志启动以来的数字秒数更紧凑。
在日志开始时,将这些数字添加到时间戳中,以获取每个程序启动时的确切unix时间戳。
将来可以实施的想法。如果您或其他想法对您感兴趣,则提交错误报告:
布尔逻辑要求: idle 2m OR today 3h
AND 。MAC / Windows支持
新需求字段,让我知道您想看什么!