我想在后台不断地运行weechat,这样我就可以通过屏幕重新连接到它。
我正试图通过/etc/init/chatscreen.conf中的以下文件来实现这一点:
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显示了以下错误:
[ 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。
发布于 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.log说Error: unable to get HOME directory,那么这就是问题所在。
下面是一个更正的upstart服务文件:
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或者如果你更喜欢重量轻的达奇:
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/.weechatLANG环境变量使得weechat能够识别出detacher支持UTF-8.没有这个,我的维切特在右边显示奇怪的盒子,而不是垂直的尼克列表分隔符。将其更改为您想要使用的任何地区。
我不确定屏幕是否需要朗。我只用dtach测试过。
https://askubuntu.com/questions/547810
复制相似问题