현재 Ubuntu 12.04를 실행 중입니다. 현재 성공적으로 설치하고 세 가지 새로운 프로세스를 시작하는 데비안 패키지를 만들었습니다. 또한 /etc/init.d에 내부에 다음과 같은 스크립트를 배치하여 이러한 세 가지 프로세스 실행시에 시작 만든 :프로세스를 중지하기 위해 dpkg remove
# This example is from http://www.debian-administration.org/article/Making_scripts_run_at_boot_time_with_Debian
# Also used http://wiki.debian.org/LSBInitScripts/
### BEGIN INIT INFO
# Provides: bleh
# Required-Start: $remote_fs $syslog $network
# Required-Stop: $remote_fs $syslog $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
# Carry out specific functions when asked to by the system
case "$1" in
start)
cd //opt/bleh
attrf=.gatewayattributes
if [ ! -z "$1" ]
then
echo "[gateway]" >> $attrf
echo "activationKey = $1" >> $attrf
fi
./bleh1 -n &
./bleh2 &
python bleh3 &
;;
stop)
cd //opt/bleh
/usr/bin/pkill -f ./bleh1 -n
/usr/bin/pkill -f bleh3
kill -9 $(pidof bleh2)
rm -rf logs
;;
이 스크립트는 런타임에 세 개의 프로세스를 시작 않지만, 어떤 이유로 나는 실제로 시작을 사용할 수 없습니다/stop 명령, sudo /etc/init.d bleh.sh stop과 같습니다.
더 큰 문제는 그 명령을 사용하여이 패키지를 제거 : sudo는 때 dpkg -r bleh
실제로 세 가지 프로세스를 중지하지 않습니다, 그것은 단지 내 선택 하 폴더에 설치된 bleh 디렉토리를 제거하려고합니다. 또한 제거되지 않는 내 bleh 디렉토리 내에 폴더가 있습니다. bleh 제거 중 ... dpkg : 경고 : bleh를 제거하는 동안 '/ opt/bleh/logs'디렉토리가 비어 있지 않으므로 제거되지 않았습니다.
SU 권한이 없으면 해당 logs 디렉토리의 파일은 읽기 전용이지만 해당 dpkg -r 명령에서 sudo를 호출 할 때 어떻게 문제가되는지는 알 수 없습니다.
다시 sudo dpkg -r bleh를 실행하면 bleh와 일치하는 설치된 패키지가 없음을 의미합니다. 즉, 해당 로그 디렉토리와 실행중인 세 프로세스가있는 경우에도 설치된 패키지를 성공적으로 제거했다고 생각됩니다.
죄송합니다. 길었지만 실제로 도움이 될 수 있습니다. 미리 감사드립니다!
dpkg 패키지는 어떻게 만들었습니까? tar.gz를 사용 하시겠습니까? 파일을 제거하기 전에 프로세스를 중지하려면 dpkg에서 uninstall 스크립트를 조정해야합니다. – Satish
제거 스크립트는 어디에 있습니까? 나는 이것이 결국 열쇠가 될 것이라고 생각합니다. – user1553248
체크 아웃 http://stackoverflow.com/questions/9311627/dpkg-how-to-ignore-error-in-post-pre-scripts – Satish