systemctl 状态在 debian 软件包安装过程中卡住

systemctl status getting stuck during debian package install

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

RUNLEVEL=1 apt-get install <package>

此软件包作为其安装的一部分,发出一个 systemctl status smb 命令,该命令永远卡住。之所以设置 RUNLEVEL=1 是为了防止 nginx(包的依赖)一安装就在 80 端口启动。

有什么可能出错的想法吗?请询问更多信息。

编辑:systemctl 进程卡住等待寻呼 return。寻呼机进程无限期地等待读取。

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。

如果提示用户输入,

apt-get install 可能会挂起,但没有交互式输入。尝试将选项添加到 "assume the user would answer yes":

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

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

之前