我想在机器关闭和重新启动时调用脚本。我写过类似的代码
#! /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。
运行chkconfig --list killfoo
应该告诉您在进入/退出相关运行级别时脚本是否会实际执行。请注意,优先级 1 可能会与执行低级操作的其他脚本发生冲突;除非有特定原因需要使用其他值,否则我会尝试使用 50 作为起点。
答案2
- 去掉“!”后面的空格
- 使用 /bin/sh 代替 /bin/bash