web-dev-qa-db-ja.com

コマンドラインから直接複数の分割で画面を開始するにはどうすればよいですか?

サーバーにscreenでログインした後、sshを使用しています。今のところ、次のスクリーンショットに示すように、画面ウィンドウに手動で分割を設定し、コマンドを手動で実行します。

enter image description here

  • 上部はtail -n 1 -f /home/server/log/access.logを実行する必要があります。
  • 右下の部分はhtopを実行する必要があります
  • 左下のものは単にコマンドプロンプトでなければなりません

コマンド/スクリプトを使用してそれを行う方法はありますか?そのため、毎回手動でやり直す必要はありませんか?

11
Videonauth

ウィンドウ配置の特定の場合には、それらをファイルに保存するスクリーンコマンドがあります:layout dumpman screen から:

layout dump [filename]

Write to a file the order of splits made in the current layout. This is
useful to recreate the order of  your  regions  used  in  your  current
layout.  Only  the  current  layout is recorded. While the order of the
regions are recorded, the sizes of  those  regions  and  which  windows
correspond  to  which regions are not. If no filename is specified, the
default is layout-dump, saved in the directory that the screen  process
was  started in. If the file already exists, layout dump will append to
that file. As an example:

           C-a : layout dump /home/user/.screenrc

will save or append the layout to the user's .screenrc file.

したがって、手動で配置を行ったら、を押します Ctrla:layout dump /path/to/some/fileと入力します。レイアウトは/path/to/some/fileに保存され、次のコマンドで新しいセッションで復元できます。

screen -c /path/to/some/file
14
muru

私は私の質問に示されている出力を作成するために次のことを思いつきました @ muru's excellent answerlayout dumpを使用すると、次のことがわかりました。

split
focus
split -v
focus

注:Tilde(~)展開はlayout dumpでは機能しないため、たとえば~/layout.dmpの代わりに/home/<username>/layout.dmpを使用する必要があります。

その後、次の.screenrcを作成しました

# create the top screen
chdir /home/server/log
screen -t "Apache Log" tail -n 1 -f access.log
# split the screen and focus onto the new created space
split
focus
#create the bash
chdir /home/server/log
screen
# split vertically and focus onto the new area
split -v
focus
# create the htop screen
screen -t "Htop" htop
# focus twice to end up with the bash area active
focus
focus

これで、screenと入力するだけで、目的のレイアウトを開始できます。疑問に思っている人のための例としてそれをここに残しますが、@ muruの答えに投票することを忘れないでください。

9
Videonauth