2015-10-26 13 views
5

Linuxシェルスクリプトがユーザーまたはcronジョブによって実行されているかどうかを確認することはできますか?Linuxシェルスクリプトがcronジョブで実行されているかどうか確認するには?

「はい」の場合、シェルスクリプトがcronジョブで実行されているかどうかを確認するにはどうすればよいですか?

スクリプトで、ユーザーが実行したようなメッセージを返す機能を実装したいとします。たとえば、次のように指定します。

+0

環境変数を使用しますか? '' * * * * * CRON_FIRED = true/path/to/myscript'ですが、シンタックスは[cron実装の対象](http://stackoverflow.com/a/10657111/2908724)であり、 。 – bishop

答えて

6

オプションは、スクリプトがttyに接続されているかどうかをテストすることです。

#!/bin/sh 

if [ -t 0 ]; then 
    echo "I'm on a TTY, this is interactive." 
else 
    logger "My output may get emailed, or may not. Let's log things instead." 
fi 

at(1)によって発射仕事もない、具体的にcronによるものの、TTYなしで実行されていることに注意してください。

これはPOSIXであり、Linux(またはbash)固有ではありません。

+0

Thxは、解決策のようです。私はいつも忘れています。ここでは、-n、-x、-fのような利用可能な 'if'テストパラメータのリストと、あなたが使った-tのリストを見つけることができます。このリストはどこにありますか?私はちょうど '-t'が意味することを何と読んでいますか? POSIXは、それがすべてのLinux Distributationで動作することを意味します。 – user2966991

+1

@ user2966991これはhttp://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.htmlまたは 'man 1p test' –

+1

@ user2966991です。この場合、POSIXはPOSIX準拠のシェルで動作することを意味します。このようなシェルはWindowsでも見つけることができ、技術的にはPOSIXシェルなしでLinuxディストリビューションを作ることができます。 –

関連する問題