在debian软件包安装期间,systemctl状态卡住了

时间:2017-08-13 22:39:00

标签: python debian systemd apt systemctl

我有一个发布foll的python服务。通过子进程调用命令:

RUNLEVEL=1 apt-get install <package>

这个软件包作为其安装的一部分,会发出一个systemctl status smb命令,该命令将永远陷入困境。给出RUNLEVEL = 1的原因是为了防止nginx(包的依赖关系)在安装后立即在端口80上启动。

关于什么可能出错的任何想法?请询问更多信息。

编辑:系统进程暂停等待寻呼机返回。并且寻呼机进程无限期地等待读取。

root@64_29:~# ps -ef | grep smb
root 9528  9462  0 16:32 pts/2 00:00:00 /bin/systemctl status smb.service
root@64_29:~# strace -p 9528
Process 9528 attached
waitid(P_PID, 9529,
root@64_29:~# ps -ef | grep 9529
root      9529  9528  0 16:32 pts/2    00:00:00 pager
root@64_29:~# strace -p 9529
Process 9529 attached
read(2,

另外为了防止使用RUNLEVEL = 1,我在安装自定义包之前屏蔽了nginx,因此不再提供RUNLEVEL = 1.

2 个答案:

答案 0 :(得分:0)

apt-get install如果提示用户输入,则可以挂起,但没有交互式输入。尝试将选项添加到&#34;假设用户将回答是&#34;:

apt-get install --assume-yes <package>

答案 1 :(得分:0)

好的,所以我终于找到了解决这个问题的方法。它与RUNLEVEL无关。基本上每当一个进程生成apt-get install命令,并且包在它的安装过程中发出了一个systemctl命令时,寻呼机(符号链接到更多)就会卡住。为了防止systemctl产生分页器,在产生apt-get导出之前SYSTEMD_PAGER =(基本上将其设置为空字符串)