scherm Kan uw terminal ‘/dev/pts/0’ niet openen – controleer a.u.b.

Ik wil een programma in een scherm starten als de gebruiker “XYZ” met een script.
Dit is mijn script in korte vorm:

# 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

Ik wil verbinding maken op het scherm, maar ik heb dit.

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

Heb ik iets verkeerd gedaan?


Antwoord 1, autoriteit 100%

Dit gebeurt omdat je misschien een sudo su user_namehebt gedaan en vervolgens het schermcommando hebt gegeven.

Er zijn 2 manieren om dit op te lossen.

  1. Log rechtstreeks in op “user_name” via ssh.
  2. Beheer de shell
    door script /dev/nullte typen als de gebruiker user_nameen vervolgens te typen
    screen

Antwoord 2, autoriteit 50%

Om het probleem op te lossen, probeert u script /dev/nulluit te voeren als de gebruiker die u sugebruikt voordat u screenstart.

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

Meer hierover:


Antwoord 3, autoriteit 7%

Voer deze opdracht uit om eigenaar te worden van de shell

#script /dev/null  

en probeer Scherm

#screen -r < name of the screen >

Antwoord 4, autoriteit 7%

Geïnspireerd door beide goedgekeurde antwoorden hier heb ik de volgende functie toegevoegd aan mijn .bashrc:

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

Nu gebruik ik gewoon sscreenin plaats van screenen hoef ik nooit meer over het probleem na te denken.


Antwoord 5

hier is de manier die ik heb gevonden.
ik kan screenvan rc.localniet gebruiken of beter als ik het wil gebruiken, ik zou root nodig hebben. Ik wil geen root gebruiken. Mijn manier is nu om crontab -ete gebruiken, dit werkt.

Other episodes