Linux リテラシ2006 - 第6回 デーモン 演習問題解答
第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