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

49,462

Solution 1

This happens because you may have done a sudo su user_name and then fired the screen command.

There are 2 ways to fix this.

  1. Login directly to "user_name" via ssh.
  2. Take ownership of the shell by typing script /dev/null as the user user_name and then type screen

Solution 2

To solve the problem try running script /dev/null as the user you su to before launching screen.

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

More on it:

Solution 3

Inspired by both endorsed answers here I added the following function to my .bashrc:

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

Now I just use sscreen instead of screen and never have to think about the issue again.

Solution 4

Run this command to own the shell

#script /dev/null  

and try Screen

#screen -r < name of the screen >
Share:
49,462
LFS96
Author by

LFS96

Updated on September 17, 2021

Comments

  • LFS96
    LFS96 over 2 years

    I want to start a program in a screen as the user "XYZ" with a script. This is my script in short form:

    # 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
    

    I want connect in the screen, but I got this.

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

    Did I do something wrong?

  • Igor Chubin
    Igor Chubin over 10 years
    @FabianHarmsen: Which message do you get?
  • Igor Chubin
    Igor Chubin over 10 years
    @FabianHarmsen: What says screen -ls?
  • Rajesh Omanakuttan
    Rajesh Omanakuttan almost 2 years
    We just ran 'script /dev/null' as the user with 'user_name', it worked!