Linux リテラシ2006 - 第6回 デーモン 演習問題解答

javelin

第6回 演習問題の解答

問題(1)
sleep はオプションに数値を与えるとその秒数だけ停止し続けるコマンドである。これを利用して5分間停止するプロセスをつくり、もうひとつ端末を開きそのプロセスがあるか確認せよ。
解説
端末を2つ開き、片方の端末(端末1とします)でsleep 300 (5*60秒)を実行し、もう片方の端末(端末2とします)を使いpsコマンドでsleep 300を実行したプロセスを探します。ただし5分以内に行わないとsleepコマンドが終了してしまうので注意しましょう。
解答(例)
sleep 300 (端末1で実行)
ps aux (端末2で実行)

psコマンドを実行すると結果の一部にこのような結果が返ってきます。

javelin  29817  0.0  0.1  5904  536 pts/2    S+   10:22   0:00 sleep 300

このプロセスIDにまずなりません。あくまで実行結果の一例です。

問題(2)
プロセス sleep 300 を探し、そのプロセスを終了せよ。
解説
問題(1)でpsコマンドによってsleep 300を実行しているプロセスIDがわかります。そのIDに対してkillコマンドでシグナルを送るのがこの問題です。sleepコマンドが終了しない間に実行しましょう。また終了していたらもう一度実行しましょう。
解答(例)
kill -s TERM 29817
問題(3)
プロセス sleep 300 が停止したか確認せよ。
解説
停止するという状態はどのような状態でしょう?それはプロセスが終了している状態のことを言います。つまり、プロセスが動作していない状態であればいいわけです。ということはpsコマンドで出力されなければよいのです。
解答
ps aux

これで先ほどの

javelin  29817  0.0  0.1  5904  536 pts/2    S+   10:22   0:00 sleep 300

が出力されなければよいわけです。

問題(4)
ホームディレクトリ以下に ~/test/try というディレクトリを作り、そのディレクトリに適当な方法でファイル memo を作成せよ(内容は自由)。
解説
まずはtestディレクトリとその配下のtryディレクトリを作成します。

第1回で扱いました、mkdirコマンドを使います。今回はオプションを用いて一度に二つのディレクトリを作成します。

解答
mkdir -p ./test/try

次に、適当な方法でmemoというファイルを作成します。

echo "cis rat" > ./test/try/memo
問題(5)
問題(4)で作成した memo に対してシンボリックリンク jump_memo を作成し、シンボリックリンクを使ってファイル memo の中身を表示せよ。
解説
lnコマンドでのmemoファイルまでの相対(又は絶対)パス指定し、それをjump_memoとしてカレントディレクトリにシンボリックリンクを作成するというのがこの問題です。
解答
まずシンボリックリンクを作成します。
ln -s ./test/try/memo jump_memo

ではjump_memoの内容を見てみましょう。

cat jump_memo

先ほど、memoファイルに

cis rat

と入力したので

cis rat

が出力されているはずです。

問題(6)
今作った ~/test/try に対してシンボリックリンク jump_try を作成し、シンボリックリンクを使って try ディレクトリと内容が同じことを確認せよ。また、カレントディレクトリがどこであるかも確認せよ。
解説
まずはtryディレクトリ以下に何があるのか確認しましょう。そして、tryディレクトリに対するシンボリックリンクを作成します。そして作成したシンボリックリンクへ移動し、内容は何であるかを確認します。最後に自分がどこにいるかも確認しましょう。
解答
tryディレクトリの内容をみます。
ls ./test/try

tryディレクトリに対してjump_tryというシンボリックリンクを作成します。

ln -s ./test/try jump_try

jump_tryディレクトリに移動します。

cd jump_try

内容の確認をします。

ls

カレントディレクトリがどこだか確認しましょう。

pwd
問題(7)
SSH デーモン(sshd)の現在の状態を見よ。また、プロセスを確認せよ

<ヒント> grep と"|"を使うと楽に探せる

解説
sshdの現在の状況が知りたい時は/etc/init.d/sshdに起動オプションstatusを使うことで確認できます。プロセスはpsコマンドで確認できます。そしてgrepは指定した文字列を検索できます。
解答
/etc/init.d/sshd status

これで起動していたらプロセスも存在するので、psコマンドで確認しましょう。

ps aux

数あるプロセスから探すのは面倒だ!という方はgrepを用いてsshdを検索しましょう。

ps aux | grep sshd
問題(8)
SSH デーモンを停止し、プロセスがなくなったことを確認せよ
解説
問題(7)でsshdが起動していることがこれの条件となります。

デーモンの起動と停止はrootのみ行うことができます。そしてsshdを停止させ、プロセスが消えるかどうかを確認します。

解答
まず、rootにログインします。
su -

rootになれたらsshdを停止します。

/etc/init.d/sshd stop

停止をしたら問題(7)と同じように、確認します。

ps aux

もしくは

ps aux | grep sshd

操作が終わったら一般ユーザに戻りましょう。

問題(9)
SSH デーモンを起動し、プロセスが出来たことを確認せよ
解説
デーモンの起動なのでrootにログインしましょう。
su -

sshdを起動します。

/etc/init.d/sshd start

起動したら問題(8)と同じように確認します。

ps aux

もしくは

ps aux | grep sshd