定期的にファイアウォールを再起動する必要があるため、bashファイルを作成してCRONテーブルに追加しました。
ターミナルで次のコマンドを使用してファイアウォールを再起動します。
service firewall restart
しかし、私のbashファイル()myscript.sh
に次のような行がある場合:
#!/bin/sh
service firewall restart
ターミナルで(ルートとして)実行します.
sh myscript.sh
ファイアウォールは再起動されません。
違いは何ですか? Bashファイルからサービスを再起動するには?
編集する
私も次のコマンドを試しました。
/etc/init.d/firewall stop
/etc/init.d/firewall start
そして
/etc/init.d/firewall restart
また、次のようにファイルを実行してみました。
/bin/sh myscript.sh
それでも動作しません。
編集する 私のbashスクリプトは次のとおりです。
#!/bin/sh
if [ some statement ]; then
/etc/init.d/firewall restart # also tried: eval /etc/init.d/firewall restart
stat /some/file -c %Y > /root/statfile
# if I add any statement here it is being executed, so it is not the fault of incorrect if statement
fi
ベストアンサー1
cron
シェルにランダムにログインする環境とは異なります。ご使用の環境には、ファイアウォールスクリプトに必要ないものがある可能性があります。
を確認する/var/mail
か、メールプールが何であるかを試してください。 Cronは、デフォルトでcrontabが特定のタスクを実行しているユーザーに出力をメールで送信しますが、MTAを構成していない場合、この出力は表示されません。出力結果が明確でない場合は、set -x
スクリプトの先頭に追加するかenv
(引数なしで)コマンドを追加し、出力をシェルで実行したときに同じコマンドの出力と比較します。
他のすべての方法が失敗した場合は、出力を公開していっぱいスクリプト(編集しないでください。すべてが大丈夫だと思うからといって必ずしもそうではありません。情報を公開しないと助けになりません)