V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  wuyadaxian  ›  全部回复第 2 页 / 共 6 页
回复总数  104
1  2  3  4  5  6  
* * * * * [[ $(($(date +'%s / 60 % 1 '))) -eq 0 ]] && /etc/test.sh
我将%7 改为%1 ,这样理论上每分钟就会运行一次 test.sh 。但是没有运行
@brant2ai 我也可以直接在 tty 中使用这行 command ,但是 cron 里面不会运行
@brant2ai 同样,在 cron 里面* * * * * [[ $(($(date +'%s / 60 % 7 '))) -eq 0 ]] && command 。 [无法运行] ------在 tty 内,[[ $(($(date +'%s / 60 % 7 '))) -eq 0 ]] && command 。 [正常运行]
@brant2ai 另外这个算没用 cron 了吧。
@brant2ai 你可以看看 45 楼和 51 楼,我不确定是不是我环境或者什么问题,在 ubuntu 下无法执行。
@brant2ai bash: syntax error near unexpected token `(' 是我的环境问题吗
@brant2ai 我试试
@brant2ai 要操作外部脚本啊,那就不在讨论范围了。都能用外部脚本了,方法就多了,楼上很多。
@brant2ai 复写的时候是哪段代码或什么外部程序或者谁(真人)来进行。
@mohumohu 我找到一篇文章,https://href.lu/15A 。此文章表示在 macOS 中成功使用了复杂的 command 。但是我在我现在的 linux ubuntu 下没有运行成功。不知道是不是哪里错了,比如需要用引号之类的。
@yankebupt 见 33 ,34 楼,只需要 49 条,还可以设置偏移量。
@lolizeppelin 每隔 7 分钟,执行一次 test 脚本,不管 test 脚本之后的状态。
@mohumohu 我尝试 * * * * * ((($(date +%s) / 60 % 7 == 0)) && /etc/test.sh) 并 [没有运行] 。我已经确认用户拥有 test.sh 的读写运行权限。另外我直接在 tty 里面输入((($(date +%s) / 60 % 7 == 0)) && /etc/test.sh)是 [可以运行] 的。
@mohumohu 后面 command 部分能接这种复杂的命令集吗?我尝试了下 cron 没运行(不知道是不是我的问题),但是直接输入后面的 command 是可以运行的。
@Puteulanus 我们只需要每天穷举 7 条 cron ,每周 7 天穷举 49 条 cron 就能实现。如果需要增加偏移量,只需要更改周的位置即可。
@Puteulanus 等等,我发现一周可以被 7 整除,而且一周这个单位不会被前面 4 个所影响。所以使用最后一个周作为标记来进行穷举即可。
@busier 感谢提醒,收到。确实 sleep 是在调用之后,会累计增加前面一句调用时间。
@Puteulanus 穷举法其实我想过,前面 4 位,分/小时/天/月,每次进位都会出现问题。因为 60 分/24 小时/28 天 or29 天 or30 天 or31 天/12 月 ,以上数字均不能被 7 整除形成循环。全部穷举后如果每年都是 365 天,7 年可以循环一次。但是实际上每 4 年有一次有闰年,也就是每 28 年才能穷举一次所有时间。
@Puteulanus 换天的时候会混乱。按照上面代码,第一天 23:48,23:55 分执行,第二天 00:00,00:07 执行.-------实际第二天应该 00:02,00:09 执行
@xzh920126 都上 sh ,不如直接 sh 内调用,然后 sleep 420 。循环就好。所以只是在讨论。实际用其他脚本语言会更快。
1  2  3  4  5  6  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2975 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 13ms · UTC 12:02 · PVG 20:02 · LAX 05:02 · JFK 08:02
Developed with CodeLauncher
♥ Do have faith in what you're doing.