如果脚本由我亲自执行,我想将其回显到终端;或者,如果脚本是通过 cron 作业执行的,我想将其回显到日志文件。
Ubuntu 16.04
例子:
#!/bin/bash
if [ ***** ]; then
echo "You executed this script just now !";
else
echo "You were executed by the server cron at ${date}" >> example.log
fi
我重写了上面的内容,因为我认为这会是一种更简单的解释方式。这是一个更直接、更清晰的例子。
答案1
尝试这个 :
if [[ -t 0 ]]; then
echo "executed from terminal"
elif [[ $(< /proc/$PPID/comm) == cron* ]]; then
echo "executed by cron"
else
echo "executed outside of a terminal"
fi
答案2
您可以选择在 crontab 文件中设置环境变量,然后让脚本检查该变量。例如,在 crontab 中添加 CRON=yes
在你的脚本中
如果 [[ "$CRON" = "yes" ]]; 那么
或者简单地检查 $CRON 是否定义 [[ -z "$CRON" ]]
答案3
超级简单的方法:只需先创建一个文件。
# m h dom mon dow command
* * * * * /usr/bin/touch /tmp/FOO && /your_script/
[ -f /tmp/FOO ] && echo "Executed by crontab"; rm /tmp/FOO || echo "I'm physically executing"