Nohup 和 Sass:进程继续运行,但过了一段时间,*.scss 文件没有被编译

Nohup 和 Sass:进程继续运行,但过了一段时间,*.scss 文件没有被编译

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

我使用了以下命令问题/答案

$ nohup sass --watch 路径/到/scss/文件:路径/到/css/输出/文件&

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

$ ps aux |删除 '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 停止。
>>> 检测到新模板:
/主页/*/站点/所有/主题/测试.scss
  覆盖 private_html/sites/all/themes//test.css
>>> 检测到已删除的模板:
/主页/*/站点/所有/主题/测试.scss

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

答案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

相关内容