기계가 종료될 때 호출 스크립트

기계가 종료될 때 호출 스크립트

컴퓨터가 종료되었다가 다시 시작될 때 스크립트를 호출하고 싶습니다. 비슷한 코드를 작성했습니다

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

  1. "!" 뒤의 공백을 제거하세요.
  2. /bin/bash 대신 /bin/sh를 사용하십시오.

관련 정보