1
25
你可以试试“tty”看看它是否由终端运行。这不会告诉您它是由cron专门运行的,但是您可以告诉它是否“不是作为提示的用户”。 你也可以得到你的家长PID,并跟踪它在树上寻找cron,尽管这有点笨手笨脚。 |
2
9
为什么不使用命令行参数来测试-t或cron的-c。 或者更好的是: -电子邮箱:email@address.com 如果未指定,请不要发送电子邮件。 |
3
8
以下是两个不同的选项:
|
4
7
我也有类似的问题。我通过检查stdout是否是tty解决了这个问题。这是检查脚本是否以交互模式运行:
我是从以下地方得到的: How to detect if my shell script is running through a pipe? 如果文件描述符打开并引用终端,-t测试返回true。1是STDUT。 |
5
6
我知道这个问题很古老,但我刚刚遇到了同样的问题。这是我的解决方案:
然后测试
与@eruciform提到的想法相同-在进程树中跟踪PID检查cron。 注意:此解决方案仅适用于cron,与其他一些解决方案不同,这些解决方案在脚本非交互运行的任何时候都有效。 |
6
4
对我来说有效的是检查
|
7
4
我想对这个投票率很高的问题提出一个新的答案。这仅适用于具有
总结:与systemd一起使用时,
使用环境变量的优势:
TTY测试的优势:
与检查流程树相比的优势:
|
8
0
我也喜欢好未来的想法,但也看到了不确定回报的风险。我最后得到了一个稍微修改过的版本,在我看来,它的工作非常顺利:
所以你可以随时检查$cron是1还是0。 |
Anonymous23392937 · 在IST时区的雪花中创建任务 2 年前 |
zewicz · 如何在每天的最后一分钟运行cron任务? 2 年前 |
Kiow · laravel 5.5 forge任务调度cron作业 6 年前 |
Alshira · Cron将任务安排在小时范围内 6 年前 |
aussiedan · Cron作业未每5秒刷新一次页面 6 年前 |