5

Я использую Sass на сервере CentOS 5.8 и хочу, чтобы он продолжал работать после выхода из системы SSH, чтобы другие пользователи могли редактировать файлы * .scss в течение нескольких дней или даже недель без необходимости запуска программы при каждом входе в систему (фактически у них даже нет доступа по SSH).

Я использовал следующую команду из этого вопроса / ответа:

$ nohup sass - смотреть путь / к / scss / files: путь / к / css / output / files &

Затем я выхожу из сеанса SSH, и процесс продолжает выполняться. Все работает нормально (снова войдите в систему и используя touch для создания тестового файла (test.scss) правильно запускает создание соответствующего файла test.css) в течение первых нескольких минут, но через некоторое время файлы * .scss перестают получать составлен ... Тем не мение,

$ ps aux | grep 'sass'

Показывает, что процесс все еще выполняется.

Кто-нибудь знает, что я делаю не так?

РЕДАКТИРОВАТЬ: это вывод, который я получаю из nohup.out:

/usr/local/rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/yaml.rb:56:in `':
It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.
>>> Sass is watching for changes. Press Ctrl-C to stop.
>>> New template detected: 
/home/*/sites/all/themes/test.scss
  overwrite private_html/sites/all/themes//test.css
>>> Deleted template detected: 
/home/*/sites/all/themes/test.scss

Ошибка, связанная с YAML, кажется, не связана с проблемой, поскольку Sass работает правильно в течение короткого времени. В какой-то момент он просто перестает работать, даже если процесс продолжает работать ...

1 ответ1

1

Тьфу звучит как раздражающая проблема. Сомнительная проблема с nohup, поскольку он широко используется, зрелый и простой. Давайте все равно устраним это. Мы также устраняем фоновый процесс как проблему.

Откройте экран ... буквально screen

запустите вашу команду без nohup, но давайте где-нибудь зарегистрировать ее

sass --watch path/to/scss/files:path/to/css/output/files 2>&1 | tee sass.log

2> & 1 гарантирует, что мы получим STDERR и STDOUT, в то время как tee разветвляет журнал на диск

Теперь отсоедините ваш экран: ctrl+a d

Выйдите из системы, войдите в систему и посмотрите, будет ли это иметь значение. Нет необходимости заново подключаться к экрану, так как у вас запущен sass.log, но вы бы сделали это с помощью screen -r .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .