【发布时间】:2015-08-27 13:37:06
【问题描述】:
第一个脚本叫做 wa.sh 下面是代码:
#!/bin/bash
sleep 2
/opt/Citrix/ICAClient/selfservice --icaroot /opt/Citrix/ICAClient
VDI=`pidof wfica | wc -w`
echo $VDI
while [ $VDI -eq 0 ]
do
sleep 1
echo "VDI is not running"
VDI=`pidof wfica | wc -w`
done
echo "gonig to if.sh"
/opt/Scripts/if.sh&
if.sh 的内容 - 第二个脚本
#!/bin/bash
VDI=`pidof wfica | wc -w`
echo $VDI
while [ $VDI -eq 1 ]
do
sleep 1
echo "Vdi is currently running"
VDI=`pidof wfica | wc -w`
done
pkill -u $(whoami)
当访客用户登录到 ubuntu 后由 .bashrc 调用第一个脚本时,它不会调用第二个脚本 - if.sh 这背后的逻辑是,当用户登录访客会话时,自助服务启动并且 VDI = 0 用户输入正确的凭据并启动他的会话 VDI = 1,这时我们需要开始监控 VDI 何时再次变为 0 以注销访客会话。 我已经尝试使用 source、exec 和 $() 调用第二个脚本无济于事。
【问题讨论】:
-
在
.bashrc中使用时,第一个脚本的输出是什么?你看到echo $VDI的输出了吗?你看到echo "gonig to if.sh"的输出了吗?将set -x添加到第一个脚本的顶部,看看实际运行的是什么。如果你想确保它没有运行(或者如果它运行了,看看它在做什么),第二个脚本也是如此。 -
当 .bashrc 启动时没有输出或者我不知道如何检查它。当我登录来宾会话时,打开终端并使用 bash scriptname 启动脚本,它按预期工作(第二个脚本也是如此)。呼应一切。已经尝试过设置 -x 和 bash -nx,但只有在工作正常时才从热终端。
-
.bashrc文件中的其他内容是否正常运行?显示.bashrc文件? -
除了开始第一个脚本的那一行之外,.bashrc 中没有什么不寻常的地方。它在那里:pastebin.com/g0bgWNSX
-
.bashrc为非登录的交互式 shell 启动。你可能想把它放在.bash_profile中;有可能您的测试已经看到了由以前的 shell 启动的wfica实例,因此wa.sh永远不会超过它的循环。