web-dev-qa-db-ja.com

Ubuntu 16.04-gnomeが怒っているときにターミナルからログアウトする

here に似た問題があり、ダッシュとトップパネルがロードされません。

端末からログアウトしようとすると(使用するトップメニューバーがないため)、このエラーが表示されます。

~$ gnome-session-quit

** (gnome-session-quit:6288): WARNING **: Failed to call logout: GDBus.Error:org.gnome.SessionManager.NotInRunning: Logout interface is only available during the Running phase

コンピュータが再起動する以外に、これが発生したときにログアウトする別の方法はありますか?

2
43Tesseracts

エレガントではありませんが、これを試すことができます:

ps -wweo pid,args | grep gnome | grep -v grep

これにより、AT少なくとも1行の出力が得られます。各行は、プロセスID番号の後に1つのスペースが続き、その後にプロセスを開始した正確で完全なコマンド文字列が続きます。おそらく、どのプロセスが(複数あると仮定して)gnomeセッションであるかを確認して、これを強制終了できます。

kill NUMBER

またはそれが許可について文句を言う場合(しかし、私はそうは思わない)

Sudo kill NUMBER

ここで、NUMBERは、psコマンドが表示したプロセスID番号です。

これが頻繁に発生する場合は、2番目のgrepを変更して、コマンド文字列全体と完全に一致するものを探して、強制終了するプロセスを1つだけ表示できるようにします。これは、出力のgnomeセッションに対応する行のプロセスID番号に続く文字列になります

ps -wweo pid,args | grep gnome | grep -v grep

私はgnomeを使用せず、どのgnomeシステムもとにかくまったく同じ文字列を使用するかどうかは分からないので、それがどうなるかはわかりません。いくつかのオプションが異なる場合があります。プロセス番号を抽出して強制終了するスクリプトにその文字列を入れます。このような:

#!/bin/bash
PID_to_kill=$(ps -wweo pid,args | grep "ENTIRE COMMAND STRING GNOME IS STARTED WITH" | grep -v grep | cut -d' ' -f1)    
kill $PID_to_kill

コマンド文字列全体を使用することで、それを開始したコマンド文字列の一部に「gnome」が含まれていたという理由だけで、本当に殺したくないプロセスを殺す可能性を取り除きます。

スクリプトに「killgnome」のような覚えやすい名前を付けます。パス上のディレクトリに配置します。 「/ usr/local/bin /」はかなり一般的な場所です。実行可能にします。ターミナルまたは実行ボックスに名前を入力して呼び出します。

これによりログアウトし、「ディスプレイマネージャ」(GUIログインダイアログ)に戻ります(ある場合)。デフォルトのセットアップを実行しておらず、ディスプレイマネージャーを使用していない場合(まったく不要です)、Xも停止し、ログインプロンプトが残ります。または、少なくともそれがOpenboxで動作する方法です。おそらく彼ら全員の働き方。

1

Sudo service lightdm restartはどうですか?

これにより、ディスプレイマネージャが停止し、効果的にログインし、再びlightdmが起動し、ログイン画面がすぐに表示されます。

5
mondjunge