LinuxやMac、Solarisなどでは当たり前に使っているhistory機能だが、HP-UXでは上下キーでは過去に入力したコマンドを利用することが出来ない。
そもそも、過去に入力したコマンドはHP-UXでは利用出来ないのだろうか?


Emacsでファイル保存時に作成されるバックアップファイルの保存先・バックアップファイル名のルールを設定し世代管理をする

前回、vimで書いたもののEmacs版。
Emacsで編集するファイルを自動的にバックアップし、世代管理するというもの。

設定方法は簡単で、以下の内容を「\~/.emacs.el」に記述する(ファイルが無ければ新規で作成する)。
なお、内容についてはこちらを参考…というか、日付の所をちょっと書き換えただけだ。

(setq make-backup-files t)               ; バックアップファイルを作成する
(setq backup-directory "~/.backup")      ; バックアップファイルの作成先を指定する
(if (and (boun...

Linuxのメモリキャッシュを削除する

Linuxでメモリを開放したい場合、Linuxカーネル2.6.6移行であればカーネルの値を書き換える事で開放が可能となっている。
以下のようにコマンドを実行することで、メモリを開放できる。

echo メモリ開放の種類 > /proc/sys/vm/drop_caches

もしくは、sysctlコマンドを用いる。

sysctl -w vm.drop_caches=メモリ開放の種類

メモリ開放の種類は、以下の3種類ある。
開放したいメモリの数字を指定する。

  1. ページキャッシュ
  2. ダーティキャッシュ・inode
  3. ページキャッシュ・ダーティキャッシュ・inode

ダーテ...


Windowsでinotify-toolsを使おう!『inotify-win』

以前、Linuxでファイル操作の監視などを行えるツール『inotify-tools』を紹介したが、今回はそのWindows版である『inotify-win』を紹介する。 inotifyって、Linuxのカーネルの機能名だったような…まぁ、名前だけ使っているんだろう。

コンパイルには、Cygwinを利用するようだ。 もしインストールされていない場合は、こちらを参考に事前にCygwinをインストールする。

1.コンパイル・インストール

コンパイルの方法は簡単。 こちらからソース・ファイルをダウンロードしてcygwinが利用できるディレクトリで解凍、makeコマンドを実行するだけ...


PowerShellで『PSTerminalServices』を使ってリモートデスクトップの接続クライアントのIPアドレスを調べる

Windowsにリモートデスクトップで繋げる際、セッション数などの問題から、現在サーバに接続しているユーザーとその接続元IPアドレス、ホスト名などを知りたい時がある。 UNIXの場合だと、whoコマンド、lastコマンドで接続元IPアドレスとそのユーザーが取得できるのだが、WindowsのDOSコマンドで使える「query session」だと、接続しているユーザーまではわかるが、接続元IPアドレスまでは取得することが出来ない。いちいち接続しているユーザーを元にイベントログから推測して調べるのも効率的ではない。

そんなときは、今回紹介する『PSTerminalServices』モジュールを...


Linuxのvimでファイルを保存する際、環境によっては編集したファイルと同じPATHに「オリジナルのファイル名\~」というファイルが作られている事がある。 このファイルの保存先、ファイル名は「\~/.vimrc」を編集することで変更する事が可能だ。

「\~/.vimrc」に、以下のように記述する。

:set backup                      " ファイルのバックアップを有効にする
:set writebackup                 " 取得するバックアップを編集前のファイルとする(無効化する場合は「nowritebackup」)
:set back...

diffコマンドといえば、2つのファイルの差異を確認・比較するコマンドとして多くの人が使った事があるだろう。大体はどのディストリビューションでもバンドルされているし、当然Macにも用意されている。
そのdiffコマンドと同じく、多くのディストリビューションに導入済みなのが『diff3』コマンド。使い方は名前そのまんまで、3つのファイルを比較する。

コマンドの実行時は、以下のように、比較する3つのファイルを引数に与える。

diff3 ファイル1 ファイル2 ファイル3

実際に実行した結果がこちら。


LAN内で利用されているIPアドレスを調べる『arp-scan』コマンド

あまり知らない環境で作業をする際、LAN内で稼働しているマシンの一覧が欲しくなる事もあるだろう。
そんなときに便利なのが、今回紹介する『arp-scan』コマンドだ。

このコマンドを実行することで、同じネットワークに所属して動作しているマシンのIPアドレスとMACアドレスの一覧を取得することができる。

1.インストール

まずはインストールから。
インターネットに接続している環境であれば、以下のコマンドを実行するだけだ。

Debian/Ubuntuの場合

apt-get install arp-scan

RHEL系の場合

yum install arp-scan
...

2017/04/07 追記

こちらでワンライナーでのやり方を記述したので、こっちの方がわかりやすい+使いやすいかも。


LinuxやUNIXにおいて、ターミナルコンソールでの操作内容を残すのに都合の良いscriptコマンドだが、残念ながらそのコマンドがいつ実行されたのかは記録されない。
scriptコマンドで記録したログにタイムスタンプを付与するにはscriptコマンド単体ではなく、記録しているログにタイムスタンプを追記して出力させる必要がある。以前記述した、scriptコマンドの内容をsyslogで管理させる方法と同じような手法を取る必要がある。

...

awkでリダイレクトを行う場合、たとえば「tail -F」などと組み合わせて利用する場合、単純に「>」で指定してもリダイレクトが行われない場合がある。

例) tail -F で「/work/test」というファイルを常時監視し、その内容に日付を付け足して「/work/test_log」ファイルに出力しようとしている。

tail -F /work/test | awk '{ print strftime("%Y/%m/%d %H:%M:%S") " " $0 }' > /work/test_log

以前からLinuxターミナル上でプレイ出来るゲームについて記述してきたが、今回紹介する『termboy』は端末上でプレイ出来るゲームボーイエミュレーターだ。
「コンソール上でゲームボーイやるのか?というか出来るのか?」と一瞬わけがわからなかったが、どうやら本当にプレイ可能なようだ(下の動画は、追加パッケージであるtermboy-goを適用したもののようだ)。

動画はプレイ開始までの内容だが、OPが流れているのがわかる。

残念ながら手元にromが無いので、今回はインストールまでを紹介させてもらいたい。
なお、今回の検証ではCentOS 7を用いている。

それではインストールを...


対話式のプログラムを自動化させる場合、色々と方法はあるのだが、シェルスクリプトとして作成するならばやはりexpectが一番利用されているものだろう。
そんなexpectコマンドを用いたスクリプトを自動生成してくれるのが、『autoexpect』コマンドだ。

イメージとしては、Excelにある「マクロの記録」をイメージして貰えればいいだろう。

1.インストール

まずはインストールから。
以下のコマンドを実行し、『autoexpect』コマンドを含むパッケージをインストールする。

Debian/Ubuntuの場合

apt-get install expect-dev

R

...
WebページからCentOSの各種設定を行う『CentOS Web Panel(CWP)』

Webページからサーバの設定を行うソフトといえばWebminが有名だが、今回紹介する『CentOS Web Panel』はCentOS用に開発されたWebページからサーバを管理するソフトウェアだ。
基本的にコンソールからコマンドで設定した方が早いのだが、タブレットなどからも設定変更が出来るため、重宝しそうだ。

なお、CentOS 7についてはサポートしていないとのことなので、今回はCentOS 6に実際にインストールしてみることにする。

1.インストール

まずは、以下のコマンドを実行しwgetをインストールする。

yum update -y
yum install -y...

VMware ESXiなどのログを監視する仮想マシン『SexiLog』

ESXi上で発生したイベントをブラウザ上で監視することが出来るツール『SexiLog』を紹介する。
このツールはovaファイルで提供されているため、ovaファイルをデプロイして利用する必要がある。

1.ダウンロード

まずはovaファイルのダウンロードから。
こちらのリンクからファイルをダウンロードする。容量は約1GBほど。

2.ovaファイルの展開

次に、ダウンロードしたovaファイルのデプロイを行う。
vSphere Clientから、[ファイル] > [OVFテンプレートのデプロイ]を選択する。

後は、ダウンロードしたovaファイルを指定して、流れに沿って...


前回、ファイル・ディレクトリの変更について監視する、「inotify」という機能についてを紹介したが、今回紹介するのはその機能を利用してプログラムを実行させる『incron』というツールだ。
cronと似たようなもので、cronは時間が来たらプログラムを実行させるが、incronではファイルの変動を契機にプログラムを実行させる。

1.インストール

まずはincronのインストールから。
以下のコマンドを実行する。

Debian/Ubuntuの場合

apt-get install incron

RHEL系の場合

yum install incron

インストール...


Linuxサーバを運用するにあたって、通常であれば余程のことが無い限り「/etc」フォルダ配下にあるような設定ファイルは変更しないものだ。
もし何かしら変更された場合、事前に変更を行うとわかっているものなのか、手違いでの変更なのか、それとも悪意のある第三者による変更なのか…どちらにしても、変更があると同時に認識をしたいと思うものだろう。そんな設定ファイルやフォルダの変更(ファイルが作成・削除されたり、ファイルの編集が行われたり)を監視するのが、『inotify』だ。

『inotify』は、Linux カーネル 2.6.13で組み込まれたファイルやディレクトリに対する監視機能。そのため、そ...


Linux・UNIXでコマンドを定期的(数秒ごとなど)に連続実行させる方法

Linuxで、コマンドを定期的に、それもcronを利用するほどでもない間隔(数秒、数分など)で実行させるには、どうすればいいのだろうか?

1.watchコマンドを利用する

フロント側でコマンドを連続実行させるならば、watchコマンドを利用すればいい。

watch -n 間隔(秒) コマンド

例えば、1秒ごとに「ls -la」を実行する場合、以下のようにすれば良い。

watch -n 1 ls -la

ただし、watchコマンドはバックグラウンドでの実行が出来ない。
そのため、バックグラウンドでの実行をする場合は、次のwhileの方法を取るといいだろう。

...

Linuxのpingコマンドで覚えておきたい使い方16個(+2個)

仕事でLinuxを利用していれば、必ずやお世話になるであろうpingコマンド。 しかし、大体の人はなんとなく使っていないだろうか?今回は、そんなpingコマンドで覚えておきたい使い方についてを紹介する。

1.基本的な使い方

まずは基本的な使い方…といっても、大体の人はわかるだろう。 以下のようにコマンドを実行する事で、相手先のホストが疎通可能な状態かを確認する。

ping 相手先のホスト名(IPアドレス)
test@ubuntu-server:~$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of d...

Linux・UNIXのbashで使えるhistoryコマンドの実行結果に日時(タイムスタンプ)を出力させる

LinuxやUNIXでbashを利用しているならば、historyコマンドにお世話になっている人も多いだろう。
そんなhistoryコマンド、デフォルトでは基本的にコマンドの実行時間は記録されない。

test@ubuntu-server:~$ history | tail -10
  368  screen
  369  vim .screenrc
  370  screen
  371  ls -la
  372  screen
  373  vim .screenrc
  374  screen
  375  history | tail -10
  376  clear
  3...

これはすごい!telnetで利用出来るサービス4個

リモートマシンに接続する際に利用されるTelnet、今ではあまり使われる事が無くなったが、今でも、いや今だからこそ?そんなTelnetで利用出来るサービスがまだ残っているようだ。
今回は、そんなサービスを4つほど紹介する。

1.TelnetでみるStarWars

以前こちらでも取り上げたものだが、telnetで接続すると同時にアスキーアートで作成されたStarWars Epsode IVが再生されるというもの。
telnetコマンドで、以下のように接続する。

telnet towel.blinkenlights.nl 23

telnetコマンドがない場合、こちらの...


画面を分割したりすることの出来るscreenコマンドだが、実はコンソールのログを取得することが可能だ。
起動時にログを取得する場合は、以下のように「.screenrc」ファイルに記述する。

logfile ログファイルのPATH
deflog on

なお、このままだとログの記述はリアルタイムでは行われず、何秒かごとにまとめて記述される。
ログのリアルタイムでの記録をさせる場合は、以下のように記述する。

logf...

Teraterm + screenコマンド(tmux)でマウススクロールを有効にする

Teratermでscreenコマンドやtmuxコマンドのような、仮想端末ウィンドウを分割出来るコマンドを実行すると、マウスホイールでのスクロールが効かず、上下キーと同じ動作(Linuxなどでは、コマンドの履歴が表示される)がされてしまう。
Ctrlキーを押下しながらホイールすることで画面のスクロールはされるのだけど、通常の状態と同じように、Ctrlキー無しでスクロールさせるにはどうすればよいのか?
そもそも、なぜCtrlキーを押下しながらだと正常にスクロールされるのか?

これは、screenコマンドやtmuxコマンドの実行時は、『アプリケーションカーソルモード』という状態に移行す...


Linux・UNIXのシェルスクリプトで相対パスから絶対パスを取得するなら『readlink』が便利

LinuxやUNIXで利用するシェルスクリプトの中で相対パスから絶対パスを取得するには、『readlink』コマンドがものすごい便利だ。
このコマンド、基本的にはシンボリックリンクの実体を取得するためのコマンドなのだが、「-f」オプションを利用することでファイルのフルパスを取得出来るのだ。

readlink -f 相対PATH

実際に実行した結果がこちら。


特別なコマンド無しで「◯◯時からXX時までの間のログを抽出」というように、時間指定でログを抽出させる方法(awk,sed)

前回、timegrepコマンドを利用して指定した時間のログを抽出する方法について紹介したが、今回はそのような追加のパッケージ無しで同じことをする方法についてを記述する。
使用するコマンドは、プリインストールされているawkやsedといったコマンドを用いる。。

1.awkで抽出する

awkで時間指定でログを抽出する場合は、以下のようにコマンドを実行する。
開始時間、終了時間は、抽出するログのフォーマットで指定する必要がある点に注意。

awk -F - '"開始時間" < $1 && $1 <= "終了時間"' /抽出を行うログのPATH

実際に実行してみた結果がこちら。

...
chrootではシンボリックリンクが使えない。ならば…

FTPやsshで、ログインユーザーのルートディレクトリを変更する事が出来るのがchrootだ。
この機能、セキュリティを考慮してユーザーが出来る操作内容に制限を加えるには便利なんだけど、chrootで定義したルートディレクトリ外のシンボリックリンクへは利用出来ないという点がある。

シンボリックリンクを利用出来ない中、chrootのルートディレクトリより上位のディレクトリを参照させる場合、mountを用いる事で対処出来る。


時折、ちょっとした好奇心でサーバ上の他のユーザーがどんな操作をしているのか、見てみたいと思うときもあるだろう。
そんなときは、perlスクリプト『ttylog』を用いると良いだろう。

それでは、実際にインストールし使ってみる事にしよう。検証には、CentOS 7を用いる。

1.インストール

まずは、ttylogを利用する前提となるPerl 5などのパッケージをインストールする。

yum install perl perl-Time-HiRes perl-ExtUtils-MakeMaker strace 

インストール完了後、git cloneでttylogのファイル...


以前、sshサーバ側で自動的に操作ログを取得する方法について記述したが、今回は操作ログを自動取得し、かつその内容をSyslogとして記録させるように設定してみる。
Syslogへの記録については、loggerコマンドを利用する。

今回は、踏み台サーバとして利用する事を想定し、ユーザ「test」での設定例を記述する。
やり方は簡単。対象ユーザの「.bash_profile」に、以下の内容を追記するだけだ。

P_PROC=`ps aux | grep $PPID | grep sshd | awk '{ print $11 }'`
if [ "$P_PROC" = sshd: ];...

テキストファイルに追記される内容をsyslogにリアルタイムで記録させる場合、tailコマンドとloggerコマンドを利用すると良い。

tail -F テキストファイル | logger

これを利用することで、Syslogにテキストファイルの内容が記録される。

なお、ただ実行するだけだとコンソールの操作が出来なくなるため、バックグラウンドプロセスとして起動させると良いだろう。

tail -F テキストファイル...

シェル上でプログラムをバックグラウンド実行すると、そのプロセス番号がコンソール上に出力される。

[root@dctest01 ~]# tail -F typescript | logger &
[1] 10329

このプロセス番号を取得する場合は、「$!」を用いると良いだろう。

[root@dctest01 ~]# tail -F typescript | logger &
[1] 10329
[root@dc...

アスキーアートをアニメーションさせるJQuery Plugin 『jquery-asciimation』

以前にこちらでも紹介した、telnetでアクセスするStarwarsのアスキーアートのムービー。実は、Webページからも閲覧する事が出来る。
このWebページのように、アスキーアートをアニメーションさせるJQuery Pluginが『jquery-asciimation』だ。

こちらにサンプルページが用意されているので、まずはそちらから参照してもらいたい。
地球のアスキーアートがくるくる回っているのがわかると思う。これと同じような事が、このプラグインを用いる事で行える。