bxm*_*bxm 7 linux shell bash kickstart
我有一个 Red Hat Kickstart 进程,它通过对状态服务器的 POST 请求报告关键点的进度。
这在%preand期间很好%post,但是当它们之间发生实际构建时,这是一个信息黑洞。
我写了一个简单的 shell 片段,报告安装的软件包数量,以粗略地了解进度。我已将以下内容放入%pre:
%pre
## various other stuff here, all works fine ##
cat > /tmp/rpm_watcher.sh << EOF_RPM
PREV=-1
while true
do
COUNT="\$(rpm -qa | wc -l)"
if [ \${COUNT} -ne \${PREV} ] ; then
/bin/wget --post-data " ${Hostname} : Package count \${COUNT}" ${builddest}/log
PREV=\${COUNT}
fi
sleep 15
done
EOF_RPM
/bin/sh /tmp/rpm_watcher.sh &
disown -a
%end
Run Code Online (Sandbox Code Playgroud)
但是,当我从%pre上面启动它作为后台任务时,它挂起等待脚本结束 -%pre永远不会完成(如果我杀死生成的脚本%pre完成并且构建正确开始)。
我无法使用,nohup因为它在预安装环境中不可用,使用at now和 也是如此screen。
我尝试使用disown -a,这是可用的;这似乎成功地否认了该进程(因此它归 PID 1 所有),但它仍然挂起等待脚本完成。
谁能给我一个替代方案?
如果您将脚本中的 while 循环设置为背景,而不是让脚本背景化,如下所示:
while true
do
COUNT="\$(rpm -qa | wc -l)"
if [ \${COUNT} -ne \${PREV} ] ; then
/bin/wget --post-data " ${Hostname} : Package count \${COUNT}" ${builddest}/log
PREV=\${COUNT}
fi
sleep 15
done &
Run Code Online (Sandbox Code Playgroud)
done请注意,我在循环行的末尾添加了“&”号while。
| 归档时间: |
|
| 查看次数: |
3185 次 |
| 最近记录: |