タグ

Linuxに関するryochackのブックマーク (62)

  • Google Sites: Sign-in

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode

    ryochack
    ryochack 2016/08/18
    tmpfsはRAM Disk
  • 第2章 ハードウェア機能をカスタマイズする

    章では、Armadillo-400 シリーズのハードウェア機能をカスタマイズする方法について説明します。 Armadillo-400シリーズは、標準状態でシリアルインターフェース1(CON3)をコンソールとして使用します。コンソールには、起動ログやカーネルメッセージなどが出力されるため、標準の設定ではシリアルインターフェース1に外部機器を接続して使用するといったことはできません。ここでは、コンソールとして別のシリアルインターフェースを使用する方法について説明します。例として、コンソールをシリアルインターフェース2(CON9 3、CON9 5)に変更します。 第1部「起動の仕組み」でも説明したように、コンソールに文字を表示するプログラムには、ブートローダー、Linuxカーネル、ユーザーランドアプリケーションプログラムの3種類があります。 まず、ブートローダーの起動ログとカーネルメッセージを

  • OOM Killerにであったら何をするべきか?

    OOM killerで大事なプロセスが殺される。困りますね。。 google で OOM Killerと入力すると 「無効」とか補完されます。しかしどうするのが良いのか、あまりよく説明されている記事がみあたらなかったので自分の考えをメモしておきます。 OOM Killer の目的は何か? まずは何故OOM Killerが発生しているのかについて、ざっくりイメージをつかみましょう。linux kernelはプロセスからの「メモリくれ」という要求に対してたぶん足りそうだという場合に「OK」といって渡します。実際のメモリ割り当てはアクセスが発生するタイミングまで遅延させます。これを遅延アロケーションといい、だいたいにおいてうまく動きます。ただし必ずうまくいくと保証されているわけではないので破綻することがあります。 OOM Killerはこの遅延アロケーションが破綻しそうなときに、適当にプロセスを

  • 既存プロセスの標準出力と標準エラーを奪う - Qiita

    #!/bin/bash # 既存プロセスの標準出力と標準エラーを奪う http://bit.ly/1neWKth # ターゲットのPID pid=$1 [[ -d /proc/$1/fd ]] || exit 1 # 出力先はttyやファイルを指定 out="$2" # 出力先の指定がない場合は現在のttyを出力先にする if [[ -z $out ]]; then # プロセスに紐付いたttyを取得する http://bit.ly/1eDpRpu function search_tty() { local pid=${1:-$$} tty="" while [[ 1 -lt $pid ]]; do [[ -d /proc/$pid/fd ]] || break tty=$(readlink /proc/$pid/fd/1 2>/dev/null | awk '{print $1}') [

    既存プロセスの標準出力と標準エラーを奪う - Qiita
    ryochack
    ryochack 2015/08/21
    これやり方知りたかったやつだ
  • 大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablog

    以下、長々と書いてますが、結論は ”私の環境で”大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablogに書いてます はじめに awk file より cat file|awk のほうが速いという以下のブログエントリが興味深いので調べてみました。 ちなみに cat file|awk が速くなる環境は稀で、巷では awk file のほうが速い環境のほうが多いようで、どちらが速いかは環境依存です。 [root@localhost sample]# cat command1 awk '$5 ~ /((26|27|28|29|30)\/Jun|(01|02|03)\/Jul)/{ print }' sample.txt > result1.txt (中略) [root@localhost sample]# time sh command1 real 0m53.92

    大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablog
  • はじめてのsystemdサービス管理ガイド | DevelopersIO

    はじめに MarketplaceでCentOS 7 AMIがリリースされましたね!(ex. Amazon EC2 CentOS 7 AMIファーストインプレッション) ということで、これはもう格的にsystemdを学ばないとあかん、という危機感に駆られた次第です。systemdは"system and service manager"なので、電源やロケールなどのシステム部分の管理も可能ですが、差し当たってEC2で使う上で最低限押さえとかなければいかないのはサービス管理になるでしょう。そこでsystemdを操作するためのコマンドであるsystemctlを使って、サービスを管理する方法についてまとめました。 systemdサービス管理 systemdでは、これまでサービス起動スクリプトで定義されていたものがUnitという形で定義されますので、サービスの管理=Unitの管理となります。 有効化

    はじめてのsystemdサービス管理ガイド | DevelopersIO
  • ネットワークプログラミングの基礎知識

    ネットワークプログラミングの基礎知識 ここでは IP アドレスやポート番号、クライアントとサーバの役割などを説明し、 perl・C言語・Java などでソケット (Socket) を使った HTTP クライアントや POP3 クライアント、簡単なサーバを作成してみます。 要はネットワークプログラミングをやってみよう、ということです。 このページのサンプルプログラムは、RFC などの規格に準拠した「正しい」プログラムではありません。 また、全体的にエラー処理が不十分です (今後改善する予定です)。 あくまでも概要を理解するためのサンプルととらえてください。 もし気でしっかりとしたクライアントやサーバを書きたいなら、このページを読んだ上で、 さらに RFC を熟読し、そして wget・Apache・ftp コマンドなどのソースを参考にしてください。 このページに間違いを見付けたら、掲示板

  • Linux Device Drivers, Third Edition [LWN.net]

    This is the web site for the Third Edition of Linux Device Drivers, by Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman. For the moment, only the finished PDF files are available; we do intend to make an HTML version and the DocBook source available as well. This book is available under the terms of the Creative Commons Attribution-ShareAlike 2.0 license. That means that you are free to

  • 第5回 デバイス・ドライバとモジュール

    カーネルのソースを読みこなすためには,モジュールの仕組みを知る必要があります。カーネルの多くがモジュールでできているからです。デバイス・ドライバを例に,モジュールをコンパイルする仕組みやカーネルに付加する仕組みを見ていきましょう。 カーネルとデバイス・ドライバは切っても切り離せない関係にあります。 一つの理由は,カーネル・コードの一番多くの部分を占めているのがデバイス・ドライバだという事実です。 もう一つは,デバイス・ドライバをカーネルに組み込む方法を理解することが,カーネル・ソースを読みこなす近道になるということです。カーネルは,「モジュール」という単位でプログラムを追加したり削除したりできます。デバイス・ドライバだけではなく,いろいろなプログラムをモジュールとしてカーネルに組み込めます。特にデバイス・ドライバの起動方法などを理解すると,モジュールの考え方が分かり,カーネルのソースも読み

    第5回 デバイス・ドライバとモジュール
    ryochack
    ryochack 2015/03/24
    Kconfigにデバイスドライバの設定を記述(カーネルに含めるか、モジュールにするか、コンパイルしないか)。カーネルに付加されているモジュールの確認は"lsmod"コマンドで行う。
  • Linux起動の仕組みを理解しよう[init/inittab編](1/2)

    Linux起動の仕組みを理解しよう[init/inittab編]:Windowsユーザーに教えるLinuxの常識(10)(1/2 ページ) カーネルが呼び出されてからログインプロンプトが表示されるまでの間に、一体どのような処理が行われているのか。これを理解するには、この部分の全般をつかさどるinitとその設定ファイルであるinittabがカギとなる。 Linuxが起動するまでの流れや、起動に際して使用されるファイルについて知っておくことは有益でしょう。そこで、今回と次回の2回に分けて、Linuxの起動の仕組みを紹介します。説明の都合上、用語の説明が多少前後するところもありますがご了承ください。 Linux起動の流れ まず、Linuxが起動するまでの大まかな流れを概観しておきましょう。 マシンの電源をオンにすると、BIOSが起動して制御をハードディスクのMBRなどに移管します。Linuxの場

    Linux起動の仕組みを理解しよう[init/inittab編](1/2)
    ryochack
    ryochack 2015/03/17
    Linux起動の流れ
  • 第14章 プログラミングガイド

    ここではカメラデバイスを制御するアプリケーションを実装する方法について、C言語で実装されている既存のソースコードをサンプルに、カメラデバイスの初期化方法やデータの取得方法などについて説明します。 Linuxカーネルのカメラドライバは、Video for Linux Two(V4L2)というビデオキャプチャAPIとして実装するのが一般的です。Armadillo-810 カメラモジュール01 (Bコネクタ用)のデバイスドライバもV4L2デバイスとして実装されているため、ユーザーアプリケーションからは、このV4L2 APIで扱うことができます。 Video for Linux Two(V4L2)についての詳しい情報は、「LINUX MEDIA INFRASTRUCTURE API」の「Video for Linux Two API Specification」やLinuxの解説書籍などをご覧くだ

    ryochack
    ryochack 2015/03/05
    V4L2 APIを使ったLinuxでのカメラデバイス制御
  • psをgrepした結果からgrep自身を除外する方法 - Linux入門 - Webkaru

    psをgrepした結果からgrep自身を除外する方法を紹介します。 現在実行されているプロセスを表示する「psコマンド」は、Linuxの構築・運用時のプロセス起動を確認する場合によく使います。実行結果を見やすくするためにパイプ(|)を使って、「grepコマンド」と併用することが多いですね。 例えば、「apache」が起動しているかどうかを確認する場合など。 しかし、grepコマンドを実行した結果に自身のgrepが表示されているのは、なんだか邪魔臭い……気持ち悪いですよね。せっかく!grepしてるに不要なものが混ざっている……。そんな印象です。 というわけで、ここでは psをgrepした結果からgrep自身を除く方法を紹介します。 psをgrepした結果にしゃしゃり出てくるgrep自身…… たとえば、Apacheが起動しているかを確認する際、psコマンドにパイプ(|)を通して、grepすると

    psをgrepした結果からgrep自身を除外する方法 - Linux入門 - Webkaru
    ryochack
    ryochack 2015/02/27
    "# ps axf | grep [h]ttpd"でgrepプロセスを省ける。なるほど。
  • Linuxhack.jp » ゾンビプロセスとは?

    ゾンビ状態とはpsコマンド上では実際にはプロセスは終了しているが、プロセスが完全にクリアされていない状態を指します。具体的にどのような場合に起こり、どのような状態になっているのかが問題です。この問題をとく鍵がプロセスのライフサイクルにあります。 Linuxではexit()でプロセスが終了するとき、すぐにリソースを解放するのではなく、いったんゾンビ状態(TASK_ZOMBIE)に遷移します。これは親プロセスがwait()システムコールを呼び、その子プロセスの終了状態を得られるような仕組みを提供しているからです。 つまりプロセスはゾンビ状態を経て、親プロセスのwait()が終了すると完全に破棄されます。このことから親プロセスのwait()が実行される前に子プロセスが終了している場合、子プロセスはゾンビプロセスであるといえます。 例えば意図的にゾンビ状態を作るプログラムを考えてみます。 //

    ryochack
    ryochack 2015/02/10
    “このため親プロセスを無くした子プロセスは、自動的にinitプロセスの子プロセスとなり、initプロセスのwait()によって消滅するような仕組みになっています。”
  • シグナル (ソフトウェア) - Wikipedia

    このページの名前に関して「シグナル (プロセス間通信)」もしくは「シグナル (Unix)」への改名が提案されています。 議論はこのページのノートを参照してください。(2018年4月) シグナル(英: signal)とは、Unix系(POSIX標準に類似の)OSにおける、限定的なプロセス間通信の形式を使って、プロセスに対し、非同期で、イベントの発生を伝える機構である。シグナルが送信された際、OSは宛先プロセスの正常な処理の流れに割り込む。どんな不可分でない処理の間でも割り込むことができる。受信プロセスが以前にシグナルハンドラを登録しておけば、シグナル受信時にそのルーチンが実行される。さもなくば、デフォルトのシグナル処理が行われる。(同様なものは他のTSSなどでも開発されてはいるが、UNIXのシグナルは)1970年ごろベル研究所でUNIXに実装された。後にPOSIXである程度は標準化されている

    ryochack
    ryochack 2015/02/10
    シグナル一覧
  • プロセスをforkするときのこと - Hibariya

    孤児プロセスとゾンビプロセスの違いがうまく理解できてなかったけど、ようやく違いを確認することができた。 孤児プロセス 孤児プロセスは、親プロセスがwaitせずに先に逝ってしまった後も走り続けている子プロセス。 Orphan Process とも呼ばれる。 親のいなくなった子プロセスはinitプロセスの子(孤児)になる。 親プロセスが死んで、子プロセスの親が変化する様子を見るには以下のようなスクリプトを実行したあとでファイルをtailすると分かりやすそう。 Process.fork do File.open('orphan', 'a') do |f| loop do sleep 1 # 親プロセスのpidをファイルに書き出す f.puts Process.ppid f.flush end end end sleep 5 このプログラムを実行して、orphanをtail -fで観察していると、

    ryochack
    ryochack 2015/02/10
    double forkについて
  • forkとゾンビプロセス

    とあるアプリから外部コマンドを実行する機能を実装していたんだけど、ふと気がついたらゾンビプロセスが大量にできていて焦った。 とあるアプリはデーモンプロセスでずっと生きている 外部コマンドは終了を待たなくていいし出力も取らなくていい ゾンビができちゃうダメな実装 とにかく実行すればいいってことで単純に次のようなコードを書いていた。 forkしてexecするだけという至って単純な実装(実際にはSTDOUTを/dev/nullに向けるとか色々あるけど)。 # 外部コマンドを実行する # コマンドの出力とか終了には興味がない def run_command(command) fork do puts "child: pid=#{Process.pid}, ppid=#{Process.ppid}" exec(command) end end puts "app: pid=#{Process.pid

    ryochack
    ryochack 2015/02/10
    "子プロセスを生成した後はwaitでその終了を待って終了ステータスを得るのだが、逆に言うとwaitを呼ぶまではたとえ子プロセスが終了していても終了ステータスを保持しておかなければならない。"
  • forkとwaitとゾンビプロセス - ファイヤープロジェクト

    forkはプロセスのコピーを作成する.そしてwaitで待つ.処理の流れが一から複数に分かれる様がフォークみたいだからforkなのだろうか. forkで何がコピーされるのか forkのサンプル wait waitのサンプル ゾンビプロセスについて forkで何がコピーされるのかforkはそれを実行したプロセスの子プロセスを作成する.子プロセスは親プロセスのコピーである.プロセスをどこまで実行したか(プログラムカウンタ?)もコピーされるので,子プロセスはforkの返り値が返るところから実行される(と,思う).あと,ファイルディスクリプタなどもオープンされていればそのままコピーされる.コピーされないのはpidやppidとファイルロックやサスペンド中のシグナルぐらいだろうか.そして,そのforkの返り値によって,プロセスは自分が親プロセスか子プロセスかを知ることができる. 成功すれば子プロセスに

  • シェル特殊な変数,記号

    スクリプト実行時に引数をかず分分解されて$@に代入される、[a b c]の場合["a" "b" "c"]

  • ファイルオープンと新フラグ

    多人数により日々改善が加えられるLinuxカーネルですが、その中にはまったく新しい機能もあれば、既存機能を拡張したものもあります。記事ではopen(2)に加えられた新フラグについて取り上げます。 O_TMPFILEフラグ ---- linux-3.11 2014年9月にリリースされたlinux-3.11では、ファイルオープン時に指定可能なO_TMPFILEフラグが追加されました。目的は従来のmkstemp(3)、tmpfile(3)と同様ですが、カーネルレベルで対応するため、効率とアトミック性が強化されます。glibcでは2014年2月にリリースされたv2.19でO_TMPFILEに対応しました。 従来のmkstemp(3)ファミリ、tmpfile(3)を用いる場合では、 一意な(と期待できる)ファイル名の生成 そのファイル名でファイルを作成/オープン という手順を踏みますが、一意性を保

    ファイルオープンと新フラグ
  • Linuxコマンドでテキストデータを自在に操る - じっくりコトコト煮込んだみかん

    Linuxでテキストデータを扱うときに、コマンドをパイプで繋げるだけでいろいろな処理ができて面白いのですが、綺麗に整理されていない気がするのでまとめてみます。ここでは、cat, paste, join, grep, head, tail, cut, awk, sed, tr, sort, uniq, wc を取り上げます。 ファイルを縦に結合 ファイルを縦に結合します。 コマンド 説明 cat file1 file2 ... file1, file2, ... を縦に結合 cat file | ... としてファイルの中身をパイプに流すのにもよく使います。 ファイルを横に結合 ファイルを横に結合します。あまり使わない?*1 コマンド 説明 paste file1 file2 .. file1, file2, ... を横に結合 join file1 file2 file1 と file2

    Linuxコマンドでテキストデータを自在に操る - じっくりコトコト煮込んだみかん