タグ

Linuxに関するbohemianwayのブックマーク (23)

  • @IT:/procによるLinuxチューニング [前編](1/2)

    /procによるLinuxチューニング [前編] ~ /procで理解するOSの状態 ~ Linuxの状態確認や挙動の変更で重要な役割を担うのが/procファイルシステムである。前編では/procの概念や/procを利用したOSの状態確認方法を理解していただきたい。(編集局) 遠田 耕平 2002/12/10 稿では、/procファイルシステムによるカーネルチューニングを紹介します。カーネル2.4.19をベースに説明していきますが、カーネルのバージョンによって内容が異なる場合があります。また、ディストリビュータが独自の拡張を施しているものもあります。従って、これから説明する内容がすべて当てはまるとは限りません(端的にいうと説明の対象が存在しなかったり、説明されていない機能が追加されていることがあります)。 /procファイルシステムとは /procは、Linuxシステムの/(ルート)に「

  • sudoで環境変数を引き継ぎたい|ざる魂

    sudo -u hogeなどで実行すると、sudoを実行したユーザの環境変数が引き継がれない。 昔は、こんなこと考えずに引き継がれてた気がするが、どうやらsudoのバージョンが上がって 仕様変更されたらしい。 http://arika.org/2009/04/24/sudo-and-env 環境変数を引き継ぐためにはvisudoを使ってsudoersファイルに環境変数を記述するのが 定石のようだが、/etc配下はできるだけ触りたくない。 そこで下記の方法を見つけた。-Eをつけるだけで良いらしい。 http://d.hatena.ne.jp/Yudoufu/20110326/1301129885 ただし、man sudo しても-Eオプションは何故か載っていなかった。 (manにないだけで実際には使用できる。) manの最後にver1.6.6とあるのでマニュアルが古いと思われる。 sudo[

  • Linuxのxargsには–no-run-if-empty付けとけ

    みたいなのがあったとして、これが時々エラー吐く、みたいなことがあったんですわ。あー xargs の呼び出すコマンド(例えば rm )に入力がないときにエラー出るんかー、変なのーって思いながら、ちょこちょこそれを忘れては引っかかり、をくり返していたんです。 なんでか今日分かりました。BSD の xargs を使った場合はそういうエラー出ないのです。だからすぐ忘れる。 GNU のバカーと思ったりしたのですが、man の恐ろしい量のオプションを読んでいたら なんて文字が! なんてこった。というわけで実際のスクリプトの一部はこんな感じにしてみた。 BSD のクセに gnu findutils 使ってるとか cygwin 使ってるやつのことなんか知らない。 [2011-11-09 追記] 最近の BSD xargs には -r というオプションがあって、これが findutils の xargs の

  • xargs で標準入力が空だったら何もしない - Qiita

    find /hoge/fuga -ctime +30 -type f -print | xargs rm などしたときに、何もfindの条件にマッチしなかったら、単に引数なしのrmが実行され rm: missing operand Try `rm --help' for more information. となる。 こういったエラーを出したくない場合は、--no-run-if-empty を使って find /hoge/fuga -ctime +30 -type f -print | xargs --no-run-if-empty rm としてやると、findの結果が空の場合は、rmが実行されず、エラーも出ない。 Register as a new user and use Qiita more conveniently You get articles that match your n

    xargs で標準入力が空だったら何もしない - Qiita
  • usermod -G でユーザに新しいサブグループを追加してはいけない - 続・夕陽のプログラマ

    例えば subversion サーバを設定するとき、subversion グループを作成する。 % sudo groupadd subversion ここで、作成したグループをユーザーに追加するのに、決して usermod -G を使ってはいけない。 % sudo usermod -G subversion user # ダメ! 「確かに」これでユーザーは subversion グループに設定できる。だが誤った使い方である。何がいけないか。 既に設定されていた他のグループの設定が全部飛ぶのだ! 特に怖いのが、個人でUbuntuを使っている場合に唯一のユーザである人が admin グループから外れること。 不具合に気がついて vigr で修正しようにも、sudo が利かない! もちろんリカバリーモードで復旧は可能*1だし(/etc/group- というバックアップファイルが作られるようだ)

    usermod -G でユーザに新しいサブグループを追加してはいけない - 続・夕陽のプログラマ
  • topコマンドで覚えておきたい使い方14個 | 俺的備忘録 〜なんかいろいろ〜

    topコマンドといえば、よくLinuxのパフォーマンス状態をモニタリングするために利用されているコマンドだ。 今回は、そんなtopコマンドで覚えておきたい使い方14個を紹介する。 なお、検証で使用したtopコマンドはCentOS 7 で利用している「procps-ng version 3.3.9」のものとなっている。 1.基的な使い方 基的には、オプション無しで以下のようにコマンドを実行する。 top top - 07:21:06 up 4 days, 17 min, 4 users, load average: 0.00, 0.00, 0.00 Tasks: 186 total, 1 running, 185 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0

  • grep, awk, sed でバッファしない方法 | TECHSCORE BLOG | TECHSCORE BLOG

    こんにちは、TechscoreBlogのログ閲覧が日課になっている河野です。 ログをtailでリアルタイムに見ているときに、grep, awk, sedと組み合わせることがあります。ところが、特にオプションを指定しないと、各コマンドでバッファされてしまうので、ログの表示が遅延することがあります。単にアクセス状況を眺めているだけなら問題ありませんが、チューニングしてる時とか気になりますよね。 そんなわけで、今回はバッファさせない方法を紹介します。 grep : --line-buffered grepでのオプションです。正確にはバッファさせないのではなくて、1行毎に出力するというオプションです。 tail -f logfile | grep --line-buffered -vE '\.(css|js|ico|png|gif|jpe?g)'

  • sudoでulimitをしたら「sudo: ulimit -Sn: コマンドが見つかりません」と言われた - sgykfjsm.github.com

    elasticsearchの調子が悪かったので、いろいろ調べていた。その途中でnofilesの上限を調べようと思って、以下のようにコマンドを叩いたらコマンドが見つからないって言われた。 $ sudo -E -u elasticsearch 'ulimit -Sn' sudo: ulimit -Sn: コマンドが見つかりません で、あれ?って思っておもむろに確認してみたら、ulimitはcdとかechoのようなビルトイン関数だった。 $ which ulimit /usr/bin/which: no ulimit in (~/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/fujishima/bin) $ whereis ulimit ulimit: /usr/includ

  • たった6個のsedを通せば、Apacheログは驚くほど扱いやすくなる - Qiita

    Q. awk '{print $9}'とかでUser-Agent丸ごと取り出したい とか思ったことない? Apacheのログ解析で。でもできないじゃない。例えば 192.168.0.1 - - [17/Apr/2014:11:22:33 +0900] "GET /index.html HTTP/1.1" 200 43206 "https://www.google.co.jp/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36"

    たった6個のsedを通せば、Apacheログは驚くほど扱いやすくなる - Qiita
  • /tmp と /var/tmp の違い - しょぼんメモリ (´・ω・`)

    どちらも一時ファイルを保存するディレクトリだけれど、ちゃんと説明があったのでメモ。 /tmp ・再起動するとファイルは消える ・定期的に削除される(10日) /var/tmp ・再起動してもファイルは消えない ・定期的に削除される(30日) CentOS 6.xの場合・・・ 再起動後の処理は、/etc/rc.d/rc.sysinit で行われる。 定期的に削除する処理は、/etc/cron.daily/tmpwatch で行われる。 これらの用途は、FHS(Filesystem Hierarchy Standard(ファイルシステム階層標準)に記載されている。 Filesystem Hierarchy Standard http://www.pathname.com/fhs/ FHS 2.3によると・・・ /tmp:P.15 The /tmp directory must be made

    /tmp と /var/tmp の違い - しょぼんメモリ (´・ω・`)
    bohemianway
    bohemianway 2014/10/13
    tmpwatchはソケットファイル消さないため結構長い間誤解してたんだけど、man見てもこのあたりの言及が見当たらない。勘違いしてるのかな...?
  • sshを制限してsftpだけ許可する - GeekFactory

    ファイル転送用のアカウントでは、sshを制限してsftpのみ許可したい場合があります。ログインシェルを/sbin/nologinに変更すると、sshだけでなくsftpも制限されてしまいます。そのような場合はsshd_configのForceCommandを使います。 例えば、 # /etc/ssh/sshd_config #... # override default of no subsystems Subsystem sftp /usr/lib64/misc/sftp-server Match User hoge ForceCommand /usr/lib64/misc/sftp-server と書くと、ユーザhogeはsftpしか使えなくなります。sshクライアントから接続しようとしても、セッションがsftp-serverに流れるのでbashは使えません。

    sshを制限してsftpだけ許可する - GeekFactory
  • 2007-11-22

    http://alohakun.blog7.fc2.com/blog-entry-878.html なんかこのへん見て GCC の switch の最適化とか見てたら、単なるテーブルジャンプ以外のちょっと面白い最適化が目につきました。 http://shinh.skr.jp/m/?date=20071121#p01 でもテーブルルックアップにはかなわんかなぁとまぁ適当に自分でちょっとやってみました。 #include <stdio.h> int table[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, 0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0

    2007-11-22
  • chroot - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "Chroot" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2020年12月) chrootとは、UNIXオペレーティングシステム (OS) において、現在のプロセスとその子プロセス群に対してルートディレクトリを変更する操作である。ルートディレクトリを別のディレクトリに変更されたプロセスは、その範囲外のファイルにはアクセスできなくなるため、この操作をchroot監獄や模擬ルートなどとも呼ぶ。"chroot" は chroot(2) システムコールおよび chroot(8) コマンドを意味する。 chroot システムコールは、Unix

  • Inode - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "Inode" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2020年12月) inode(アイノード)は、ext2などのUnix系ファイルシステムで古くから使われているデータ構造である。inode にはファイル、ディレクトリなどのファイルシステム上のオブジェクトに関する基情報が格納される。 ReiserFSなどの最近のUnix系ファイルシステムでは inode を使用していないが、同等の機能を提供するには同等の情報をどこかに格納しなければならない。statシステムコールがそれらのデータをプログラム向けに提供するので、これを statデ

    Inode - Wikipedia
  • シェルスクリプトを公開するとき, コマンド前にバックスラッシュをつけるべき - Shohei Yoshida's Diary

    oh-my-zsh の環境で、peco-select-history が動かない - Qiita 追記 2014年 7月 7日 シェルスクリプトと書いてしまい漠然すぎましたが, ここで述べている ことが問題になるのは, .bashrc, .zshrcに関数, alias設定等がコピー される場合や, sourceコマンドでファイルを読み込む場合です. non-interactiveに実行されるシェルスクリプトについては特に 問題ないです. 問題点 そうしないと, 公開されたコマンドを自分の環境に導入した場合, aliasにより正しく動かなく場合があるためです. aliasをつけがちな コマンド(ls, grep等)がシェルスクリプトに含まれていると 特に問題が起こる可能性が高くなります. 例 pecoを使って カレントディレクトリのファイルをページャで開く 例を考えてみましょう. 単純に考

    シェルスクリプトを公開するとき, コマンド前にバックスラッシュをつけるべき - Shohei Yoshida's Diary
  • iptablesで帯域制限しながらネットワーク負荷をかける - 気ままにインフラエンジニア

    netperfはネットワークの速度を測定するのにいいツールだけど、拠点間なりサービスなりが入っているネットワークで気軽に使って通信が過大になってしまっては怒られると思う。 ので、送信側のiptablesで帯域を制限しながら負荷をかける。*1 今回はiptablesnetperfを使う場合。 送信側のnetperfのオプション netperf -H [hostname|ip] -f M -p 12865 -- -P 12866 iptablesのルールに確実に引っ掛けるため、ポートを明示して利用する。 送信側のサーバーに帯域制限のiptablesを設定する -A OUTPUT -j ACCEPT -p tcp --dport 12866 -m hashlimit --hashlimit 1000/sec --hashlimit-mode dstip --hashlimit-burst 20

    iptablesで帯域制限しながらネットワーク負荷をかける - 気ままにインフラエンジニア
  • /etc/init.d/hoge start と service hoge start は何が違う?

    cles::blog 平常心是道 blogs: cles::blog NP_cles() « X220 が Fan Error. により完全に沈黙 :: X220 のファンユニットを交換 » 2014/06/04 /etc/init.d/hoge start と service hoge start は何が違う?  systemmanagemant  cli 214 4へぇ 普段、Linux でデーモンを制御するには /etc/init.d/hoge というスクリプトを叩いている*1のですが、あるマニュアルを読んだら service hoge を使いましょう的なことが書いてありました。 試してみると確かに /etc/init.d/hoge start の代わりに service hoge start としても同じようにデーモンが起動できるようです。 ただ、困ったことに僕にはこの2つの違いが

    /etc/init.d/hoge start と service hoge start は何が違う?
  • シェルスクリプトのデバッグは typeset または declare を使うと良いかも - よんちゅBlog

    はじめに つい最近知った便利なデバッグ方法 (長年シェルスクリプトを書いているのに知らなかった。これが常識だったら恥ずかしい…) シェルスクリプトのデバッグでは echo で変数の中身を見るという原始的な方法をよく使うかと思います。 いわゆる プリントデバッグ というやつですね。 もう少し詳しいデバッグが必要な場合は、 set -x と set +x でデバッグしたい部分を囲むという方法もあります。 今回は プリントデバッグ で使う echo の代わりに typeset or declare を使うと良いというお話です。 プリントデバッグは typeset or declare を使おう typeset or declare は変数宣言などでよく使うコマンドですが、変数の中身を見るのにも使えます。 echo と比べて何が良いのかというと、変数の中身はもちろん変数名や変数の型も表示してくれ、

    シェルスクリプトのデバッグは typeset または declare を使うと良いかも - よんちゅBlog
  • いい加減、>/dev/null 2>&1と書くのをやめたらどうか (追記あり) · DQNEO日記

    はじめに これから書く内容は、シェルスクリプトをばりばり書いている現場(サーバエンジニアインフラエンジニア)向けのものではありません。 年に数回crontabをいじるような現場(サーバに詳しくないアプリケーションプログラマが多数を占めるような現場とか、Webデザイナや非プログラマがcrontabをおそるおそるいじったりするような現場)を想定しています。 >/dev/null 2>&1 の問題点 この記法の問題点は、「覚えにくい、間違えやすい、間違ってても気づかない」ということです。 初心者を迷わせる要素がこんなにあります。 >/dev/nullは先か後か 1と2はどちらが先か &はどこに書くのか よって下記のように多種多様なミスが起こり得ます。 2>&1 >/dev/null >/dev/null 1>&2 >/dev/null 2>1& >/dev/null &2>1 これをぱっと見て

    いい加減、>/dev/null 2>&1と書くのをやめたらどうか (追記あり) · DQNEO日記
  • UNIXシグナルメモ(Hishidama's UNIX Signal Memo)

    UNIXはプロセスに対してシグナルを送って割り込み処理をさせることが出来る。 プログラム側はシグナルをマスクすることによって、シグナルを捕捉して独自の処理を行うことが出来る。 シグナルの種類はUNIXの種類によって異なるので、自分で使うOSに合わせる必要がある。(killコマンドを使えば、そのOSがどのシグナルをサポートしているのか確認できる) シグナルのマスク sigtest.c: #include <stdio.h> #include <signal.h> #include <pthread.h> void* SignalThread(void* arg) { sigset_t set; int r; //setを初期化 r = sigfillset(&set); if (r != 0) return NULL; //デフォルト動作を行うシグナルを指定(マスク対象から外す) r = s