Я хочу вывести эхо на терминал, если скрипт выполняется мной, во плоти, или я хочу вывести эхо в файл журнала, если это выполняется через задание 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
Я переписал вышесказанное, потому что подумал, что это будет более простой способ объяснить это. Это более прямой и понятный пример.
Попробуй это :
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
Как вариант, вы можете установить переменную среды в файле crontab, а затем позволить скрипту проверять наличие переменной. Т.е. в вашем crontab добавить CRON = да
в вашем сценарии
если [["$ CRON" = "да"]]; затем
или просто проверьте, определено ли значение $ CRON [[-z "$ CRON"]]
Супер простой способ: просто создайте файл раньше.
# 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"