2011-02-25 2 views
0

У меня очень прерывистая проблема (и теперь постоянная ошибка) запуска gnu-экрана на OSX от hudson. У меня есть скрипт, который делает именно это:Hudson-ci отказывается запускать экран на OSX

#!/bin/bash 
screen -dm -S foobar 

Из командной строки, как пользователь это работает Хадсон просто отлично, и этот экран сеанса отображаться с экрана -ls. Из задачи hudson это не работает. Он работал несколько часов, и я понятия не имею, почему он больше не работает.

То, что я пытался до сих пор:

  • Поместите команду экрана в отдельный Баш скрипт. Например. /tmp/foo.sh
  • Поместите пустые префиксы в случае, если команда экрана не найдена. Но screen -ls работает нормально, так что это не так.
  • Запустить экран в автономном режиме, точно так же, как тест. Это не работает, как ожидалось, с «Должно быть подключено к терминалу». Таким образом, это означает, что экран, по крайней мере, думает о том, чтобы делать правильные вещи.
  • Запустить экран как LaunchDaemon, с которого я начинаю с launchctl (создать файл plist как OnDemand). Та же проблема.

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

Моя система: OSX 10.6.5; экран ver. 4.00.03

Update: Я просто подумал, что посмотреть в /var/log/system.log и я вижу:

Feb 24 23:19:00 macmini2 com.apple.launchd[1] (0x1037c0.anonymous.screen[57291]): Switching sessions is not allowed in the system Mach bootstrap. 
Feb 24 23:19:00 macmini2 com.apple.launchd[1] (0x1037c0.anonymous.screen[57291]): _vprocmgr_switch_to_session(): kr = 0x44c 

Я собираюсь должны исследовать это дальше, кажется, но я не хочу идти по пути, предложенному в моих первых двух поисках этой ошибки, которые должны установить версию fink на экране или создать экран из источника. Я бы предпочел сохранить машину как есть, если это вообще возможно (хотя я не против компиляции экрана из источника, если это единственное решение).

+0

Вы хотите принять ответы на свои другие вопросы, прежде чем вы получите ответ здесь. –

+0

Ясир, я забыл некоторые из старых вопросов, но спасибо за напоминание. – cybertoast

ответ

1

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

Самое простое/единственное решение - создать экран из источника. Шаги очень простые и прямолинейные:

git clone git://git.savannah.gnu.org/screen.git 
cd screen/ && ./mktar.pl && tar xfz screen-4.1.0.tar.gz 
cd screen-4.1.0 
./autogen.sh && ./configure && make 
sudo cp screen /usr/local/bin/ 
/usr/local/bin/screen --version 

Используя этот новый экран для всех демонов или фоновых процессов (., Например, оболочка запуск Хадсона, cron'ed задача, которые пытаются использовать экран и т.д.) работает очень плавно. Это также сохраняет системный экран (/ usr/bin/screen) неизменным.

Ссылки:

  • Это яблоко forum thread является то, что дало мне идею построить из источника.
  • Я только что нашел это stackoverflow solution. Это в основном то же самое решение, поэтому я проголосовал за это.
+0

Это не решило проблему в Mountain Lion. После некоторых исследований проблема, похоже, не связана с экраном (c. 2014), а скорее не запускает интерактивные сеансы во время загрузки. И «экран», по-видимому, считается «интерактивным» с помощью запуска. – Dalmazio

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