컴퓨터가 종료되었다가 다시 시작될 때 스크립트를 호출하고 싶습니다. 비슷한 코드를 작성했습니다
#! /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를 사용하십시오.