在机器关闭时调用脚本

在机器关闭时调用脚本

我想在机器关闭和重新启动时调用脚本。我写过类似的代码

#! /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

  1. 去掉“!”后面的空格
  2. 使用 /bin/sh 代替 /bin/bash

相关内容