以下は、サーバーyの状態を見つけるために異なるxで書かれたシェルスクリプトです。 (サーバーyにはメールを受信する機能がないので書いていません)
#!/bin/bash
target=10.9.34.52
count=$( ping -c 5 $target | grep icmp* | wc -l )
if [ $count -eq 0 ]
then
echo "The Tomcat Dev server GMP_Dev_Tomcat_cvgrhegmpd003 with ip address 10.9.34.52 is DOWN Please check your server ASAP" | mail -s " Dev Tomcat Server Status" [email protected]
else
echo "The Tomcat Dev server GMP_Dev_Tomcat_cvgrhegmpd003 with ip address 10.9.34.52 is UP and WORKING"
fi
いかなる通知も受け取りません。shell
1分ごとに実行されるスクリプトを追加しました。crontab -e
ただし、スクリプトを実行すると./scriptname.sh
メールが届きます(サーバーの起動時に確認中です)。
答え1
Joelが述べたように、シェルで実行されているクローンが失敗した場合、通常は環境問題です。
>> /home/myuser/myscript.log
cronでcron行の末尾に追加し、cronが実行されたらファイルを読み込んでスクリプト出力を記録します。
似たような項目がたくさんあります。-bash: ping: command not found
この場合、スクリプトでは絶対パスを使用する必要があります(例:/bin/ping
代わりにping
)。これを使用して、which [command]
コマンドの絶対パスを見つけることができます。