私はやや敏感なソフトウェアアプリケーションを使用しているので、再起動またはシャットダウン時にソフトウェアが自動的に閉じることを望まない。スクリプトを生成し、/etc/init.d/に配置し、/etc/rc6.dにシンボリックリンクを追加し、名前を「K99_restofname」と指定しました。このスクリプトは、再起動シナリオ以外のテストでうまく機能します。このプロセスを完了するのに約1分かかります。システムが非常に高速にシャットダウンし、スクリプトの実行中に遅延が発生するため、再起動時に実行または機能しないようです。 (私も画面を見ている。)ログにも何も見えない。これは私のスクリプトです。
#!/bin/bash
## # Any subsequent(*) commands which fail will cause the shell script to exit immediately
abort()
{
echo >&2 '
***************
*** ABORTED ***
***************
'
echo "An error occurred. Exiting..." >&2
exit 1
}
trap 'abort' 0
set -e
## Stopping the application services before the system shuts down. This must be done by the application user user.
VAR=`/bin/su -c "/opt/app/bin/command stopall" - user`
echo $VAR
# DONE
trap : 0
echo >&2 '
************
*** DONE ***
************
'
何が起こっているのか、カスタム終了スクリプトを追跡する方法を教えてください。私の目標を達成するためにこれより良い方法はありますか?私のシステムはRHEL 6サーバーです。
答え1
K99をS00_またはmv S01reboot Sxxrebootに変更し、スクリプトS01を作成します。
私がしたことはスクリプトを作成することでした。
#!/bin/bash
echo "Ran S10" >> /var/tmp/done
「S10Test」と呼んでください。
そしてもう一つ:
#!/bin/bash
echo "Ran K10" >> /var/tmp/done
その後、仮想マシンを再起動しました。
/var/tmp/done には「S10」が含まれています。
これを直接テストしてみることもできます。
私が疑うのは、Sスクリプトが実行されることです。入るとランレベル。 Kスクリプトの実行あなたが去るとき。 S01Reboot(元の名前)が再起動されるため、「away」はありません。
(「容疑者」に注意してください)。