タグ

unixに関するa2ikmのブックマーク (145)

  • SCOによる対IBM訴訟に関するOSIのポジションペーパー

    目次 はじめに ペーパーで取り上げる内容 歴史技術的な背景 「UNIX」の意味 Linuxとオープンソース・プログラミングの到来 Bell Labsコードベース 争点のUNIX派生物間の関係 各社の歴史 オープンソースに関するSCOの歴史 「エンタープライズ・スケーラビリティ」の意味 SCO/Calderaはその歴史と立場を偽っている SCO/Calderaが重要な企業であったという主張は偽りである SCO/Calderaが唯一のIntel UNIXベンダだったという主張は偽りである SCO/CalderaはUNIXに対する権利の範囲を偽っている SCO/CalderaのUNIXスケーラビリティ技術を所有しているという主張には説得力がない SCO/Calderaは自身の役割を無視して、開発の動機付けを行うどころか、それを非難してはばからない SCO/Calderaは不正な表現でオープン

    SCOによる対IBM訴訟に関するOSIのポジションペーパー
  • Difference between UNIX domain STREAM and DATAGRAM sockets?

    This question is NOT for the difference between STREAM type and DATAGRAM type INTERNET sockets. I know that STREAM sockets use TCP, Datagram sockets use UDP and all the TCP,UDP stuff, packets arriving in order, ACK, NACK etc. I understand the importance of these over internet. Q1) When I create a UNIX domain socket which is a local socket, how would it matter if the socket is STREAM socket or DATA

    Difference between UNIX domain STREAM and DATAGRAM sockets?
  • TCP socketではwriteの後すぐにcloseしてはいけない

    TCP socketではwriteの後すぐにcloseしてはいけない。 相手側に全てのデータが届いてからcloseする必要がある。 shutdown で書き込み側だけハーフクローズするとよい。 相手側がcloseしてから、こちらをcloseする。相手側がcloseしたことは、readを呼んでブロックさせておくと、読み込みバイト数==0 つまりEOFになったことでわかる。

    TCP socketではwriteの後すぐにcloseしてはいけない
  • PostgreSQLは20年間どのようにfsyncを間違って使っていたか - 聴講メモ -

    TL;DR 聴講メモ Intro into durability PostgreSQLのCHECKPIONT CHECKPOINT中にエラーが発生したら? fsyncへの2つの間違った期待 なぜ今になって問題が明らかになってきた? そもそもなぜBufferd I/Oなのか? どうやって直すかか 参考リンク 質疑 最後に 先日PostgreSQLの新しいマイナーバージョンがリリースされました。このマイナーリリースでメインとなる修正は「fsync周りのバグ修正」で、このバグは間違ったfsyncに対する間違った認識から約20年間存在してたバグということで注目されていました。 このバグについてPostgreSQLのコミッタ(Tomas Vondra氏)が解説しているセッションが、先々週開催されたFOSDEM 2019でありました。私もFOSDEM 2019に参加していたのですがその際は裏セッション

  • さよなら、愛しのFreeBSD|力武 健次 / りきたけ けんじ|note

    2019年1月末でFreeBSDに関連する開発活動を止めることにした。とても愛していたOSだけに身を切られるような思いは否めなかったが、別れが来るなら自分の自由になるうちにと思い、決断した。以下は個人的な想いを綴っている。 BSDの大元は、カリフォルニア大学バークレイ校で作られたオペレーティングシステム、今風に言えば基ソフトだ。Berkeley Software Distributionというのがもともとの名前だ。 1985年に自分がUNIXに触れたころから憧れていたのがこのBSDだった。当時のBSDはまだオープンソースではなかったAT&TのUNIXのライセンス制限の傘下にあり、自由にソースコードが読めなかった。でもAT&TのUNIXであるSystem V(システムファイヴ)よりはずっと自由だった。その後、DECのULTRIXやSunのSunOS 4など、多くの先進的なUNIXマシンがB

    さよなら、愛しのFreeBSD|力武 健次 / りきたけ けんじ|note
  • シェルスクリプトから"foreman start"したときにCtrl-Cで終了できない現象の解説 - はこべにっき ♨

    シェルスクリプトから"foreman start"したときにCtrl-Cで終了できないという現象に遭遇しました。なぜこのようなことが起こったのかについて調べてみたので解説します。一見不可解におもえるプロセスの振舞いをUNIXプロセスの仕組みをひもとき説明してみたというおもむきの記事です。 概要 foremanはシェルスクリプトから、"foreman start"のように起動したときにCtrl-C終了できません。シェルスクリプトでなくてもssh経由で ssh -t host foreman start のようにした場合でも同様の問題が発生します。これは、foremanがsetpgrpシステムコールを呼び出してプロセスグループのリーダになるという動作をしていたのが原因でした。 現象 以下のように "foreman start"をシェルスクリプトから実行すると、Ctrl-Cによりforemanを

    シェルスクリプトから"foreman start"したときにCtrl-Cで終了できない現象の解説 - はこべにっき ♨
  • 親プロセスは2度死ぬ - デーモン化に使うダブルforkの謎 - シリコンの谷のゾンビ

    デーモンプロセスを作る場合には,教科書によく書かれている2度forkは不要ではないか? ということを以前の記事に書いた. [c][unix]UNIXネットワークプログラミングのお勉強 (2) デーモンの作り方 - 睡眠不足?! 確かにBSDのdaemon(3) のコードでは,forkは1回しか呼んでいない. 「きっとプレセスがセッションリーダだと不都合があるのだろう.でもなぜ?」 というのがopen questionだった. それに対する答えを「詳解UNIXプログラミング」[1] に見つけた. SVR4においては,この時点でforkを再度呼び,親を終了することを勧める人がいる. 2番目の子がデーモンとして動作する.これは,デーモンはセッションリーダではなく, SVR4の規則 (9.6節) から,セッションリーダでなければ制御端末を取得できない,ということを保証する. あるいは,制御端末を取

    親プロセスは2度死ぬ - デーモン化に使うダブルforkの謎 - シリコンの谷のゾンビ
  • なるほどUnixプロセス読んだ - デーモン化のためのdouble fork - はこべにっき ♨

    なるほどUnixプロセス ― Rubyで学ぶUnixの基礎を読みました。UNIXプロセスの話、特に実用的なforkの利用方法についての話がコンパクトにまとまっていてわかりやすかったです。あまり詳細に踏みこんでいるという感じではないけど、とっかかりにこのにあるような知識があるのは良いと思いました。(シェルスクリプトから"foreman start"したときにCtrl-Cで終了できない現象の解説 - はこべブログ ♨ではまる前に読んでおいたら、もっとはやく問題解決できたと思います。) 第18章 デーモンプロセスに関係して二回目のforkについていろいろ調べたので、せっかくなのでメモを残しておきます。*1 第18章 デーモンプロセス では、プロセスをデーモン化するために必要な手順が丁寧に説明されています。その中で、プロセスを制御端末から切り離す手順として以下のようなコードが紹介されていました。

    なるほどUnixプロセス読んだ - デーモン化のためのdouble fork - はこべにっき ♨
  • どの環境でも使えるシェルスクリプトを書くためのメモ ver4.60 - Qiita

    シェルスクリプトは環境依存が激しいから…… などとよく言われ、敬遠される。それなら共通しているものだけ使えばいいのだが、それについてまとめているところがなかなかないので作ってみることにした。 「どの環境でも使える=POSIXで定義されている」と定義 「どの環境でも使える」とは、なかなか定義が難しい。あまりこだわりすぎると「古いものも含め、既存のUNIX全てで使えるものでなければダメ」ということになってしまう。しかし、私個人としては 今も現役(=メンテナンスされている)のUNIX系OSで使いまわせること にこだわりたい。 とはいっても全てのOSやディストリビューションについて調べられるわけではないので、この記事では基的に最新のPOSIXで定義されていることをもって、どの環境でも使えると判断するようにした。(飽くまで「基的に」ということで) 従って、互換性確保のため、シェルの中で使ってよい

    どの環境でも使えるシェルスクリプトを書くためのメモ ver4.60 - Qiita
  • Ctrl-D の話 - ひげぽん OSとか作っちゃうかMona-

    Mosh の REPL が Ctrl-D で抜けられないとご指摘いただいていた件。 そもそも Ctrl-D って何だっけ?と立ち止まり調べましたが当たり前すぎて(?)記事にすらなってないので書いておきます。 ユーザーから見た Ctrl-D 入力終了を対話型のプログラムにしらせることに使う。 例えば irb から抜けるとき。 dekisugi% irb irb(main):001:0> puts "Hello" Hello => nil irb(main):002:0> # Ctrl-D で irb から抜ける その対話型プログラムが持つ exit や quit などの終了コマンドを入力するよりも楽ですね。 人によっては Ctrl-C を使う場合もあるかもしれません。(そのプログラムが SIGINT をどう扱っているかに依存するので、Ctrl-c で終了しない場合もよくあります。) 追記 i

    Ctrl-D の話 - ひげぽん OSとか作っちゃうかMona-
  • GitHub - qrush/unix: Mirror of the Restoration of 1st Edition UNIX kernel sources from pdf document.

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

    GitHub - qrush/unix: Mirror of the Restoration of 1st Edition UNIX kernel sources from pdf document.
  • 圧縮されたtarの展開方法の変遷 - Qiita

    私がやっていた圧縮されたtarの展開の仕方を書いてみる。 ~1992年 gzipが出る前。圧縮に使っていたのはcompressで圧縮したtarの拡張子はtar.Z。ファイルを伸長して標準出力に出力するzcatがあり、tar.Zを展開するときは

    圧縮されたtarの展開方法の変遷 - Qiita
    a2ikm
    a2ikm 2018/03/09
    zいらなかったのかー
  • supermanプロセスにSIGKILLは効かない.md

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

    supermanプロセスにSIGKILLは効かない.md
  • socat を使うと各種ソケットの操作が捗りまくる件

    socat っていうツールを使ってみたところソケット関連のちょっとした操作をこなすのにすこぶる使い勝手が良かった。 インストール Mac OS X なら Homebrew でインストールできる。 $ brew install socat $ which socat /usr/local/bin/socat Echo サーバを立てる socat コマンドにはソケットの入力と出力を指定する。 以下のようにすると TCP 8080 ポートで接続を待ち受けて出力は入力をそのまま cat することで TCP の Echo サーバになる。 v オプションで通信内容を表示する。 $ socat -v tcp-listen:8080 system:cat 別のターミナルから telnet コマンドで接続してみる。 $ telnet localhost 8080 Trying ::1... telnet:

    socat を使うと各種ソケットの操作が捗りまくる件
  • FUSE - 覚えたら書く

    FUSEとは Filesystem in Userspace (FUSE) は、Unix系オペレーティングシステムのローダブル・カーネル・モジュールの一種で、一般ユーザーがカーネルコードを修正することなく独自のファイルシステムを作成できる機能を提供します。 詳細は、Filesystem in Userspaceを参照。 FUSEのイメージは以下の通り(参照:Wikipedia) FUSE-API FUSEを使って構築するファイルシステムの各種ファイル操作は、FUSEのライブラリで提供される(fuse.hで定義される)以下の関数(FUSE-API)をオーバーライドすることで実現する。 No. 関数名 概要 関連付くシステムコール 備考 1 getattr Get file attributes. stat 2 readlink Read the target of a symbolic li

  • 実行中プログラムのイメージを得る - tmtms のメモ

    Twitter見てたらこんなこと言ってる人がいました。 Unix で実行中の実行ファイルのパスを確実に得る方法はない、というのは FAQ だと思うけど、実際にやりたいことは自分自身を別プロセスで新たに立ち上げたいということなので、メモリにロード済の自分自身から別プロセスを作る手段はないんだろうか— Yusuke Endoh (@mametter) 2017年10月25日 昔自分もそんなこと考えたなーと思いつつ、Linuxなら /proc/<pid>/exe が実行ファイルへのリンクになってるんで、 環境によるような気もするけど、自分の実行ファイルのパスは /proc/pid/exe から取れないですかね。— とみたまさひろ (@tmtms) 2017年10月25日 と言ってみたら、 Linuxならその手が使えますが、現在実行中の実行ファイルでも削除できちゃいますから、パス名を得る完璧な方法

    実行中プログラムのイメージを得る - tmtms のメモ
    a2ikm
    a2ikm 2017/10/27
    面白い
  • sortコマンド、基本と応用とワナ - Qiita

    sortコマンド、使いこなしてる? UNIXの基コマンドの一つsortコマンド。アナタはどれくらい使いこなしているか? 何にもオプションを付けずにsortと打ち込むくらいしか知らない、というなら、これを見て便利に使おう。 基編. 各行を単なる1つの単語として扱う sortコマンドの使い方には基と応用がある。基的な使い方は単純で、各行を1つの単語のように見なしてキャラクターコード順に並べるなどの使い方だ。 (オプションなし)……キャラクターコード順に並べる $ cat <<EXAMPLE | sort > perl > ruby > Perl > Ruby EXAMPLE Perl ← 註) Ruby ← キャラクターコード順なので perl ← 大文字から先に並ぶ ruby

    sortコマンド、基本と応用とワナ - Qiita
    a2ikm
    a2ikm 2017/08/28
    -kは同じフィールドを2回指定する必要がある。-k 3,3
  • Thorsten Ball - Unicorn Unix Magic Tricks

    20 Nov 2014 This post is based on the talk of the same name I gave at the Arrrrcamp conference in Ghent, Belgium on October 2nd, 2014. You can find the slides here and the video recording here. Unicorn is a webserver written in Ruby for Rails and Rack applications. When I first used it I was amazed. This is magic, I thought. It had to be. Why? Well, first of all: the master-worker architecture. Un

  • The self-pipe trick

    D. J. Bernstein UNIX The self-pipe trick Richard Stevens's 1992 book ``Advanced programming in the UNIX environment'' says that you can't safely mix select() or poll() with SIGCHLD (or other signals). The SIGCHLD might go off while select() is starting, too early to interrupt it, too late to change its timeout. Solution: the self-pipe trick. Maintain a pipe and select for readability on the pipe i

    a2ikm
    a2ikm 2017/04/07
  • ファイル記述子をUnixドメインソケット経由で渡す - bkブログ

    ファイル記述子をUnixドメインソケット経由で渡す Unix 系の多くの OSには、ファイル記述子を別のプロセスに Unix ドメインソケット経由で渡す機能があります。一見、何のために使うのかよくわからない機能ですが、 glibc の nscd はこれをうまく使っています。 nscd (name service caching daemon) は glibc 内で行われる名前関連の問い合わせをキャッシュするサーバです。NIS や LDAP などを用いてネットワークベースでユーザ管理を行っている場合、 getpwuid() などの関数はユーザ名の取得にネットワークアクセスを必要としますが、 nscd を立ち上げておけば、二度目からの同じ問い合わせはキャッシュから得られます。 nscd を立ち上げている GNU/Linux システムでは、キャッシュファイルが /var/db/nscd 以下に作