我每天要运行一个脚本(只在周末),但是我不能使用cron作业.
我正在想一个无限循环,睡24小时,检查是否是一个周末,如果是这样执行脚本.
我目前的实施:
#! /bin/bash while [ true ]; do if [[ $(date +%u) -lt 6 ]]; then ./program else echo Today is a weekend,processing is skipped. Back to sleep. fi sleep 86400 done
我将在下午五点启动这个剧本.
解决方法
在没有每用户crontabs的那一天,我经常在(1)完成这个使用.
#!/bin/sh ... do stuff... at -f /path/to/me 5pm tomorrow
这样你的脚本会运行并安排自己进行下一次调用.
我不认为你可以指定“下个周末”的时间表,所以你只需要重新安排每一天,如果不是一个周末,你的脚本会退出(在安排下一个工作之后).
编辑:或者不是每天调度,找出今天是什么,并适当地安排.例如
day=Saturday if [ $(date +%u) -eq 6 ] ; then day=Sunday ; fi at -f /path/to/me 5pm next $day
如果这个脚本在星期六运行,它会安排下个星期天的下一个运行,否则运行在下个星期六. [$(date%A)= Saturday]可能更可读,但是%A会给出特定于语言环境的字符串,如果您更改语言环境,则可能无法正常工作.