コンソールでショートカットキー

コンソール系ショートカットを色々研究してみた。

よく分からないのとかも色々あったが、適当にメモ。

Ctrl:C- とする。

C-w:カーソル位置から左のスペースまで後ろから切り取り、順番に保存
C-u:カーソル位置から行頭まで全て切り取り
C-y:直前までの溜まった切り取り(C-wとかC-u)を貼り付け
C-k:カーソル位置から文末までを切り取り

C-f:右へ移動
C-b:左へ移動
C-a:行頭へ移動
C-e:行末へ移動

C-p:コマンド履歴を過去に戻る
C-n:コマンド履歴を現在に進む

C-i:TABと一緒
C-o:コマンド実行後、1つ前のコマンドを保存表示?
C-j:コマンド実行
C-m:コマンド実行

C-d:Delete(NULLで行うとexit)
C-h:Backspace

C-r:入力文字列に一致するコマンド検索(再押下で別の候補を表示)

C-t:2文字前と1文字前を入れ替え

C-l:clearコマンドと一緒

C-s:コンソールロック
C-q:コンソール解除

C-c:コマンドラインキャンセル
C-z:プロセスを途中で殺す

C-v:押下後C-*でコントロール文字を標準出力

C-x:2度押しでカーソルの移動、現在地と行き先をCtrlを離した時点で記憶?

プロセス検索スクリプト

今回は、psコマンドなどでPIDを調べてkillするのが面倒な場合などに便利なスクリプトを紹介しようと思う。

例えば、killしたいプロセスの名前がある程度分かっている場合などで便利だ。

まずは、実行結果を簡単に説明していこう。

基本的には、

検索→マッチしたプロセスを全て消すか選択して消すか→繰り返し・・・→終了

といったように、対話的に実行していく。

$ ./process_search_kill.pl
Argv error.
$ ./process_search_kill.pl irc

PID     Deny(*) (PROCESS INFO)
=========================
3756    *       (root      3756  0.0  0.4   .* ircd -c)
6870    *       (root      6870  0.0  0.9   .* ./irc_write_httpd.pl)
8111            (500       8111  0.0  0.9   .* ./irc_write_message.pl)
8112            (500       8112  0.0  0.9   .* ./irc_write_secure.pl)
8942    *       (root      8942  0.0  0.9   .* ./irc_write_httpd.pl)
8943    *       (root      8943  0.0  0.9   .* ./irc_write_httpd.pl)
=========================
( * :Permission deny or killing now)

PID is accessible:      8111 8112
PID is not accessible:  3756 6870 8942 8943

kill above all/select process except * ?[all/select/finish]:select
Select[finish/PID is alive].
[8111 8112 finish]:8111
kill 8111

PID     Deny(*) (PROCESS INFO)
=========================
3756    *       (root      3756  0.0  0.4   .* ircd -c)
6870    *       (root      6870  0.0  0.9   .* ./irc_write_httpd.pl)
8112            (500       8112  0.0  0.9   .* ./irc_write_secure.pl)
8942    *       (root      8942  0.0  0.9   .* ./irc_write_httpd.pl)
8943    *       (root      8943  0.0  0.9   .* ./irc_write_httpd.pl)
=========================
( * :Permission deny or killing now)

PID is accessible:      8112
PID is not accessible:  3756 6870 8942 8943

Select[finish/PID is alive].
[8112 finish]:finish

$

このように、第一引数に検索文字列を指定し、実行すると、文字列に一致するプロセス一覧が表示される。

そして、実行したユーザーがアクセス不可なプロセスには「*」が付けられる。

これで、「all」によって、アクセス可能なプロセスを全てkillするか、「select」によってプロセスを選択しながらkillしていくことができる。

最後は「finish」で終了する。

結構単純なスクリプトだが、意外と便利だ。

以下にソースを示す。

続きを読む

syslogの出力をスクリプトに渡す方法

前回の記事で、apacheのログ出力をスクリプトに渡すには、httpd.confのCustomLogの部分をパイプを使って書けばいいだけでした。

しかし、syslogの場合は、syslog.confに同様の記述をすると、スクリプトのソース内にログを出力してしまいます。

そのため、syslogの出力をスクリプトに渡すには少し工夫がいるわけです。

今回はその手順を簡単に説明します。

続きを読む

ircでapacheのログをリアルタイムで監視

自宅サーバーでも日常的にapacheのログを監視したいけど、いちいちサーバーに入ってコマンドたたいて・・・っていうのが面倒だと思います。

そこで、ircサーバーを使って、apacheのログ監視をする方法があります。ircサーバーのチャンネルにapacheのアクセスログを出力することで、リアルタイムでアクセスがあればircのクライアントに表示されるという仕組みです。アクセスログをircサーバーに書き込むスクリプトをperlを使って書いてみました。

apacheのhttpd.confに以下のように追記するだけで、スクリプトを経由してリアルタイムでircに出力してくれます。

CustomLog "|/root/src/irc_write_httpd.pl" combined

スクリプトはこんな感じです。

ソケットを使うことを意識して書いてみました。

続きを読む

第2回 コンソールでscreenを使い倒す

※参考記事
■ コンソールでscreenを使い倒す

前回のをもう少し改良してみました。

screen主要コマンド

screenコマンド実行後
(C・・Ctrl,S‥Shift)

C-aでsecreenコマンド開始

C-a
{
if S-s	//ウィンドウ分割
{
C-a
{	Tab	//分割画面を移動
S-q	//現在の領域以外全て破棄
S-x	//現在の領域を破棄
}
}

C-c	//ウィンドウ作成
C-p	//前のウィンドウへ移動
C-n	//次のウィンドウへ移動
C-a	//前回表示ウィンドウへ移動
S-k	//ウィンドウを破棄
1-9	//番号のウィンドウへ移動

C-d	//SCREEN detach
}


便利な.screenrc
------
bind w windowlist -b
#hardstatus alwayslastline "Screen [%w]"
hardstatus alwayslastline "[Screen] %`%-w%{=b bw}%n %t%{-}%+w"
startup_message off
autodetach on
------

但し、autodetachがonなので、C-aC-dでデタッチした後は、もう一度終了時のスクリーンを呼び出すために、

$screen -x

で起動すること。

見た目はこんな感じです↓
IMG_2934.JPG