Nohup & Sass:进程继续运行,但一段时间后,*.scss 文件不会被编译

mau*_*its 5 terminal process nohup

我在 CentOS 5.8 服务器上使用 Sass 并希望它在 SSH 注销后继续运行,以便其他用户可以编辑 *.scss 文件数天甚至数周,而无需每次登录时启动程序(实际上,他们甚至没有 SSH 访问权限)。

我使用了这个问题/答案中的以下命令:

$ nohup sass --watch path/to/scss/files:path/to/css/output/files &

然后,我退出 SSH 会话,进程继续运行。在最初的几分钟内一切正常(再次登录并使用 touch 创建测试文件(test.scss)正确触发相应 test.css 文件的创建),但过了一会儿 *.scss 文件停止获取编译...然而,

$ ps 辅助 | grep 'sass'

显示进程仍在运行。

有谁知道我做错了什么?

编辑:这是我从 nohup.out 得到的输出:

/usr/local/rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/yaml.rb:56:in `':
看来您的 ruby​​ 安装缺少 psych(对于 YAML 输出)。
要消除此警告,请安装 libyaml 并重新安装 ruby​​。
>>> Sass 正在关注变化。按 Ctrl-C 停止。
>>> 检测到新模板: 
/home/*/sites/all/themes/test.scss
  覆盖 private_html/sites/all/themes//test.css
>>> 检测到删除的模板: 
/home/*/sites/all/themes/test.scss

与 YAML 相关的错误似乎与问题无关,因为 Sass 在短时间内正常工作。即使进程仍在运行,它也会在某个时候默默地停止工作......

Mat*_*ark 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.