屏幕无法打开您的终端'/ dev / pts / 0' - 请检查

时间:2014-01-24 08:47:04

标签: linux shell debian gnu-screen

我想在屏幕上以用户" XYZ"用脚本。 这是我的简写形式的脚本:

# replace <newuser> with the user you wish to run teamspeak 3 with.
USER="teamspeak"
# Do not change this path
PATH=/bin:/usr/bin:/sbin:/usr/sbin
# The path to the teamspeak 3 server/scripts . example = /home/teamspeak3/teamspeak3-server
DIR=/home/teamspeak/voiceserver/teamspeak3
DAEMON=$DIR/ts3server_startscript.sh
# Change all PARAMS to your needs. I required the ini so teamspeak used MySQL
PARAMS="inifile=ts3server.ini"
#Name = The screen will be named from this.
NAME=teamspeak3
DESC="Teamspeak Server 3"


case "$1" in
start)
echo "Starting $DESC"
script -q -c "su $USER -l -c \"screen -m -d -S $NAME $DAEMON start\"" /dev/null
;;
stop)
su $USER -l -c "screen -S $NAME  -X quit "
    echo " ... done. $DESC Stopped."
;;
restart)
su $USER -l -c "screen -S $NAME  -X quit "
    echo " Closed Process, Restarting"
script -q -c "su $USER -l -c \"screen -m -d -S $NAME $DAEMON start\"" /dev/null
echo " ... done. $DESC Restarted"
;;
status)
# Check whether there's a "Team Speak 3" process
ps aux | grep -v grep | grep ts3server_ > /dev/null
CHECK=$?
[ $CHECK -eq 0 ] && echo "$DESC is UP" || echo "$DESC is DOWN"
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
exit 0

我想要在屏幕上连接,但我明白了。

Cannot open your terminal '/dev/pts/0' - please check.

我做错了吗?

5 个答案:

答案 0 :(得分:20)

要解决此问题,请在启动script /dev/null之前,以su为用户运行screen

script -q -c "su $USER -l -c \"screen -m -d -S $NAME $DAEMON start\"" /dev/null

更多信息:

答案 1 :(得分:9)

发生这种情况是因为您可能已经完成sudo su user_name,然后触发了screen命令。

有2种解决方法。

  1. 通过ssh直接登录“用户名”。
  2. 取得外壳的所有权 通过以用户script /dev/null的身份键入user_name,然后键入 screen

答案 2 :(得分:0)

运行此命令以拥有shell

#script /dev/null  

并尝试屏幕

#screen -r < name of the screen >

答案 3 :(得分:0)

这是我找到的方式。 我无法使用rc.local中的screen ,或者如果我想使用它,则更好,我需要root 。我不想使用root。我现在的方法是使用crontab -e正常工作。

答案 4 :(得分:0)

在此,我都通过两个认可的答案为我的.bashrc添加了以下功能:

sscreen(){
    script -q -c "screen $*" /dev/null;
}

现在我只用sscreen而不是screen,而不必再考虑这个问题了。