-Xで渡されたコマンドに対して画面が何もしないように見えるのはなぜですか?

-Xで渡されたコマンドに対して画面が何もしないように見えるのはなぜですか?

私はMinecraftサーバー用の自動バックアップシステムを設定しようとしましたが、スクリーンの使用に問題があります。特に、「screen -r sessionname -X "/var/minecraft/somebatchfile"" を使用する場合、何も起こりません。

私の現在のプロセスは次のとおりです。

screen -m -d -S minecraft /var/minecraft/bin/server_nogui.sh

これにより、問題なくMinecraftサーバーが起動します。しかし、問題は、このような単純なフォローアップも失敗することです。

screen -r minecraft -X "stop"

エラーや成功のメッセージは表示されず、サーバーは実際にクライアントの接続を切断して終了しません。私が何か間違っているようですが、何かわかりません。私は明らかな間違いをしましたか?マニュアルページを少し読みましたが、自分で理解できませんでした。

ベストアンサー1

-X引数にコマンドを与える必要があります。私の考えでは、Minecraft-serverコマンドをセッションscreenに「埋めたい」と思います。screen

screen -r minecraft -p 0 -X stuff "stop $(printf '\r')"

キャリッジリターン文字が送信されるため、printf「stop」コマンドが実行されます。-p 0キャラクターが正しいことを確認してください送るスプラッシュ画面ウィンドウに移動します。

これを送信するには、sshコマンドをラップする必要があります" "(を使用することもできますが、` `コマンド置換を実行することはできません)。

ssh -t -i ~/.ssh/id_dsa server_user@server_address "screen -r minecraft -X stuff "even other_server_name is getting in on the action\! $(echo -ne '\r')""

これは!予約語なので、エスケープする必要があります。

道路可能ユーザーが生成した改行をコマンドに含めて実行します。

ssh -t -i ~/.ssh/id_dsa server_user@server_address "screen -r minecraft -X stuff 'even other_server_name is getting in on the action!
'"

!ここで脱出する必要はありません。

おすすめ記事