ログインまたはログアウトすると、Ctrl + Cを押すまで特定のユーザーのシェルがハングします。

ログインまたはログアウトすると、Ctrl + Cを押すまで特定のユーザーのシェルがハングします。

私はCentOS 6.9を使用していますが、私のユーザーの1人がログインすると、Ctrl + Cを押すまで画面がフリーズするバグに直面しました。彼らが出るときも同じことが起こります。これは、私がrootでsu(迷惑なユーザー)の場合にも発生します。このユーザーはtcshを使用していますが、tcshを使用している他のユーザーのうちこの問題が発生していることを見たことはありません。

[root@boop] # su - troublesome_user
(hangs until terminate)    
^C[troublesome_user@boop ~]$ exit
logout
(hangs until terminate)
^C [root@boop] #

私はbashに最も慣れているので、.bash_profileと.bash_rcをチェックしましたが、tcshが別の.profileファイルセットを使用していることを知っています。 .cshrcファイルを見ましたが、奇妙なことは見つかりませんでした。

内容は次のとおりです。

setenv LC_ALL C
set path = ($path /nfs/bin) 

tcshのどの機能がこの問題を引き起こす可能性があるかを知っている人はいますか?

ありがとうございます!

答え1

まず、tcshの起動時にコマンドが実行されるすべての場所を確認します。

これマニュアルページこのようなことがあります(ファイルの位置を太字で表示しました)。

ログインシェルはまずシステムファイルからコマンドを実行します。/etc/csh.cshrcそして/etc/csh.login。次に、ユーザーのホームディレクトリにあるファイルからコマンドを実行します。~/.tcshrc(+) または ~/.tcshrc が見つからない場合、~/.cshrc、その後~/.歴史(または値histfile シェル変数)、その後~/.ログイン、ついに~/.cshdirs(または値dirsfile シェル変数)(+)。シェルは /etc/csh.cshrc の後に代わりに /etc/csh.login を読み取ることができます。コンパイルされた場合)。 ;バージョンシェル変数を参照してください。 (+)

それでも問題が解決しない場合は、次の2つを試してみましょう。

  • 問題のユーザーとしてログインして停止し、別のコンソールに切り替えて確認します。wこれにより、そのユーザーが実行されていることが表示されます。
  • Ctrl+Z代わりにCtrl+C、実行中のプロセスを中断するのではなく、一時停止する必要があります。次に、jobs何が一時停止しているかを確認してください。

編集:JdeBPがコメントで指摘したように、suでtcshオプションと-xtcsh-Vオプションを設定することもできます。しかし、次のようなものが見つかるようです-X

su - troublesome_user -- -X
  • -x 実行前にすべてのコマンドをエコーし​​ます。
  • -v コマンド入力は、記録交換後にエコーされます。
  • -X -x と同じですが、.tcshrc が処理される前にも適用されます。
  • -V -v と同じですが、.tcshrc が処理される前にも適用されます。

関連情報