Bash

我希望 bash 腳本僅在我執行時才回顯,如果由 cron 作業執行則不回顯

  • March 6, 2018

如果腳本是由我執行的,我想回顯到終端,或者如果它是通過 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=yes

在你的腳本中

如果

$$ [ “$CRON” = “yes” $$]; 然後 或者只是檢查是否 $ CRON is defined [[ -z " $ 克朗" ]]

引用自:https://serverfault.com/questions/900062