Linuxのシェルについて質問です。
とりあえず説明するためにソース張ります。
OS : CentOS7
------------------------------------------------------------------------
1 #!/bin/bash
2
3 if [ $# -eq 0 ]; then
4 echo '引数入力して'
5 exit
6 elif [ 'start' = $1 ]; then
7 ./getCpuUseRate.sh &
8 ./getResourceInfo.sh &
9 ./getDiskIO.sh &
10 exit
11 elif [ 'stop' = $1 ]; then
12 CpuUseRatePID=$(ps -ef | grep getCpuUseRate.sh | grep -v grep | awk '{print $2}')
13 MemoryUseRatePID=$(ps -ef | grep getMemoryUseRate.sh | grep -v grep | awk '{print $2}')
14 DiskIOPID=$(ps -ef | grep getDiskIO.sh | grep -v grep | awk '{print $2}')
15 kill $CpuUseRatePID
16 kill $MemoryUseRatePID
17 kill $DiskIOPID
18 exit
19 else
20 echo '引数が正しくない'
------------------------------------------------------------------------
簡単に説明すると、引数に 'start' を渡すと
リソース情報を取得するシェルをバックグラウンドで実行します。
7 ./getCpuUseRate.sh & # sar -u 1 の結果をリダイレクトしているだけのシェル
8 ./getResourceInfo.sh & # sar -r 1 の結果をリダイレクトしているだけのシェル
9 ./getDiskIO.sh & # sar -d 1 の結果をリダイレクトしているだけのシェル
引数に 'stop' を与えると、引数 'start' の時に呼び出したシェルのプロセスIDを取得して、
取得したプロセスIDを kill するだけの簡単なシェルです。
ここで質問の本題に入るのですが、
上記のシェルで引数に 'stop' を渡したときの動きで、
引数 'start' の時に呼び出したシェルは kill してくれるのですが、
7,8,9行目で実行した sar コマンドがずっとバックグラウンドで動き続けている状態でした。
期待している動きとしては、
引数 'start' の時に呼び出したシェルを kill すれば、バックグラウンドで動いている sar コマンドも
死ぬものと思っていました。
期待した動きをさせるためにはどのようにすればよいでしょうか?
お手数ですが、どなたかご教授お願い致します。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
> 期待した動きをさせるためにはどのようにすればよいでしょうか?
うろ覚えで申し訳ないのですが、参考までに。
シェルスクリプト中で割り込みを掛けられたことをtrapで拾うことが可能だったはずなので
割り込みをかけられたらシェル中でさらにsarに対し割り込みを掛けて終了するように
変更すればどうでしょうか。
すみませんが使用方法はmanで確認願います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Linux用のインストーラー(USB...
-
ubuntu(linux)のシャットダウン...
-
bashでシングルクォート内の変...
-
ubuntuで デイスク/deb/loopと...
-
ログにserver reached MaxReque...
-
ubuntuサーバーを久々に再起動...
-
AWSでSSH接続をしたいのですが...
-
cpio使ってた人はtarが流行りだ...
-
LinuxMintが突然フリーズする
-
ssl_request_logの必要性について
-
shellscript内のコマンドを、su...
-
LinuxのノートパソコンでDVDコ...
-
Linux Mint でも使えないですよ...
-
ubuntuのシャットダウンが進ま...
-
Windowsのローカルディレクトリ...
-
Linuxのメッセージを出力して処...
-
Linux のシェルスクリプトの強...
-
linuxサーバーのキャッシュをク...
-
Ububtuでファイル共有できない...
-
Ubuntuで数字だけのユーザーア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ubuntu(linux)のシャットダウン...
-
bashでシングルクォート内の変...
-
Linuxへの移行 来年でWindows10...
-
ubuntuで デイスク/deb/loopと...
-
Linux Mint 日本語入力できなく...
-
AWSでSSH接続をしたいのですが...
-
shellscript内のコマンドを、su...
-
ubuntuのシャットダウンが進ま...
-
ログにserver reached MaxReque...
-
LinuxMintが突然フリーズする
-
linuxサーバーのキャッシュをク...
-
Lubuntuのデスクトップのアイコ...
-
Windowsのローカルディレクトリ...
-
Ubuntu on Xorgのログインについて
-
Linux のシェルスクリプトの強...
-
ssl_request_logの必要性について
-
2TBのUSBメモリを2000円ほどで...
-
tarで纏める際に、複数場外した...
-
[Linux Mint] インストールした...
-
LinuxのノートパソコンでDVDコ...
おすすめ情報