Как заставить Cloud9 IDE работать в фоновом режиме? - PullRequest
5 голосов
/ 12 мая 2011

Я загрузил Cloud9 IDE на свой Mac в соответствии с инструкциями на https://github.com/ajaxorg/cloud9 и все работает нормально. Но я не могу заставить его работать в фоновом режиме, запуская его через скрипт bash:

Сценарий Bash называется "ide" и имеет права на выполнение:

#!/usr/bin/env sh
CLOUD_USER=`whoami`
CLOUD_DIR="/Users/$CLOUD_USER/Sites/cloud9"
CLOUD_PORT=3333
CLOUD_WORKSPACE="/Users/$CLOUD_USER/Sites"
CLOUD_ACTION="open"
CLOUD_BEFORE=""
CLOUD_AFTER=""


case "$1" in
    -b)
        CLOUD_BEFORE="nohup "
        CLOUD_AFTER="> /dev/null 2>&1 &"
        ;;
    .)
        CLOUD_WORKSPACE=`pwd`
        CLOUD_AFTER="-a $CLOUD_ACTION"
        ;;
    *)
        if [ $1 ]; then
            CLOUD_WORKSPACE=$1
        fi
        CLOUD_AFTER="-a $CLOUD_ACTION"
        ;;
esac

$CLOUD_BEFORE`/usr/local/node/bin/node $CLOUD_DIR/bin/cloud9.js -p $CLOUD_PORT -w $CLOUD_WORKSPACE` $CLOUD_AFTER

Идея состоит в том, что вы можете запустить это несколькими способами:

$ ide

Запустит Cloud9 и запустится, используя папку ~ / Sites в качестве рабочей области. Или вы можете указать рабочее пространство, запустив:

$ ide /path/to/workspace

или запустить сервер в фоновом режиме:

$ ide -b

... который не выходит из сценария.

Я пытался загрузить «навсегда» (https://github.com/indexzero/forever). Но, когда я запускаю его навсегда, он переходит в режим stdio и не возвращается в командную строку.

Если я запускаю следующее в командной строке, оно запускается в фоновом режиме и корректно существует:

$ nohup /usr/local/node/bin/node /Users/{user}/Sites/cloud9/bin/cloud9.js -p 3333 -w /Users/{user}/Sites > /dev/null 2>&1 &

Но не тогда, когда я запускаю сам скрипт.

Есть идеи о том, как заставить это работать в фоновом режиме?

1 Ответ

2 голосов
/ 12 мая 2011

смена строки

$CLOUD_BEFORE`/usr/local/node/bin/node $CLOUD_DIR/bin/cloud9.js -p $CLOUD_PORT -w $CLOUD_WORKSPACE` $CLOUD_AFTER

до

$CLOUD_BEFORE"/usr/local/node/bin/node $CLOUD_DIR/bin/cloud9.js -p $CLOUD_PORT -w $CLOUD_WORKSPACE "$CLOUD_AFTER

Я тестирую на следующем примере:

[kaero@54221-2 ~]$ SF="sudo "
[kaero@54221-2 ~]$ FS=" aux"
[kaero@54221-2 ~]$ $SF`ps`$FS
Password:
sudo: PID: command not found
[kaero@54221-2 ~]$ $SF"ps"$FS
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
...
...