1 名前:1様 [2009/04/03(金) 22:17:43 ID:0qFlvOW9] UNIX板のスレを見ている方も多数おられるかと思いますが、 まあそれはそれとして、BASHウゼーとか言われる心配なく 平和にLINUX的スクリプト談義しましょうよ。 初めての自作スクリプト、自信ないから見てください。な初心者から トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで いろいろな人に参加して頂けると嬉しいです。 perlやらPythonやらの話が混ざっても良いんでない? Part4 : pc11.2ch.net/test/read.cgi/linux/1210999497/ Part3 : pc11.2ch.net/test/read.cgi/linux/1184077033/ Part2 : pc11.2ch.net/test/read.cgi/linux/1154578200/ Part1 : pc8.2ch.net/test/read.cgi/linux/1121994321/ >>2-5 あたりに色々と。
222 名前:219 [2009/08/05(水) 13:35:06 ID:Sso6+/38] >>221 ありがとうございます。 ネットワークの設定を一般ユーザー(といっても特定のユーザーのみですが) が出来るようにしたいと思っております。 そんなに頻繁にあるわけではないのですがroot権限を持ったものが常駐しているわけでは ないということもありましたのでネットワーク周りだけを触るスクリプトを組みました。 権限の昇格やrootのプロセスをシェルスクリプトで引き継げるようであれば行いたいと思います。 ご存じのかたおられましたらアドバイスいただけると助かります。
223 名前:login:Penguin mailto:sage [2009/08/05(水) 14:02:44 ID:gztfuFMV] そのぐらいならsudoでどぞ。
224 名前:login:Penguin mailto:sage [2009/08/05(水) 21:35:22 ID:dz5dEKuL] >>222 ifcfg-eth0とかに「USERCTL=yes」でroot以外でもできそう www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/ja/ref-guide/s1-networkscripts-interfaces.html
225 名前:login:Penguin [2009/08/08(土) 16:14:34 ID:Nnr+lme9] rebootやshutdownはrootでなくても使用できるんでしょうか? 試しにrootではないsampleユーザーで #!/bin/bash reboot を実行させたら再起動かかったんですが、てっきり弾かれるかパスワード聞かれると思ってました。 上のほうで権限がどうのこうのって質問があったんですが、OSとかによって違うってことですかね。
226 名前:login:Penguin mailto:sage [2009/08/09(日) 11:26:19 ID:1P+Q9AS+] そんなのあんの? rebootやshutdownは管理者権限だろ
227 名前:login:Penguin mailto:sage [2009/08/09(日) 11:34:22 ID:IkGSFCMm] sudoersに書いてたとしてもsudo rebootじゃないと駄目だろうし 何だろ
228 名前:login:Penguin mailto:sage [2009/08/09(日) 11:46:08 ID:0aZIEnpY] >>225 rebootはできてもshutdownはできないんじゃない?
229 名前:login:Penguin [2009/08/09(日) 12:55:17 ID:aaFRdfIZ] ディストリ次第じゃないんですか。Debian ではできないみたいだけど、Vine では 一般ユーザでも shutdown できる (Red Hat 系はみんなできるのかも)。Vine の場合、 /usr/bin/shutdown はシェルスクリプトで、中で halt や reboot を呼び出している。 そして、この halt や reboot はリンクで、実体は /usr/bin/consolehelper。 あとは、man consolehelper ですね。
230 名前: ◆Zsh/ladOX. mailto:sage [2009/08/09(日) 14:01:11 ID:/ZeBm1qf] んーできない。 % cat /etc/redhat-release CentOS release 5.3 (Final) % id uid=500(hage) gid=500(hage) 所属グループ=500(hoge) context=user_u:system_r:unconfined_t % /sbin/shutdown -r now shutdown: you must be root to do that! % /sbin/reboot reboot: must be superuser.
231 名前:229 mailto:sage [2009/08/09(日) 14:18:48 ID:PRPNML+y] >>230 CentOS の場合、/sbin/shutdown じゃなくて、/usr/bin/shutdown はないんですか。 だとしたら、Vine だけなのかな。たしか、「一般ユーザに電源をぶち切られるより、 shutdown を許した方がマシだ」という考えだったと思います。
232 名前: ◆Zsh/ladOX. mailto:sage [2009/08/09(日) 14:27:23 ID:/ZeBm1qf] % /usr/bin/shutdown -r now zsh: そのようなファイルやディレクトリはありません: /usr/bin/shutdown % locate shutdown|grep bin /sbin/shutdown /usr/bin/pm-shutdown なんで無いね。
233 名前:login:Penguin mailto:sage [2009/08/09(日) 16:35:29 ID:CB8fkMOP] # ながいこと Vine しか使ってないから他のディストリのことはわからない。 >>225 シェルスクリプトの "reboot" を /sbin/reboot とか /usr/bin/reboot とかに書き換えてみると動作に違いがでると思う。 > 権限 pam って仕組みで管理されてると思う。/etc/pam.d/ 以下のファイル。 >>225-232 Vine だと usermode っていうパッケージに /usr/bin/consolehelper /usr/bin/halt /usr/bin/poweroff /usr/bin/reboot /usr/bin/shutdown /usr/sbin/userhelper とかいったものが入ってる。usermode-gtk ってパッケージもある。 Description : usermode パッケージには、一般ユーザが設定されたプログラムをスーパーユー ザとして実行できるようにするユーザヘルパープログラムが含まれています。
234 名前:login:Penguin [2009/08/09(日) 22:04:40 ID:ivLlFzN/] シェルスクリプトでコマンド番号を選択したりIPを入力したりするツールつくったんですが、 ctrl+cやIP入力にコマンドを入れてみて実行されるかどうかといった確認はしてみましたが それ以外にセキュリティやテストしてみるといいことなどあれば教えてください。
235 名前:login:Penguin mailto:sage [2009/08/09(日) 22:52:55 ID:C0J3iJDt] スクリプト晒して!
236 名前:login:Penguin mailto:sage [2009/08/09(日) 23:03:57 ID:IVuBeWRI] 晒されても答えようがないような。 C-c が入れられたときの正しい処理とか本人でないと知らないし。
237 名前:234 [2009/08/09(日) 23:20:52 ID:ivLlFzN/] >>235 IP以外の文字が入れられたらといった時の処理はまだいれてませんが 下記のような事を繰り返してconfを書き換えて再起動するという感じです。 read newip $newip="IPADDR=""$newip" sed -i "s/$oldip/$newip/g" /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/rc.d/init.d/network restart menufunc
238 名前:login:Penguin mailto:sage [2009/08/10(月) 00:04:28 ID:CdStD5IJ] >>227 sidを知らんのか。
239 名前:login:Penguin mailto:sage [2009/08/10(月) 01:28:19 ID:qfqY90wM] a b c ... と一語ごとに改行された一つのテキストファイルを a b c d e f g h i j k l m n o ... と言うように10列ごとに改行するテキストにしたいと思い、 スクリプトを組んだのですが動作が遅く、重くなってしまって困惑しています どなたかお知恵をお貸しくださると助かります。 #/bin/bash FILE=$1 LINENUM=`expr 1` OFILE=/dev/shm/hoge while read line do if [ $LINENUM -lt 10 ];then echo -n "$line" >> $OFILE echo -n -e "\t" >> $OFILE LINENUM=`expr $LINENUM + 1` else echo "$line" >> $OFILE LINENUM=`expr 1` fi done <$FILE
240 名前:login:Penguin mailto:sage [2009/08/10(月) 01:50:52 ID:vmT7yJCz] #!/bin/sh FILE=$1 OFILE=/dev/shm/hoge LINENUM=1 while read line do if [ $LINENUM -lt 10 ] then echo -n "$line" echo -n -e "\t" LINENUM=$(( LINENUM + 1 )) else echo "$line" LINENUM=1 fi done <$FILE >$OFILE
241 名前:login:Penguin mailto:sage [2009/08/10(月) 02:00:08 ID:qfqY90wM] >>240 ありがとうございます! 処理が覿面に早くなりました! いちいち書き出さないで最後に一括して書けばよかったんですね…
242 名前:login:Penguin mailto:sage [2009/08/10(月) 02:10:30 ID:vmT7yJCz] >>241 たぶんexprの呼び出しのほうがコストが高いよ
243 名前:login:Penguin mailto:sage [2009/08/10(月) 12:26:13 ID:5IcilgjJ] 自分で動かすだけならこれでいいやと思ったら、そんだけで改善できたのか… ---- #!/bin/sh FILE=$1 OFILE=/dev/shm/hoge sed -e '$!N;$!N;$!N;$!N;$!N;$!N;$!N;$!N;$!N;s/\n/\t/g' <$FILE >$OFILE
244 名前:login:Penguin [2009/08/10(月) 15:31:57 ID:oeYkUDqx] 数字の判定は[0-9]と正規表現使って判定してるんですが IPアドレスかどうかの判定が出来るような正規表現ってあるんでしょうか。 無い脳みそひねってもいい案が出なかったのであれば教えてください。
245 名前:login:Penguin [2009/08/10(月) 15:41:18 ID:86RyWVEw] >>244 ググレばサンプルたくさんあるよ。
246 名前:login:Penguin mailto:sage [2009/08/10(月) 15:59:59 ID:BhLss4cE] お前ならどうするかを教えてやりゃーいいじゃん。
247 名前:login:Penguin mailto:sage [2009/08/10(月) 16:10:10 ID:sXOG+s90] PowerShell神すぎだろ。 このスレ見てると原始人が石斧振り回してるように見えてくるぜ。
248 名前:login:Penguin mailto:sage [2009/08/10(月) 17:33:20 ID:6xgY8KY4] 僕には端末エミュとシェルの違いもわかってないマヌケが見えます。
249 名前:login:Penguin mailto:sage [2009/08/11(火) 00:20:03 ID:GKnhcfe3] >>247 型の概念が邪魔。 コマンドが無駄に長い。 重い。
250 名前:login:Penguin [2009/08/11(火) 00:27:50 ID:4esITO9l] Macのbashもここでいいんでしょうか… OSは10.5.8です。 test.shを ---- #!/bin/sh echo $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12 ---- とします。 ./test.sh 1 2 3 4 5 6 7 8 9 10 11 12 と実行すると素直に 1,2,3,4,5,6,7,8,9,10,11,12 となるのに ./test.sh 1.0 2 3 4 5 6 7 8 9 10 11 12 と小数を入れて実行すると 1.0,2,3,4,5,6,7,8,9,1.00,1.01,1.02 となってしまうのはなぜでしょうか。
251 名前:login:Penguin mailto:sage [2009/08/11(火) 00:35:21 ID:XDXqx0+D] ./test.sh a 2 3 4 5 6 7 8 9 10 11 12 としてごらんなさい
252 名前:login:Penguin [2009/08/11(火) 01:01:07 ID:4esITO9l] >>251 な、な、な、なんでしかこりは! はっ!そうか!… $1,$2...って書いてあるサイトが多いからけっこうな個数使えるのかと思ってました。 ありがとうございました。
253 名前:login:Penguin mailto:sage [2009/08/11(火) 01:07:27 ID:e9ttEiKp] echo $1,$2,$3,$4,$5,$6,$7,$8,$9,${10},${11},${12}
254 名前:login:Penguin [2009/08/11(火) 02:19:40 ID:4esITO9l] >>253 $(10)は試したのに${10}は試してませんでした…orz ありがとうございます。 >>251 を受けてshiftを使う対処法を知りました。 10個以上の引数を扱いたいという目的においては、shiftと${10}の善し悪しはあるんでしょうか。
255 名前:login:Penguin mailto:sage [2009/08/11(火) 02:26:00 ID:MclIhwRq] こーいうトラップがあるからperlに逃げる人が多い
256 名前:login:Penguin mailto:sage [2009/08/11(火) 02:52:40 ID:e9ttEiKp] >>254 $ man bash /位置パラメータ 2 桁以上の数値を含む位置パラメータを展開するときには、ブレース ({}) で 囲まなければなりません。 よって${n}が正解だと思います
257 名前:login:Penguin [2009/08/11(火) 05:29:40 ID:4esITO9l] >>255 僕はこのツンデレな感じが好きです。 >>256 やっぱりそうですよねw 正式名称は位置パラメータかー"引数"という呼び方しか認識してませんでした。
258 名前:sage mailto:sage [2009/08/11(火) 16:31:12 ID:ggsX9yQb] topコマンドの内容をテキストに書き出したいんですが top >> /tmp/top.test とした場合に延々と書き込まれていきます。1度だけtopの内容を取得したいんですが どのように変更すればよいでしょうか?
259 名前:login:Penguin mailto:sage [2009/08/11(火) 16:36:53 ID:zgCywBrU] >>258 man top
260 名前:258 mailto:sage [2009/08/11(火) 17:33:42 ID:ggsX9yQb] >>259 すいません。 manにありました。 現在topの内容をテキストに書き出して、テキストをsedで切り出して表示してるんですが コマンドの戻り値を求めたいと思っておりますが hogera=$(top -i -n1) cpu=`sed -n '/Cpu(s)/p' "$hogera"` こうすると「読み込めません: ファイル名が長すぎます」と出ます。 本来ファイル名の指定なのでうまくいかないのはあたりまえなのですが、 ファイルに書き出す事無くスマートに切り出す方法がありましたら教えてください。
261 名前:login:Penguin mailto:sage [2009/08/11(火) 17:42:23 ID:zgCywBrU] >>260 いまいちやりたいことがわからんが cpu=`top -b -n1 | grep '^Cpu'` か?
262 名前:258 mailto:sage [2009/08/11(火) 17:54:30 ID:ggsX9yQb] >>261 ありがとうございます。 そうか、grepすればいいだけの事ですね。 どうやら無意味にテンパってしまってるようです。 すいません。最後に1つだけ疑問に思っていることがあるのですが シリアルコンソールで見る画面は横70文字にしとけって言われたんですが 何かそういった規格かなにかあるんでしょうか。検索してみてもそられしいものが 引っかからなかったんですが、70文字だとなかなか厳しいものがあるので 特に根拠のない文字数であるなら超えても構わないのではないかと思っております。 たびたびの質問で申し訳ありませんが、識者の方でご存じの人いたら教えてください。
263 名前:login:Penguin mailto:sage [2009/08/11(火) 17:55:36 ID:zgCywBrU] >>262 スレ違い。
264 名前:258 mailto:sage [2009/08/11(火) 18:03:42 ID:ggsX9yQb] >>263 解答ありがとうございます。 スレ違いとのことですが、これはどういったスレで質問するのがよろしいのでしょうか。 シェルスクリプトの表示だったのでこちらに投げさせていただいたのですが どういった方面のスレかだけでも助言いただけないでしょうか。
265 名前:login:Penguin mailto:sage [2009/08/11(火) 18:07:41 ID:zgCywBrU] >>264 くだらねえ質問はここに書き込め! Part176 pc11.2ch.net/test/read.cgi/linux/1246986882/
266 名前:login:Penguin mailto:sage [2009/08/12(水) 00:03:08 ID:0UM4nevW] >>263 きびしー
267 名前:login:Penguin [2009/08/12(水) 00:05:03 ID:I1tOnENr] >>264 VGAとかSVGAとか解像度で違うっての聞いたことある。 もしかしたら全然違うかもしれんがそういうときはきっと誰か激しく突っ込んでくれるはず。
268 名前:login:Penguin mailto:sage [2009/08/12(水) 00:10:31 ID:u9/Em9/R] >>267 ぜんぜん違う話。
269 名前:login:Penguin mailto:sage [2009/08/12(水) 05:02:52 ID:0UM4nevW] $ cat<<<h$(cat<<<e$(cat<<<l$(cat<<<l)o)\!)
270 名前:login:Penguin [2009/08/12(水) 14:49:33 ID:/9MBM8gW] 特定文字列が含まれてるかどうかの判断って出来ますか? sedとかで文字の置き換えとか入れ替えが出来る程度のレベルです。 dg=`route | grep '192.168.24.1'` でdgの中にug含まれているかどうかを確認したいと思ってます。
271 名前:login:Penguin mailto:sage [2009/08/12(水) 14:51:54 ID:u9/Em9/R] >>270 route | grep '192.168.24.1' | grep ug ってこと?
272 名前:login:Penguin mailto:sage [2009/08/12(水) 14:59:52 ID:LZ159q8G] >>270 case "${dg}" in *ug*) # match ;; *) # not match ;; esac
273 名前:270 [2009/08/12(水) 15:13:57 ID:/9MBM8gW] >>271 そうでした。パイプでさらにgrepすればよかったですね。 こちらの方法でも出来ました。 ありがとうございます。 >>272 判定までしていただいて助かります。 こちらの方法で出来ました。 ありがとうございます。 まだまだよくわかってないですがここで質問しなくてもすむように勉強したいと思います。
274 名前:login:Penguin [2009/08/12(水) 18:46:07 ID:jKHDnL7q] シェルスクリプトでサーバーのチェックをしてます。 それ自体はcronで定期的に行ってますが、これと併せて定期的にデータを送信出 来ればと考えてます。 実際にはチェックして引っかかったサーバーにzipを送り、サーバーは時間が来 れば勝手に実行するという感じですが、シェルスクリプトでzipデータを別サー バーに送るとかいうことが可能でしょうか。 可能ならどんな関数を使えばよいかアドバイスもらえないでしょうか。 初歩的な質問かと思いますが宜しくお願いいたします。
275 名前:login:Penguin mailto:sage [2009/08/12(水) 18:54:50 ID:8iPFdi1w] 金玉 → >>274 。゜( ゜^∀^゜)゜。アーッハハハハノヽノヽノヽノ\ / \
276 名前:login:Penguin mailto:sage [2009/08/12(水) 21:03:12 ID:0s7n/+F7] >>274 sshの鍵交換してパスワードを聞かれないようにしておいて scpなりrsyncなりで送れば良いと思う。
277 名前:login:Penguin mailto:sage [2009/08/12(水) 23:35:06 ID:tCsvaW+m] >>239 これはどう? #/bin/bash FILE=$1 OFILE=/dev/shm/hoge xargs < $FILE -n10 | tr " " "\t" > $OFILE
278 名前:login:Penguin mailto:sage [2009/08/12(水) 23:40:23 ID:tCsvaW+m] >>277 じこれす まちがった xargs < $FILE -n10 | tr ' ' \\t > $OFILE です。
279 名前:login:Penguin mailto:sage [2009/08/12(水) 23:56:35 ID:0UM4nevW] すげー
280 名前:login:Penguin mailto:sage [2009/08/14(金) 09:45:57 ID:vesWTwzQ] 変数COUNTER の値が10より小さければ MMF0009 と表示 100より小さければ MMF0099 と表示 1000より小さければ MMF0999 と表示 1000ならば MMF1000 と表示 というスクリプトをcase 文を用いてすっきり書きたくて下記の通り書きましたが、 算術式及び、case の構文の違いでしょうか間違っています、ご教示願えないでしょうか。 #!/bin/bash COUNTER=0 DIGIT3=000 DIGIT2=00 DIGIT1=0 while [ ${COUNTER} -lt 999 ] do case "$COUNTR" in `expr ${COUNTER}` -lt 10) echo "MMF$DIGIT3$COUNTER";; `expr ${COUNTER}` -lt 100) echo "MMF$DIGIT2$COUNTER";; `expr ${COUNTER}` -lt 1000) echo "MMF$DIGIT1$COUNTER";; `expr ${COUNTER}` = 1000) echo "MMF$COUNTER";; esac COUNTER=`expr ${COUNTER} + 1` done
281 名前:login:Penguin mailto:sage [2009/08/14(金) 09:56:51 ID:HEs3iRVc] >>280 manpageより case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac A case command first expands word, and tries to match it against each pattern in turn, using the same matching rules as for pathname expansion (see Pathname Expansion below).
282 名前:login:Penguin mailto:sage [2009/08/14(金) 10:03:19 ID:GRUhI9LP] こういうこと? seq -f 'MMF%04.f' 0 1000
283 名前:login:Penguin mailto:sage [2009/08/14(金) 15:19:52 ID:VHMVUNf7] >>280 すっきり書いてみた。 #! /bin/sh COUNTER="$1" DIGIT1=000 DIGIT2=00 DIGIT3=0 DIGIT4= eval 'echo "MMF${DIGIT'"${#COUNTER}"'}${COUNTER}"'
284 名前:283 mailto:sage [2009/08/14(金) 15:31:27 ID:VHMVUNf7] printfがあれば更にすっきり。 #! /bin/sh COUNTER="$1" printf 'MMF%04d\n' "${COUNTER}"
285 名前:login:Penguin mailto:sage [2009/08/14(金) 23:08:31 ID:vesWTwzQ] >>280 です 皆さんどうもありがとうございます。 C のswitch〜case構文のようなものかと勘違いし、case の使い方が全然間違ってましたし他にも細かなミスがありましたが、調べてこんな感じで期待通りの振る舞いができました case $COUNTR in ?) echo "MMF$DIGIT3$COUNTER" ??) echo "MMF$DIGIT2$COUNTER" ??) echo "MMF$DIGIT1$COUNTER" 1000) echo "MMF$COUNTER" esac それから、seq とかeval の使い方も調べて見ます、どうもありがとう。
286 名前:login:Penguin mailto:sage [2009/08/14(金) 23:17:06 ID:vesWTwzQ] >>285 です もう一つお願いします。 シェルスクリプト というのは、そのような仕組みになってるんでしょうか? 単純にインタプリタ型の言語なのでしょうか、自分としてはそうではない気がします なぜなら、sudo コマンドを使う場合、シェルスクリプトの場合、スイッチ を付加して実行しますが それは直接、カーネルに対してオペレーションしているような気がするのですが?詳しい方が居られましたら教えてください。
287 名前:login:Penguin mailto:sage [2009/08/14(金) 23:19:32 ID:vesWTwzQ] ×シェルスクリプト というのは、そのような仕組みになってるんでしょうか? ○シェルスクリプト というのは、どのような仕組みになってるんでしょうか?
288 名前:login:Penguin mailto:sage [2009/08/14(金) 23:40:04 ID:4UQz02FW] >>286 >それは直接、カーネルに対してオペレーションしているような気がするのですが? 気のせいです。 手始めにforkとかexecvとか調べたらいいんじゃね?
289 名前:login:Penguin mailto:sage [2009/08/14(金) 23:56:56 ID:cgRLII5a] インタプリタだよ。 sudoは、シェルとは別のプログラムです。 シェルスクリプト中で、シェルのビルトイン関数やらで無いコマンドを書くと、 シェルは、その名前のプログラムを探してそれを実行しようとします。 上に出てきた中で言うと、 while case echo evalはシェルのビルトイン関数(?)で seq printf sudoは外部プログラムです。 「カーネルに対してオペレーションしている」云々は、 言っている意味が良く分かりません。 全ての意味のあるプログラムは、直接的にしろ間接的にしろ、 カーネルと相互作用するはずですから。
290 名前:login:Penguin mailto:sage [2009/08/15(土) 01:56:48 ID:niIslDjl] while, case と echo, eval はくくりが別だけどな。 type while とか type echo とかやってみ。
291 名前:login:Penguin mailto:sage [2009/08/15(土) 19:58:45 ID:4JYHgxvW] >>286 です 皆さんThxです。
292 名前:login:Penguin [2009/08/15(土) 23:51:22 ID:O3QLwBfx] read packetcount read port tcpdump -n -c$packetcount -s1500 -vvv -X port $port こんな感じでパケット見てるんですが、1パケットごとに色を変えることは出来ますか? 文字色の指定方法はわかるんですが、そういった指定方法や手法があればおしえてもらえないでしょうか。 なければおとなしくあきらめます。
293 名前:login:Penguin mailto:sage [2009/08/16(日) 02:00:07 ID:kxH41sn/] >>292 色は無理。 portが読み込まれていない。
294 名前:login:Penguin mailto:sage [2009/08/16(日) 02:32:16 ID:m+r83sIL] >>292 C1="$(tput setaf 0)" C2="$(tput setaf 1)" tcpdump -n -c 10 -s 1500 -vvv -X | while IFS="" read l;do if [ "$l" = "${l#$'\t'}" ]; then echo -n "$C1" A="$C2";C2="$C1";C1="$A" fi echo "$l" done こんな感じ? >>293 の言っている意味がわからないので外してるかも…。
295 名前:login:Penguin [2009/08/17(月) 09:43:35 ID:WnQqR0f7] #!/bin/bash echo -e "|""`top -i -n1 | grep '^Cpu(s)'`""|"; ちょっとおおざっぱですが上記の方法でtopの内容を抜き取ってます。 Windows付属のハイパーターミナルで見ると普通に表示されるのですが、他のターミナルソフトで(tera termとか)で見ると Cpu(s): 1.2%us, 1.2%sy, 0.0%ni, 96.3%id, 1.1%wa,erial8250: too much work for irq4 0m 0.1%hi, 0.2%si, 0.0%st| こんな感じで途中にerial8250〜と表示されます。 これを検索してもそれらしいものも出てこず、何が原因かわからないでいます。 原因をご存じの方いましたらヒントかアドバイスもらえると助かります。
296 名前:login:Penguin mailto:sage [2009/08/17(月) 11:19:54 ID:Pf83pCV6] >>295 コピペ間違ってないかな? 「serial8250: too much work for irq4」なら 次のページが引っかかった。 eve-japan.co.jp/demos/linux-boot-demo.html ターミナルソフトによって異なるのは$TERM の問題なのかな? 表示自体は 単に stderr へのメッセージが表示されてるのか とおもうけど。「2>/dev/null」とかつけたら 変わるのかな
297 名前:295 [2009/08/17(月) 11:55:51 ID:WnQqR0f7] >>296 文字コードとかの問題でsが抜けてるっぽいです。 ログを見たら同じ記述があったのでメッセージが画面に出てるっぽいですね。 方法としては破棄する(やり方調べないといけないけど)かserial8250: too much work for irq4をsedとかで 消し去るくらいでしょうか。 スマートではないですがとりあえず消し去る方向で行ってみます。 ありがとうございます。
298 名前:login:Penguin mailto:sage [2009/08/17(月) 12:12:38 ID:cm75eODq] シリアルコンソールだよね? カーネルがprintkで出してるからsedとかじゃムリだと思う。 消したいなら/proc/sys/kernel/printkをいじるとか。
299 名前:297 [2009/08/17(月) 12:52:29 ID:WnQqR0f7] >>298 ありがとうございます。 調べて6417を5417に替えようとしたら"printk" E667: Fsync failedとか出てきて 書き換えさせてくれませんでした。 解決方法はまだわかってませんがなかなかハードルが高そうです。
300 名前:297 [2009/08/17(月) 13:10:38 ID:WnQqR0f7] 補足です。 echo -e "|""`top -i -n1 | grep '^Cpu(s)'`""|"; の部分を消したら表示されなくなりました。 topした時だけ出てるみたいです。理由はわかりませんが。 top内容を >> top.datとかに書き出してそこから引っ張ってくれば 表示されないようになるかもしれません。 根本的な解決にはなってませんが・・・。
301 名前:300 [2009/08/17(月) 17:13:08 ID:WnQqR0f7] さすがにスレ違かと思いますが、/proc/sys/kernel/printkというのはviでの編集は不可ですか? ググってはいるんですが編集が出来ずに困っております。 もしかしたら凄い見当違いな事を行っているのかもしれませんが解決のヒントもらえると助かります。
302 名前:login:Penguin mailto:sage [2009/08/17(月) 17:20:05 ID:R0skv6Jz] >>301 さすがにスレ違い。
303 名前:300 [2009/08/17(月) 17:30:37 ID:WnQqR0f7] >>302 すいません。 くだ質に行ってみます。
304 名前:login:Penguin mailto:sage [2009/08/18(火) 06:39:39 ID:elYCry/8] >>301 echoするもんでしょ。JK。
305 名前:login:Penguin mailto:sage [2009/08/18(火) 08:01:40 ID:8XgVhYMF] そうか? sysctl -w kernel/printk=foobar
306 名前:login:Penguin mailto:sage [2009/08/18(火) 09:35:31 ID:BInCpQzK] もうくだ質に移動したよ。
307 名前:login:Penguin [2009/08/18(火) 18:39:48 ID:S4j+NJGU] moge.dat testjama na moji sakujo="jama na moji" okikae="" echo `more /tmp/moge.dat | grep '^test' | sed -i s/$sakujo/$okikae/g` これでmoge.datの中からtestだけ表示出来るのではないかと思っていたのですが sed: -e 表現 #1, 文字数 13: 「s」コマンドが終了していません というエラーが表示されます。オプションで-eも使用していませんし構文的には大丈夫そうに思えたのですが 間違いがあればご指摘いただけないでしょうか。
308 名前:login:Penguin mailto:sage [2009/08/18(火) 19:03:56 ID:9vBuj+t/] sed 's/jama na moji//g' moge.dat じゃいかんのか? なぜechoしたりmoreしたりgrepしたりするのか意味わからん
309 名前:login:Penguin mailto:sage [2009/08/18(火) 19:12:00 ID:I/MV7qz2] sed の -i はなぜつけているんだい?
310 名前:307 [2009/08/18(火) 19:31:44 ID:S4j+NJGU] >>308 単純にmoreで見た中身をgrepしてそこからさらに削ればいいのかなと思い 検索をしてパイプでつなげただけの状態です。 また説明が足りませんでしたがmoge.datは複数行あってtestから始まる行が いくつかあったことから素人考えでこのようになりました。 >>309 すいません。 別の場所のsedをコピーしたときについたみたいです。 この場合は必要ないですね。
311 名前:login:Penguin mailto:sage [2009/08/18(火) 19:37:15 ID:9vBuj+t/] sed '/^test/s|jama na moji||g' moge.dat
312 名前:login:Penguin mailto:sage [2009/08/18(火) 19:43:42 ID:0jjNf9FI] >>307 の直接の答えを言うと、 sed -i s/$sakujo/$okikae/g ↓ sed -i s/jama na moji//g ↓ sed -i 's/jama' 'na' 'moji//g' と引数4つに解釈されるから。
313 名前:login:Penguin mailto:sage [2009/08/18(火) 22:00:14 ID:elYCry/8] >>306 マルチって死ねばいいと思う
314 名前:login:Penguin mailto:sage [2009/08/18(火) 22:23:21 ID:Df7zfcy/] スレ違いを指摘されて移動してるんだから、マルチとは言わないだろ
315 名前:login:Penguin [2009/08/19(水) 11:19:58 ID:zpPUbNQu] ログをとりたくてmessagesに内容を出すようにしたいのですが echo "logtest" >> /var/log/messages としても書き出されません。 このファイルとユーザー自体はrootではないので権限が問題かと思ってます。 このexampleユーザーはwheelに入れており、sudoで%wheel ALL=(ALL) ALLと念のため指定しましたがダメでした。 これは構文自体が間違っているということでしょうか。
316 名前:login:Penguin mailto:sage [2009/08/19(水) 11:38:22 ID:GJ3CGMhT] >>315 sudo echo "logtest" >> /var/log/messages とかやったの? これだと >> 以下は sudo の外にあるから効かない。 sudo sh -c 'echo "logtest" >> /var/log/messages' とかやればいい。 つーか logger で書いたら。
317 名前:login:Penguin [2009/08/19(水) 15:03:44 ID:9fjqV7Pu] コマンドの実行結果を>>で適当なテキストに出力して見てみると [H [J [0;10mtop - 20:06:35 up 51 min, 3 users, load average: 0.00, 0.00, 0.00 [0;10m [39;49m [K いろんなコマンドでこんな感じになってるんですがこれは何なのでしょうか? これはtop内容ですがなぜこうなるのかがわかりません。 表示されている文字だけをテキストに出したいのですがどうすればいいでしょう か。
318 名前:315 [2009/08/19(水) 15:07:02 ID:zpPUbNQu] >>316 素早いレスありがとうございます。 1個の命令として見られていなかったわけですね。 loggerでかけるところはそうしたいのですが、他にもいくつかファイルがあって そちらでも追記したいと思っておりました。 まだ試してませんがこれでいってみたいと思います。
319 名前:login:Penguin mailto:sage [2009/08/19(水) 15:08:58 ID:yGi4QWIv] topの人はtopの何を切り出したいのだ? ロードアベレージ?
320 名前:login:Penguin mailto:sage [2009/08/19(水) 15:09:49 ID:GJ3CGMhT] >>317 top なら -b で。 >>261 でも書いたはずだが。
321 名前:login:Penguin mailto:sage [2009/08/19(水) 15:16:10 ID:GJ3CGMhT] >>317 ファイルへの出力は 基本的にはただの文字を順に追記していくだけ。 画面への出力は文字を反転させたり色を変えたり いったん書いたものを戻って書き直したりする。 画面用の出力をそのままファイルに出すとおかしなことになる。
322 名前:login:Penguin mailto:sage [2009/08/19(水) 21:31:13 ID:rKA7cUBO] echo "logtest" | sudo tee -a /var/log/messages teeってマイナー?