私は次のような多くの方法を試しました
terminator -x abc.sh
上記のコマンドを実行すると、次のエラーが表示されます。
You need to run terminator in an X environment. Make sure $DISPLAY is properly set
私も試しました
gnome-terminal -x ./abc.sh
上記のコマンドを実行すると、次のエラーが表示されます
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused
Failed to parse arguments: Cannot open display:
関連するソフトウェアをサーバーにインストールした場合、ssh -X
を使用してリモートでログインし、terminator
やgnome-terminal
などのグラフィカルアプリケーションプログラムを実行できます。このリンクをご覧ください。
buntu 16.04“デスクトップ”からUbuntu 16.04“サーバー”にリモートGUIアクセスする最も簡単な方法は何ですか?
また、単に他のターミナルウィンドウをローカルで起動し、それらのウィンドウでssh
を使用してリモートでログインすると、サーバーで複数のテキストモードアプリケーションプログラムを実行できます(それぞれが独自のターミナルウィンドウにあります)。
簡単な解決策は、次のリンクに従ってWindowsにPuTTYをインストールして使用することです。
PuTTYはSSHおよびtelnetクライアントで、もともとはSimon TathamがWindowsプラットフォーム用に開発したものです。 PuTTYは、ソースコードで利用可能なオープンソースソフトウェアであり、ボランティアグループによって開発およびサポートされています。
PuTTY こちら をダウンロードできます。
1つ以上のPuTTYウィンドウを起動し、ssh
を介して異なるタスクを実行できます。
@SergiyKolodyazhnyyのコメントで説明されているように、xrdp
を使用して、WindowsからUbuntuへのリモートデスクトップセッションを開くことができます。
@PerlDuckのコメントで説明されているように、WindowsにXサーバーをインストールして使用すると、ssh
を介してグラフィカルアプリケーションプログラムを実行できますが、元の質問によると、やり過ぎかもしれません。
ここにあります:terminator
とgnome-terminal
はGUIアプリです。スクリプトがGUIを必要とせず、単純なシェルスクリプトである場合、ターミナルエミュレータを必要とせずにsshセッションで問題なく実行できます。もちろん、スクリプトは、スクリプトを実行しようとしているファイルシステム上に存在する必要があります。
何らかの理由でterminator
またはgnome-terminal
がどうしても必要な場合は、常に xrdp を使用してリモートデスクトップセッションを開始できます。もちろん、アクセスしようとしているUbuntuシステムにXサーバーがまったくない場合です。たとえば、サーバーコンピューターにはセキュリティリスクがあるため、GUIがないことがよくあります。
本当に必要な場合は、SSHセッションからデスクトップセッションにGUIを必要とするアプリケーションを実行することができます。次の方法を使用して、必要なときにVMWare仮想マシンを起動していますが、コンピューターの前面にはいません。
デフォルトでデスクトップ環境がインストールされていないUbuntuサーバーに接続していることを言及したことを強調します。この場合、tmux
またはscreen
を使用するか、スクリプトをバックグラウンドにプッシュするか、2番目のSSHセッションを使用する価値があります。デスクトップ環境がserverにインストールされている場合、次の手順を適用できます。
次のスクリプトは、Ubuntu 16.04のデフォルトであるLightdmおよびUnityで動作します。
1。最初の要件は、ユーザーがデスクトップセッションにログインする必要があることです。これを実現するために使用しているのは、次のスクリプトです( source and descriptions ):
#!/bin/bash
# NAME: lightdm-auto-login
main() {
# If the file '/etc/lightdm/lightdm.conf' exists create a backup copy
[[ -f /etc/lightdm/lightdm.conf ]] && mv /etc/lightdm/lightdm.conf{,.bak}
# Create autologin configuration for the current $USER = $1
echo -e "[Seat:*]\nautologin-user=$1" > /etc/lightdm/lightdm.conf
# Restart 'lightdm' while autologin option is enabled
systemctl restart lightdm.service
# Wait for a moment to complete the login process and remove the conf file
sleep 30 && rm /etc/lightdm/lightdm.conf
# Restore the backup if exists
[[ -f /etc/lightdm/lightdm.conf.bak ]] && mv /etc/lightdm/lightdm.conf{.bak,}
}
# Execute the 'main()' function with root privileges in the background 'Sudo -b'
# Pass the curent $USER as arg (https://unix.stackexchange.com/a/269080/201297)
Sudo -b bash -c "$(declare -f main); main $USER"
スクリプトは、通常のユーザー(sudoersグループに属する)として実行する必要があります。
シェルコマンドシステム全体としてアクセスできるように、スクリプトを/usr/local/bin
に配置することをお勧めします。実行可能にするのを忘れないでください。
2。次に、いくつかの環境変数($DISPLAY
など)をデスクトップセッションからSSHセッションにエクスポートする必要があります。次のスクリプトはそれを行い、位置パラメータとして渡されるコマンドも起動します( source and descriptions ):
#!/bin/bash -e
# NAME: gui-launcher
# Check whether the user is logged-in
while [ -z "$(pgrep gnome-session -n -U $UID)" ]; do sleep 3; done
# Export the current desktop session environment variables
export $(xargs -0 -a "/proc/$(pgrep gnome-session -n -U $UID)/environ")
# Execute the input command
Nohup "$@" >/dev/null 2>&1 &
exit 0
ロックされた画面を含め、ユーザーがログインするまでスクリプトは機能します。
シェルコマンドシステム全体としてアクセスできるように、スクリプトを/usr/local/bin
に配置することをお勧めします。実行可能にするのを忘れないでください。
3。使用法:
lightdm-auto-login
;例 の場合、gui-launcher <commands or script>
を実行します。
gui-launcher gnome-terminal -x bash -c "<my command or script>; exec bash"
最後のサブコマンドexec bash
は、前のコマンドが終了した後、起動されたgnome-terminal
を開いたままにします。
4。デモンストレーション:
5。参照およびその他の例: