启动.sh脚本后出现“必须连接到终端”

启动.sh脚本后出现“必须连接到终端”

我有一个简短的 bash 脚本,可以运行一个文件。当我尝试通过“x.sh start”启动它时,出现警告“必须连接到终端”。如何启动它?我尝试了一些 chmods 配置。此脚本位于 /usr/local/bin 中,我现在在我的 Debian 7 vps 上处于 root 状态。

  #!/bin/bash

server_start() {
screen /usr/share/s/x.sh &
}

server_stop() {
killall x.sh
killall xx
}

server_restart() {
server_stop
sleep 1
server_start
}
case "$1" in
'start')
server_start

;;
'stop')
server_stop
;;
'restart')
server_restart
;;
*)
echo "usage $0 start|stop|restart"
esac

答案1

screen需要一个终端。

如果您想以分离模式启动新会话,则需要将-d -m参数添加到屏幕。

答案2

您的屏幕调用是错误的。屏幕需要$STY环境变量(-m选项阻止它。)

您必须使用-d(启动分离会话)和-m(防止$STY使用环境变量)选项而不是& 启动守护进程屏幕会话。

检查屏幕文档了解更多信息。

答案3

以分离模式启动屏幕:screen -dm /usr/share/game/startlss.sh

答案4

谢谢大家,我在 lss.sh 中添加了 -d -m

server_start() {
screen -d -m /usr/share/game/startlss.sh &

现在一切正常!

相关内容