首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何运行weechat和屏幕作为一个新兴的服务,没有错误?

如何运行weechat和屏幕作为一个新兴的服务,没有错误?
EN

Ask Ubuntu用户
提问于 2014-11-10 08:25:53
回答 1查看 1.4K关注 0票数 2

我想在后台不断地运行weechat,这样我就可以通过屏幕重新连接到它。

我正试图通过/etc/init/chatscreen.conf中的以下文件来实现这一点:

代码语言:javascript
复制
description     "Run a persistent weechat within a screen"

start on runlevel [2345]

respawn

setuid chat
setgid chat

exec /usr/bin/screen -S chatscreen -Dm /usr/bin/weechat

然后运行sudo initctl start chatscreen启动服务,该服务打印chatscreen start/running, process 3090

当我稍后运行sudo initctl status chatscreen时,它会打印chatscreen stop/waiting,并且不会根据htop运行屏幕或weechat进程。

dmesg显示了以下错误:

代码语言:javascript
复制
[ 5649.430032] init: chatscreen main process ended, respawning
[ 5649.454638] init: chatscreen main process ended, respawning
[ 5649.476572] init: chatscreen main process ended, respawning
...
[ 5649.608818] init: chatscreen main process ended, respawning
[ 5649.627409] init: chatscreen respawning too fast, stopped

不存在/var/log/upstart/chatscreen.log文件。

当我作为聊天用户使用ssh并在shell中运行/usr/bin/screen -S chatscreen -Dm /usr/bin/weechat时,它将按预期执行。(它运行命令并阻塞。然后,我可以启动另一个ssh会话,screen -r、/exit weechat,以及原始的screen命令返回。)

我在DigitalOcean上运行UbuntuServer14.04.1LTS 64位。

编辑:我也尝试使用dtach而不是屏幕。唯一的区别是我不得不使用expect fork,因为dtach -n分叉。dtach -n可以在没有终端的情况下运行,我认为这可能是screen的一个问题。

不幸的是,我在/var/log/upstart中经历了相同的呼吸周期,没有任何相应的日志文件。但dmesg确实多次说:init: chatdtach main process (1073) terminated with status 1

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2014-11-13 23:37:25

Upstart,即使在使用setuid时,也不会设置HOME环境变量。未指定-d时,weechat尝试使用此变量查找其配置目录。

针对这个问题,韦克特打印了Error: unable to get HOME directory。但是,由于weechat除了stdout之外没有输出此错误,所以它没有日志记录,因为原始进程结束了,所以屏幕/dtach除了尽职尽责地返回之外什么也不做。

您可以通过将exec行改为:

exec /usr/bin/weechat

如果/var/log/upstart/chatscreen.logError: unable to get HOME directory,那么这就是问题所在。

下面是一个更正的upstart服务文件:

代码语言:javascript
复制
description     "Run a persistent weechat within screen"

respawn

setuid chat
setgid chat

# Not sure if screen needs this.
env LANG=en_US.utf8

exec screen -S chatscreen weechat -d /home/chat/.weechat

或者如果你更喜欢重量轻的达奇:

代码语言:javascript
复制
description     "Run a persistent weechat within dtach"

respawn

setuid chat
setgid chat

expect fork

env LANG=en_US.utf8

exec dtach -n /home/chat/chatdtach.sock weechat -d /home/chat/.weechat

LANG环境变量使得weechat能够识别出detacher支持UTF-8.没有这个,我的维切特在右边显示奇怪的盒子,而不是垂直的尼克列表分隔符。将其更改为您想要使用的任何地区。

我不确定屏幕是否需要朗。我只用dtach测试过。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/547810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档