タグ

UNIXに関するkomlowのブックマーク (54)

  • Unix v6 の C コンパイラが面白かった話 - 兼雑記

    Unix v6 の C コンパイラをいじってみようと見てたのですが、これがなかなかすごい物体でした。 読んでて、「いやいくらなんでもこんな作りなわけが…」と思って説明文を探して、 http://plan9.bell-labs.com/7thEdMan/v7vol2b.pdf の「A Tour through the UNIX C Compiler」に説明あるよと教えてもらって読んでみたら、当にそんな作りだった、みたいな。 コンパイラの1段目はプリプロセスして構文木的なものをファイルに吐いて終わりです。2段目は構文木を読みつつコード生成していく。 構文木のノードの種類に対して switch してやること決める…的なものが、データドリブンな方法で書かれてます。データを保存するフォーマットは、 JSON とかではなく、時代が時代ですのでアセンブリです。こういうやつ https://github

    Unix v6 の C コンパイラが面白かった話 - 兼雑記
  • 技術/UNIX/なぜnohupをバックグランドジョブとして起動するのが定番なのか?(擬似端末, Pseudo Terminal, SIGHUP他) - Glamenv-Septzen.net

    ホーム 検索 - ログイン | |  ヘルプ 技術/UNIX/なぜnohupをバックグランドジョブとして起動するのが定番なのか?(擬似端末, Pseudo Terminal, SIGHUP他) [ Prev ] [ Next ] [ 技術 ] 何をいまさら当たり前の事を・・・と思われるだろう。 $ nohup long_run_batch.sh & SSHからログアウト後も実行を続けたいバッチジョブを、"&"を付けてバックグラウンドジョブとしてnohupから起動するのは定番中の定番である。 しかし、「nohupを使わなくても実行を続けることが出来る」やり方があったり、さらには「nohupを付けてもログアウト時に終了してしまう」パターンがあるとしたらどうだろう? そして、ある日あなたの後輩や同僚がこれらについてあなたに質問してきたら、あなたはどう答えるだろうか? 「Web上で検索したら見つか

    komlow
    komlow 2015/03/26
  • Unixデーモンの仕組み

    Home Subscribe Unixデーモンの仕組み 12 March 2015 おはこんばんちは!! 尾藤 a.k.a. BTO です。 みなさん、Unixデーモンよく使ってますよね。 Webエンジニアなら、Webサーバ、メールサーバ、DBサーバ、cronなどがよく使われるのではないでしょうか。 24時間365日黙々と働き続けるUnixデーモン達。 身近な存在だと思いますが、実はどういう仕組みで動いているのかご存じない方も多いのではないでしょうか。 先日、オトバンクでUnixデーモンの仕組みについて勉強会をやったので、その内容をまとめます。 デーモンとは では、デーモンとはいったい何なのでしょうか。 Unixライクシステムにおいて、バックグランドで動作して様々な処理を実行してくれるプロセスがデーモンです。 デーモンには明確な定義はありませんが、だいたい次のような条件を満たすプロセスが

    Unixデーモンの仕組み
    komlow
    komlow 2015/03/12
  • process-book

    この文書はなんですか? この文書は*nix系のシステムにおけるプロセスやシグナルなどについて説明することを目的に書かれました。「プロセスとかよくわかってないからちゃんと知りたいな」みたいなひとたちが想定読者です。 書いているあいだは gist で管理されていたのですが、ボリュームが大きくなったので github で管理するように変えました。 目次 導入 プロセスの生成 プロセスとファイル入出力 ファイルディスクリプタ preforkサーバーを作ってみよう ゾンビプロセスと孤児プロセス シグナルとkill プロセスグループとフォアグランドプロセス epub と pdf epub化したもの、pdf化したものが release ディレクトリに入っています。thanks to mitukiii & moznion! ライセンス この 作品 は クリエイティブ・コモンズ 表示 - 継承 3.0 非移

  • Cool, but obscure unix tools

    Hello, I’m Kristof, a human being like you, and an easy to work with, friendly guy. I've been a programmer, a consultant, CIO in startups, head of software development in government, and built two software companies. Some days I’m coding Golang in the guts of a system and other days I'm wearing a suit to help clients with their DevOps practices. A little collection of cool unix terminal/console/cu

  • Unixツールを作成するためのヒント | POSTD

    現代のプログラマを取り巻く世界には無数の方法で組み合わされた、たくさんのUnixツールがあふれています。優れたツールは開発環境とシームレスに統合されますが、そうでないツールは使うたびに不満がたまっていきます。また、優れたツールはあなたの想像力次第でどんなものにも適用できますが、そうでないツールはあなたの開発環境で動かすためだけでも、あの手この手の対策を講じなければならないことがよくあります。 “One thing well” misses the point: it should be “One thing well AND COMPOSES WELL” — marius eriksen (@marius) October 10, 2012 “一つのことだけうまくやればいい”という考えでは目標に到達しない。”うまくいったものを、うまく組み合わせる”ことまで考えるべきだ 良い設計に必要なもの

    Unixツールを作成するためのヒント | POSTD
  • https://www.thelinuxrain.com/articles/memo-note-taking-unix-style

    https://www.thelinuxrain.com/articles/memo-note-taking-unix-style
    komlow
    komlow 2014/10/25
  • Pingプログラムの話

    The Story of the PING Program そうだ。UNIXのpingを書いたのは俺さ。pingというものは誰でも知ってるだろうが、これはある夜、俺が千行程度で書いたハックだ。 名前の由来はソナーの音だ。俺は大学でソナーとレーダーシステムの設計をさんざんやっていたので、サイバースペース的なものとは親和性が高かった。新しい分野に既存の概念を適用したというわけだ。pingはIP/ICMP ECHO_REQUESTとECHO_REPLYパケットを使って時間を測り、ターゲットマシンへの「距離」を計測する。 4.2a BSD UNIX用のPINGを書いた着想は、1983年の7月に、ノルウェイでのDARPA会議で、Dave MIlls博士からきいた話が元だ。博士はFizzball LSI-11システムで、ICMP Echoパケットの時間を計測して、経路遅延を計測したと話していた。 19

    komlow
    komlow 2014/10/12
  • Tmpディレクトリの活用法について改めて考える | RickyNews

    Dominic Alves 普段何気なく利用している/tmpと/var/tmp。 意識して使い分けてる方も分けてない方もいらっしゃるかと思います。 Linuxのファイルシステムとしての存在意義や、一時フォルダとしての機能を改めて意識すると 非常に便利な存在です。 /tmpと/var/tmpの違い 「/tmpと/var/tmpの違いについて述べよ」・・・インフラエンジニアの入社試験の問題に出てきそうですね。 さて単純な解答ですが、システム的なことを言えば以下あたりです。(RHEL) /tmp /var/tmp どちらもディレクトリ配下はtmpwatchコマンドにより監視されファイルの削除が組み込まれています。 $ cat /etc/cron.daily/tmpwatch #! /bin/sh flags=-umc /usr/sbin/tmpwatch "$flags" -x /tmp/.X1

    Tmpディレクトリの活用法について改めて考える | RickyNews
  • fork()は失敗するんだぜ、覚えときな

    fork() can fail: this is important あー、fork()のことね。プロセスがもっとプロセス作るためのやつな。いや、他にもプロセス作る方法はあるけどな。ま、面白い話がもうひとつあるから聞かせてやるよ。 forkは失敗するんだぜ。分かってるか? マジで分かってるか? マジだぜ。forkは失敗するもんだ。mallocと同じさ。失敗することもある。そんなに頻繁にってわけじゃないけどさ、でも失敗したら、無視できっこないぜ。ちっとは脳みそ働かせなきゃならん。 forkが0を返したら、そいつは子プロセスで、親なら正数を返すってことは、みんな知ってるよな。その値は子のpidだ。こいつを保存しといて、あとで使うってわけだ。 失敗を確認しない場合どうなるか知ってるか? そうだよ。お前多分、"-1"(forkのエラー通知)をpidとして扱ってるんだろ。 さて、問題の始まりだ。

  • https://cfenollosa.com/misc/tricks.txt

  • Unix系OSの権限分離の変遷について(もしくはなぜ、アプリ単位の権限分離が求められるようになったか)

    Unix系OSの権限分離の変遷について(もしくはなぜ、アプリ単位の権限分離が求められるようになったか) [ブコメした件について。大筋でおかしなことは書いてないと思いますが、出典は確認していません] Unix系OSにおける権限分離は、伝統的に、利用者ごとに異なるuser idを割り振り、これを用いてアクセス制御を行うという方式で実現されてきた。また、デーモンプロセスについては、不要な権限付与を避け、デーモンプロセス間の相互作用を抑制するために、デーモンごとに専用の「user id」を発番するのが一般的な慣習とされるようになったという経緯がある。 しかし、2000年代に入ると、インターネットの普及とあいまって、クライアントサイドではこのような「利用者ごと」の権限分離では不十分という考え方がされるようになってきた。具体的には、 (オンラインバンクのパスワードに代表されるような)攻撃価値が高い情報

  • Unix Philosophy と Node.jsのモジュールの作り方 - from scratch

    The Art of UNIX Programming 作者: Eric S.Raymond,長尾高弘出版社/メーカー: アスキー発売日: 2007/06/19メディア: 大型購入: 4人 クリック: 91回この商品を含むブログ (62件) を見る TL;DR Unix Philosophyにおいては、「一つのことをうまくやり、協調する仕組みを持つ」という事が大事 Node.jsのモジュールにおいても同じで、「一つのことをうまくやる、Stream APIで協調する」と良い 「一つのことをうまくやる」にはどうするのが良いのか、ということで substack のモジュール実装例 Simple と Easyの違い ちょっと今回長くて文字が多いので、最初と最後にまとめを用意しました。時間がない方はこれを読むだけでもいいかと。 Unix Philosophy さてさて、Unix Philosoph

    Unix Philosophy と Node.jsのモジュールの作り方 - from scratch
    komlow
    komlow 2014/04/22
  • UNIXドメインソケットを試す - Qiita

    UNIXドメインソケットは、異なるプロセス間で情報のやり取りを行う方法のひとつ。あるプログラムでファイルのようにして .sockファイル UNIXドメインソケットをどこかに置いておき、もう一方のプログラムでそのファイルに向けて接続すれば、やりとりが行える。試しに使ってみた。 サーバのコード。 require 'socket' time = 0 count = Thread.new do loop do time += 1 Thread.pass sleep 1 end end sock = Thread.new do Socket.unix_server_loop('server.sock') do |sock, addr| p sock Thread.new do loop do begin sock.write(time.to_s + "\n") rescue Errno::EPIPE

    UNIXドメインソケットを試す - Qiita
  • 調べなきゃ寝れない!と調べたら余計に寝れなくなったソケットの話 - Qiita

    なるほど、最近ソケット通信、ソケット通信と言ってるのはUNIXドメインソケットの事か! UNIXドメインソケットって何がいいの? Performance Analysis of Various Mechanisms for Inter-process Communicationに素晴らしい検証があった。 It was hypothesized that pipes would have the highest throughtput due to its limited functionality, since it is half-duplex, but this was not true. For almost all of the data sizes transferred, Unix domain sockets performed better than both TCP so

    調べなきゃ寝れない!と調べたら余計に寝れなくなったソケットの話 - Qiita
    komlow
    komlow 2014/03/02
  • Unixに関するいろいろな略称とその意味 - UNIX的なアレ

    いろいろな略称が多い! コマンドやディレクトリ名など、UnixなOSはとにかくいろいろな略称が多いです。特にさわりはじめの人はこの略称がいみわからずに心が折れてしまうことは多いと思います。実際にSchooでUnixの授業をやったときもこの略称を説明しました。 というわけでまとめてみました。なぜ略称が多いのかが気になる人はこちらを読んでみてください。 UNIXという考え方―その設計思想と哲学 作者:Mike Gancarzオーム社Amazon ※ちなみに、Linuxにもほぼ通用すると思いますがMacをベースに書いているのでUnixという表記にしています。 ディレクトリ名 名称 来の意味 備考 usr User Services and Routines これは若干怪しめです。Userという説も var Variable ログやメールの情報など、変わりうる情報を扱うもの tmp Tempor

    Unixに関するいろいろな略称とその意味 - UNIX的なアレ
    komlow
    komlow 2014/01/13
  • Unix Programming Frequently Asked Questions 日本語訳 - Table of Contents

    このFAQについて 1 プロセス制御 1.1 新しいプロセスの生成: fork() 1.1.1 fork()は何をするのですか? 1.1.2 fork()とvfork()の違いは何ですか? 1.1.3 forkによる子プロセスを終了するときにexitよりも_exitを使うのはなぜですか? 1.2 環境変数 1.2.1 どうすればプログラム内で環境変数の値を取得・設定できますか? 1.2.2 どうすれば全ての環境変数を調べられますか? 1.3 どうすれば一秒未満のsleepができますか? 1.4 粒度の細かいalarm()はどうすれば得られますか? 1.5 どうすれば親プロセスと子プロセスの間で通信できますか? 1.6 どうすればゾンビプロセスができることを防ぐことができますか? 1.6.1 ゾンビプロセスってなんですか? 1.6.2 どうすればゾンビプロセスになることを防げますか? 1.7

    komlow
    komlow 2013/11/06
  • Mac Leopardのbashに関する設定ファイル(.bash_profile .bashrc など)をまとめてみた - kanonji’s diary

    Mac LeopardにFlex SDKを入れた時に環境変数のPATHをいじったけど、その時ちゃんと設定してないはずのMacPorts用のPATHも設定されてる事に気がつきました。 でもFlex SDK用のPATHを設定したら、MacPorts用の設定が消えてしまい、不思議に思ったので調べてみました。 結論 Flex SDK用のPATHを記述するために ~/.bash_profile を作成した事で、MacPortsのインストーラーが用意した ~/.profile が読み込まれなくなった事が原因でした。 MacPortsはインストール後に自分でPATHに追加する必要があると説明する所もありましたが、恐らくもともと ~/.bash_profile か ~/.bash_login を作ってある環境だったからかも知れません。 もしくは、昔のMacPortsではそうだったのかも。 読み込み順序 U

    Mac Leopardのbashに関する設定ファイル(.bash_profile .bashrc など)をまとめてみた - kanonji’s diary
  • 女子高生のカーネル領域における言語的等価性

    概要 この論文では UNIX と女子高生の数学的同値性を証明する。 高度に発達した離散的コミュニティでは、 そこで使用される言語=表象はおよそ一般的な話し言葉とは著しく異なったものに対応させられる。 論文ではまず UNIX コミュニティにおける言語と女子高生コミュニティにおける言語の相似性を提示する。 つぎにこのような言語体系をうみだす環境の認知心理学的類似性について考察し、 UNIX が女子高生と数学的に等価であることを示す。また両者の今後の展開についても予測をおこなう。 相対的に分裂する主体 高度に発達したネットワークをもつコミュニティでは、各所属メンバーは自分の所属を意識せずにシステムに従属する。このような領域においては、ラトゥールが指摘したような特権化された「計算の中心」は存在せず、すべての主体は相対的な次元で表されるベクトルでしかありえない [Latour, 1999]。にもか

    komlow
    komlow 2013/06/10
  • fish shell

    Finally, a command line shell for the 90s fish is a smart and user-friendly command line shell for Linux, macOS, and the rest of the family. fish will delight you with features like tab completions and syntax highlighting that just work. It will make you exclaim "Of course fish does that!".