web-dev-qa-db-fra.com

écran ne peut pas ouvrir votre terminal '/ dev/pts/0' - veuillez vérifier

Je veux démarrer un programme dans un écran sous le nom d'utilisateur "XYZ" avec un script . Voici mon script en forme abrégée:

# 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

Je veux me connecter à l'écran, mais j'ai compris.

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

Est-ce que j'ai fait quelque chose de mal?

15
Fabian Harmsen

Cela est dû au fait que vous avez peut-être effectué un Sudo su user_name, puis lancé la commande screen.

Il y a 2 façons de résoudre ce problème.

  1. Connectez-vous directement à "nom_utilisateur" via ssh. 
  2. Devenez propriétaire du shell en tapant script /dev/null en tant qu'utilisateur user_name puis tapez screen
7
Nerrve

Pour résoudre le problème, essayez d'exécuter script /dev/null en tant qu'utilisateur pour lequel vous su avant de lancer screen.

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

Plus à ce sujet:

20
Igor Chubin

voici comment j’ai trouvé . i ne peux pas utiliser screen de rc.local ou mieux si je veux l’utiliser i aurait besoin de root . Je ne veux pas utiliser root. Ma façon est maintenant d'utiliser crontab -e cela fonctionne.

0
Fabian Harmsen

Exécutez cette commande pour posséder le shell

#script /dev/null  

et essayez Screen 

#screen -r < name of the screen >
0
Javeed Shakeel