こんばんは。
CentOSでサービスを再起動しようと思ったのですが、資料に書いてある
通りにスクリプトを作っても動きません(起動はできるけど
再起動、停止ができない)。
仕方がないのでプロセスをkillしたあとスクリプトを起動して再起動
する方法を取ろうとしていますが、最後の1歩で詰まりました。
echoでps -axをした結果を変数に入れて先頭の数字(PID)だけを
切り出そうとするのですが、プロセスIDが、空白+PID4桁の時と
空白なしPID5桁のときとあるので上手くHitさせることが出来ません。
mofu=`ps -ax|grep qmail-send`
4桁) mohe=`expr "$mofu" : \(^\s[0-9]*\)'`
5桁) mohe=`expr "$mofu" : \([0-9]*\)'`
kill $mohe
/etc/rc.d/init.d/qmail
シェルスクリプトで自動化したいので、PIDの桁数に関係なく確実に
killしたいです。
上手い方法があったら御教授下さい。
よろしくお願いします。
No.4
- 回答日時:
exprを使おうと思うのは珍しいですね。
まず、expr の正規表現では\sは使えません。空白文字すべてでなく空白だけでいいなら、空白を書けばいいです。'\( [0-9]*\)'
ただ、空白がいくつあっても無くてもマッチする '\( *[0-9]*\)' を使った方がいいでしょう。これだとプロセスIDが何桁でもOKです。
あと、ps -ax|grep qmail-send だと、qmail-sendプロセス以外にgrepコマンド自身にもマッチする可能性があるので、
ps -ax|grep '[q]mail-send' などとすると、grep にはマッチしません。
まとめると、
mofu=`ps -ax|grep '[q]mail-send'`
mohe=`expr "$mofu" : '\( *[0-9]*\)'`
それはそれとして、/etc/rc.d/init.d/qmail restart ではうまく行かないと言うことですか?
ありがとうございます。
自分の環境に入っていた/etc/rc.d/init.d/qmail を見てみたところ、
スタート処理しか書かれていませんでした。
自前でrestartを書いてみたところ、やはり上手く行きませんでした。
ありがとうございました。
またお願いします。
No.3
- 回答日時:
4/5桁両方対応だと \s?[0-9]{4,5} でOKなはずです。
4桁のみなら \s[0-9]{4}
5桁のみなら [0-9]{5}
でいけると思います。
正規表現しか知識がないので1行ずつ読み込んでいるのか
そうでないのかすらわからないのですが、
一行ずつ読み込んでいる処理の場合は
上記の正規表現に文頭を示す「^」を入れるとよいです。
うまくHitしないのは[0-9]の次の*かもしれません。
いくらあっても、もしくはなくてもいいよってことなので。
*(0回以上いくらでも)を+(1回以上いくらでも)に変えれば
改善されるかもしれません。
もしそれでも改善されない場合、正規表現の記法の問題ではなく
その他の点に問題がある可能性を考えてみてください。
この回答への補足
ありがとうございます。
自分の作った正規表現の場合、上手く行く時と行かない時があるので、
正規表現にかける為に取得した文字列が正しくない可能性もあるのかと
思いました。
ありがとうございました。
またお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TOPコマンドで表示するCPU使用...
-
タスクマネージャのCPU率がおか...
-
コマンドライン上でファイルを...
-
【Process Explorer】について
-
linuxでプロセスが動いているCP...
-
System Idle Processってなに?...
-
CPU使用率取得方法について
-
Windowsホストプロセス Rundll...
-
Windowsで作れるスレッド最大数...
-
プロセスの終了について教えて...
-
プロセスがタスクマネージャー...
-
OS内のアプリケーションファイ...
-
Powershell プロセス二重起動
-
CPU使用率が常に50~10...
-
CPU率が低いのにLoad Averageが...
-
何もしていないのにハードディ...
-
Windows7にしたらCPU使用率が高...
-
【プログラム】 iu14d2n.tmp ...
-
プロンプトが返らない
-
win10でCPU使用率100% 表示だけ?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TOPコマンドで表示するCPU使用...
-
プロセス、サービス、デーモン...
-
コマンドライン上でファイルを...
-
System Idle Processってなに?...
-
タスクマネージャのCPU率がおか...
-
タスクバーの音量アイコンをク...
-
Windowsで作れるスレッド最大数...
-
プロンプトが返らない
-
プロセスがタスクマネージャー...
-
【プログラム】 iu14d2n.tmp ...
-
Windowsで同時にオープンできる...
-
イラストレータでの透明部分の...
-
linuxでプロセスが動いているCP...
-
ときどきCPU使用率が100%になっ...
-
Powershell プロセス二重起動
-
ネットワーク使用率約75%維持状...
-
デーモンモードとは何でしょうか?
-
ps コマンドのステータス。S Ss...
-
httpdの子プロセスがゾンビ化す...
-
sighupとsigtermの違い
おすすめ情報