コンピュータがシャットダウンして再起動したときにスクリプトを呼び出したいです。同様のコードを書いた
#! /bin/bash
#chkconfig: 0 6 1 1
#description: Description of the script
# processname: killfoo
# this script starts and stops foo
# Some things that run always
LOG_FILE="/tmp/killfoo.log"
log() { while IFS='' read -r line; do echo "$(date) $line" >> "$LOG_FILE"; done; };
exec > >(tee >(log))
# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Nothing to done"
;;
stop)
echo "Stopping script killfoo"
pkill -9 foo >> $LOG_FILE 2>&1
;;
*)
echo "Usage: /etc/init.d/killfoo {stop}"
exit 1
;;
esac
exit 0
実行権限を持つ/etc/init.d/killfooファイルを作成しました。ランレベル0,6に対してこのスクリプトを有効にしました。
chkconfig --add killfoo
chkconfig --level 6 killfoo on
ただし、コンピュータを再起動するとスクリプトは実行されません。何が問題なのでしょうか?
答え1
確認できませんが、構成の確認(8)信じられないか、またはその行#chkconfig:
に構文エラーがあります。明らかに次のようにする必要があります。
# chkconfig: 06 1 1
ランレベル0と6の両方の開始と停止の優先順位は1です。
Runは、chkconfig --list killfoo
関連するランレベルに入ったり出たりしたときにスクリプトが実際に実行されているかどうかを知らせる必要があります。優先順位1は、低レベルの操作を実行する他のスクリプトと競合する可能性があります。他の値を使用する特別な理由がない限り、開始点として50を使用しようとします。
答え2
- 「!」後ろのスペースを削除してください。
- /bin/bash の代わりに /bin/sh を使用してください。