2015-11-22 2 views
0

, так что я пытаюсь использовать эту команду:Xterm не запускается скрипт

export DISPLAY=:1; /usr/bin/xterm -hold -e /path/to/shscript 

Где shscript является:

#!/bin/bash 
echo "Restarting ...  $(date)" >> /var/log/mw2.txt 
if screen -ls | grep -q 'test'; then 
    screen -X -S test quit 
    sleep 1000 
    screen -d -m -S test wine iw4m.exe -dedicated -console +dw_licensefile license.dat +set net_port "28960" +set party_maxplayers 18 +exec server.cfg +map_rotate +set fs_game "mods/tsd" 
else 
    screen -d -m -S test wine iw4m.exe -dedicated -console +dw_licensefile license.dat +set net_port "28960" +set party_maxplayers 18 +exec server.cfg +map_rotate +set fs_game "mods/tsd" 
fi 

Так что я хочу, чтобы запустить новое окно XTERM и его в запустите сценарий оболочки. Но любой скрипт оболочки, который я пытаюсь использовать, не запускает его. Это просто пусто. Все остальные команды работают, но когда я вставляю в него сценарий оболочки, он просто пуст и ничего не делает. Я не могу найти решение для этого, пожалуйста, помогите, спасибо.

Я получаю это с set -x:

++ date 
+ echo 'Restarting ... (date)' 
+ grep -q test 
+ screen -ls 
+ screen -d -m -S test -wine iw4m etc... 
+2

Этот сценарий отмечен как исполняемый файл? Имеет ли она правильную строку shebang ('#!')? Что представляет собой сценарий? –

+0

Извините, здесь он отформатирован лучше: http://pastebin.com/62b3EFG6 – Wlnt

+1

Редактирование того, что в сообщение было бы лучше (для форматирования). Вы видите что-либо в этом файле журнала при его запуске? Добавьте 'set -x' в начало скрипта и посмотрите, видите ли вы что-нибудь лишнее, выводимое о том, что работает. Можете ли вы получить * любой * скрипт для правильной работы таким образом? Даже простой, который запускает только «echo Hello»? –

ответ

0

Я думаю, что вы получите именно то, что вы просили ...

От человека странице экрана:

-d -m Start screen in "detached" mode. This creates a new session but 
      doesn't attach to it. This is useful for system startup 
      scripts. 

С другой стороны, вы используете -hold для xterm:

-hold Turn on the hold resource, i.e., xterm will not immediately 
      destroy its window when the shell command completes. It will 
      wait until you use the window manager to destroy/kill the win‐ 
      dow, or if you use the menu entries that send a signal, e.g., 
      HUP or KILL. 

И это именно то, что вы видите. xterm запускает, запускает экран, который запускается, но вы не видите вывод, поскольку экран не прикрепляется к виртуальному терминалу. Поскольку экран отключил выход сценария оболочки, и xterm держит окно, чтобы вы могли его уничтожить на досуге.

Держу пари, что если в другой xterm вы присоединяетесь к сеансу с screen -S test, вы увидите вывод.

+0

@Wlnt Это не совсем то, что было сказано. Дело здесь в том, что вы ничего не видите в xterm, потому что вы начали отключение экрана, но что он был * на самом деле * запущен, и вы могли бы подключиться к другому терминалу, который вы бы видели. Это то, что происходит? (На самом деле вы не искали запущенный «экранный» процесс, который вы предположили, что он не работает, потому что вы не видели никакого вывода?) –

+0

Nevermind. Я не работаю. Сценарий работает, когда я запускаю его вручную. Главное не в том, что он пуст, но он не запускает игровой сервер. Я имею в виду, что он должен запускать вино iw4m.exe и т. Д. И это не так. Так что это еще не решено. – Wlnt

+0

It * .. ugh трудно напечатать на мобильном телефоне. – Wlnt

0

Да. Ошибка команды wine. Я изменил некоторые вещи, и теперь это работает. Мне пришлось поставить cd /home/MW2 в скрипт, чтобы он мог запускать iw4m.exe, затем экран -S и т. Д.

 Смежные вопросы

  • Нет связанных вопросов^_^