dpkg删除来停止进程

我目前正在运行Ubuntu 12.04。 我创build了一个debian包,当前安装成功并启动了三个新的进程。 我还通过在/etc/init.d中放置以下脚本来使这三个进程在运行时启动:

# 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 ;; 

这个脚本确实在运行时启动了三个进程,但由于某些原因,我实际上不能使用start / stop命令,如sudo /etc/init.d bleh.sh stop。

更大的问题是使用命令:sudo dpkg -r bleh删除这个软件包

不实际停止这三个进程,它只会尝试删除我安装在我的opt文件夹中的bleh目录。 此外,我有我的bleh目录中的文件夹不会被删除,它给了我一个警告说:删除bleh … dpkg:警告:当删除bleh,目录'/ opt / bleh / logs'不为空,所以不能删除。

该日志目录内的文件是只读的,除非你有SU权限,但是我没有看到这应该是一个问题,因为我在该dpkg -r命令上调用sudo。

如果我再次运行sudo dpkg -r bleh,则表明没有安装的包匹配bleh,这意味着它认为它已经成功地删除了已安装的包,即使存在那个已经存在的日志目录和三个仍在运行的进程。

对不起,我知道这很长,但我真的可以使用一些帮助..提前感谢!

Solutions Collecting From Web of "dpkg删除来停止进程"

根据Debian新维护者指南的建议,请使用dh_installinit (当然,使用debhelper构建您的整个包)。 默认情况下,这将添加脚本来启动和停止软件包安装和删除。

辅助文件(如配置)通常在purge (例如dpkg -P )状态下被删除。 要自己处理这个,你需要一个deconfigure脚本。

另外,最好使用start-stop-daemon而不是& ,这对于正确start-stop-daemon是不够的。