スクリプトを使用してユーザー「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.
私は何か間違ったことをしましたか?
これは、Sudo su user_name
を実行してからscreenコマンドを起動した可能性があるために発生します。
これを修正するには2つの方法があります。
script /dev/null
をユーザーuser_name
として入力し、screen
を入力して、シェルの所有権を取得します。問題を解決するには、script /dev/null
su
を起動する前にscreen
するユーザーとして。
script -q -c "su $USER -l -c \"screen -m -d -S $NAME $DAEMON start\"" /dev/null
それについての詳細:
ここに私が見つけた方法があります。 i rc.localのscreen
は使用できませんまたはそれを使用したい場合は、i rootが必要です。ルートを使いたくありません。私の方法はcrontab -e
を使用することです。これは動作しています。
このコマンドを実行してシェルを所有します
#script /dev/null
そして、スクリーンを試してください
#screen -r < name of the screen >