Я не знаю почему, но я получаю разные результаты, когда я запускаю сценарий напрямую, по сравнению с тем, когда я запускаю его с тканью. (http://docs.fabfile.org)
Я пытаюсь автоматически запустить vncserver и xfce4 на ubuntu 13.04 на amazon ec2 vm.
Это мой сценарий оболочки:
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.
Но когда я запускаю его с тканью, он работает без ошибок, и даже я могу подключиться к 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
Или, если я подключаюсь к vm через ssh, а затем запускаю его напрямую, он работает, и xfce работает.
Я добавил эти две строки в конец сценария bash (/ home / ubuntu / b):
sleep 3
echo `pgrep xfce`
И я вижу, что xfce работает в обоих случаях! Значит, у меня xfce когда пробую с тканью! но я вижу, что когда ткань заканчивает свою работу, процессы xfce умирают! пока vncserver жив.
Мой файл xstartup выглядит так (/ tmp / setuptmplts / home / _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-window-manager, но ничего другого. Процессы xfce умирают после завершения ткани, но остаются живыми, когда я пытаюсь использовать ssh или напрямую.