我不知道为什么,但直接运行脚本时与运行织物时相比,我得到了不同的结果。 (http://docs.fabfile.org)织物运行和直接运行之间的不同结果
我想在ubuntu 13.04上自动运行vncserver和xfce4上的amazon ec2虚拟机。
这是我的shell脚本:
echo $USER
vncserver -kill :1
pkill Xtightvnc|true; sleep 1; pkill -9 Xtightvnc|true
rm -fr $HOME/.vnc
mkdir $HOME/.vnc
chmod 700 $HOME/.vnc
echo 123457 | vncpasswd -f > $HOME/.vnc/passwd
chmod 600 $HOME/.vnc/passwd
cp /tmp/setuptmplts/home/_vnc/xstartup $HOME/.vnc/
chmod 755 $HOME/.vnc/xstartup
mkdir -p $HOME/.config
cp -a /tmp/setuptmplts/home/_config/xfce4 $HOME/.config/
vncserver -geometry 1366x768 -depth 24 :1
当我直接EC2的机器上运行此脚本,它工作正常,我可以连接到它,看看Xfce桌面。
但是当我用fabric运行它时,它运行时没有错误,甚至我可以连接到vnc,但我只看到一个带有十字光标的灰色屏幕。这意味着我有vncserver进程但不是xfce。
这是我fabfile:
from fabric.api import run, env, task
env.use_ssh_config=True
@task
def vnc():
run('/home/ubuntu/b')
我跑我fabfile像这样(我有一个的.ssh/config文件):
fab -H ec2 vnc
将没有错误做,但我还没有XFCE处理。
但是,如果我通过SSH运行它,我会有xfce进程。
ssh ec2 /home/ubuntu/b
或者,如果我通过ssh连接到vm,然后直接运行它,它会工作,xfce是活的。
我已经将这两行bash脚本结束(/家/ Ubuntu的/ B):
sleep 3
echo `pgrep xfce`
而且我看到,XFCE是生活在这两种情况下!这意味着当我尝试使用织物时,我拥有xfce!但是我发现当织物完成其工作xfce进程死亡!而vncserver是活的。
我的xstartup文件是这样的(/ tmp目录/ setuptmplts /家庭/ _vnc/xstartup中):
#!/bin/sh
xrdb $HOME/.Xresources
xsetroot -solid grey
#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
# Fix to make GNOME work
export XKL_XMODMAP_DISABLE=1
/etc/X11/Xsession
我试着取消注释的X窗口管理器,但没有什么不同。 xfce进程在完成织物后死亡,但是当我用ssh或直接尝试时生存。
'run('/ home/ubuntu/b',pty = False)' – iman