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. Dismiss alert
ファイルの保存 ここまでいくつかの見落としがちな処理を見てきましたが、最後にどんなプログラマでも必ず行う「ファイルの保存」についての注意点を考察してみたいと思います。 ファイルを確実に書き込むためには、どのようなコードを書けばよいでしょうか。「fsync」を呼べばいい。それだけではありません。実際には、次の2点も必要になってきます。 (内容の差し替えだった場合に)書き換え途中の状態にならないこと ユーザに対して書き込み完了を返したあとは、ディスクがクラッシュしない限り、データが消えないこと UNIX系OSでこれらの要件を満たすには、まずテンポラリファイルに新しいデータを書いてディスクに同期し(①②)、(必要ならば)古いファイルをバックアップファイル名を使っても参照できるよう別名を付与し(③)、次にテンポラリファイルのファイル名を差し替え対象になっているファイルの名前に切り替え(
本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはJapanizeやText::MicroTemplateなどで有名な奥一穂さんで、テーマはUNIXプログラミングです。 はじめに 「正しいプログラム」を書くために必要な知識とはなんでしょうか。テストが正しく実行されることは、正しいプログラムであるための必要条件に過ぎません。プログラミングにおいてはプログラミング言語だけでなく、OSの動作やデータベース、ネットワークプロトコルなど、さまざまな知識が必要になります。 PerlはもともとUNIX系のOS(LinuxやFreeBSD、Mac OS XなどのOSを本稿では以下UNIXと総称します)の上で処理を行うためのスクリプト言語として開発され、今日でもPerlプログラムの多くはUNIX上で実行されています。しかし、「Perlでプログラミング」と言った場合はともすれば
Where can I find a well-respected reference that details the proper handling of PID files on Unix? On Unix operating systems, it is common practice to “lock” a program (often a daemon) by use of a special lock file: the PID file. This is a file in a predictable location, often ‘/var/run/foo.pid’. The program is supposed to check when it starts up whether the PID file exists and, if the file does e
MyDNS is a free DNS server for UNIX. It was implemented from scratch and is designed to serve records directly from an SQL database (currently either MySQL or PostgreSQL). Its primary objectives are stability, security, interoperability, and speed, though not necessarily in that order. MyDNS does not include recursive name service, nor a resolver library. It is primarily designed for organizations
Supervisor: A Process Control System¶ Supervisor is a client/server system that allows its users to monitor and control a number of processes on UNIX-like operating systems. It shares some of the same goals of programs like launchd, daemontools, and runit. Unlike some of these programs, it is not meant to be run as a substitute for init as “process id 1”. Instead it is meant to be used to control
今回からスタートした「MRTGを使ったネットワーク監視技法」。本連載では、MRTGを題材に、ネットワーク監視のノウハウを紹介します。第1回目は、ネットワーク監視の基本となる技術「SNMP」を中心に解説します。 ネットワーク監視も重要な業務 ネットワークには、ルータなどの通信機器を経由して、サーバやクライアントなどのコンピュータがつながっています。このネットワーク環境を安定的に維持していくためには、ネットワークの状況がどうなっているのかを監視する体制が必要になります。資源管理という点では、サーバのディスクの空き容量やCPUの使用率などに目がいきますが、ネットワークも重要な資源であり、このネットワークを監視することもとても大切な運用業務です。 ネットワークの監視には専用のコンピュータが必要になります。この監視に使うコンピュータをマネージャと呼び、監視される個々のネットワーク機器をエージェン
Node.jsの支援やクラウド関連ソフトウェアを手がける米Joyentは8月15日(米国時間)、KVMをサポートしたクラウドOS「SmartOS」を発表した。OpenSolarisからフォークしたOS環境「illumos」ベースのカーネルにLinux由来の仮想化システム「KVM」を組み合わせたのが特徴で、ZFSやDTraceといったSolaris由来の技術とともにKVMを利用できる。 SmartOSは、「illumosをベースにBSDパッケージ管理システムとGNUツールチェーンを組み合わせたディストリビューション」とのこと。SmartOSを利用することで、エンタープライズ級のストレージを備えた信頼性の高いシステム上で仮想マシンを実行できるという。 SmartOSの特徴としてはコンテナベースの仮想化システムであるZonesとカーネル組み込みの仮想化技術KVM、ファイルシステムZFS、そしてシ
ホーム 検索 - ログイン | | ヘルプ 技術/UNIX/なぜnohupをバックグランドジョブとして起動するのが定番なのか?(擬似端末, Pseudo Terminal, SIGHUP他) [ Prev ] [ Next ] [ 技術 ] 何をいまさら当たり前の事を・・・と思われるだろう。 $ nohup long_run_batch.sh & SSHからログアウト後も実行を続けたいバッチジョブを、"&"を付けてバックグラウンドジョブとしてnohupから起動するのは定番中の定番である。 しかし、「nohupを使わなくても実行を続けることが出来る」やり方があったり、さらには「nohupを付けてもログアウト時に終了してしまう」パターンがあるとしたらどうだろう? そして、ある日あなたの後輩や同僚がこれらについてあなたに質問してきたら、あなたはどう答えるだろうか? 「Web上で検索したら見つか
Like dd, dd_rescue does copy data from one file or block device to another. You can specify file positions (called seek and Skip in dd). There are several differences: dd_rescue does not provide character conversions. The command syntax is different. Call dd_rescue -h. dd_rescue does not abort on errors on the input file, unless you specify a maximum error number. Then dd_rescue will abort when th
What is Munin? Munin is a networked resource monitoring tool that can help analyze resource trends and "what just happened to kill our performance?" problems. It is designed to be very plug and play. A default installation provides a lot of graphs with almost no work. In Norse mythology Hugin and Munin are the ravens of the god king Odin. They flew all over Midgard for him, seeing and remembering,
The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition 2.4 Signal Concepts 2.4.1 Signal Generation and Delivery A signal is said to be ``generated'' for (or sent to) a process or thread when the event that causes the signal first occurs. Examples of such events include detection of hardware faults, timer expiration, [RTS] signals generated via the sigevent structure and terminal
はじめに シグナルについての解説最終回です。今回はシグナルを扱う上での注意点や、よりよい実装方法の提案、シグナルの未来等について説明します。 過去の記事 signalについて(前篇) signalについて(中篇) 5. 実装上の注意点 前回まで説明してきたとおり、シグナルは気軽に使うことができる便利なプロセス間通信です。しかしシグナルには、やってはいけないことや気をつけるべき点が多く存在します。以下、代表的な注意点を挙げます。 5.1 最適化問題 volatileはそれほど使われない宣言修飾子ですが、これは最適化を制御する修飾子です。なぜこの修飾子がシグナルと関係あるのかについてですが、先にソースコードを示します。 /* 1. gcc -g -W -Wall signal_test_volatile.c -o signal_test_volatile 2. gcc -g -W -Wall
はじめに 前回に引き続きシグナルについてまとめてみたいと思います。今回はシグナルの実装方法についてです。 過去の記事 signalについて(前篇) 4. シグナルの実装(割り込み禁止、アラーム) 4.1 割り込み禁止 シグナルは、あるハンドラの実行中に別シグナルによる割り込みを防ぐことができます。割り込み防止対象はハンドラだけではなく、ユーザー独自の関数に対しても割り込まれない事を保証することが可能です。 例えば、SIGINT(Ctrl+C)シグナルが発生しハンドラ内で時間がかかる処理を行っている時にSIGTSTP(Ctrl+Z)が来た場合には、ハンドラ内の処理が終了してからSIGTSTPを処理(バックグラウンド動作)します。 /* gcc -g -W -Wall signal_test_interrupt.c -o signal_test_interrupt */ #include <s
はじめに シグナルはUNIXなどのOSにおける非同期イベントを通知する仕組みですが、「最古のプロセス間通信」「SysV系とBSD系で動きが違う」「昔のシグナルを使うと汎用性が無くなってしまう」「スレッドと相性悪し」といった理由からか、私の経験上、業務系アプリケーションではあまり使われていません。たまに使っているものを見ると、誤った使い方をしているものが多かったりします。 ところがこのシグナル、いろいろ調べていくと意外と奥が深く、有用に使えるのに、以外と情報が少ないことがわかりました。 今さらな感もありますが、ここでは私が知っている事や、調べた結果、今までの経験から得た知識などをまとめてみたいと思います。 ただし、環境によって動作が違うことが想定され、また一部のプログラムは環境に対し重大な影響を与えてしまうものもあります。プログラム等の使用に際しては十分に注意して頂き、ご自身の責任の範囲で行
Go to the first, previous, next, last section, table of contents. 1 プロセス制御 1.1 新しいプロセスの生成: fork() 1.1.1 fork()は何をするのですか? #include <sys/types.h> #include <unistd.h> pid_t fork(void); fork()関数は存在しているプロセスから新しいプロセスを生成するために使用さ れます。新しいプロセスを子プロセスといい、すでに存在していたプロセスは親 プロセスといいます。fork()の戻り値をチェックすると、この両者を区別できま す。親プロセスには子プロセスのプロセスIDが返されますが、子プロセスには 0が返されるのです。 ですから、以下の簡単なコードがfork()の使い方の基本になります。 pid_t pid; switch
SELECT_TUT Section: Linux Programmer's Manual (2) Updated: 2007-12-18 Index JM Home Page roff page 名前 select, pselect, FD_CLR, FD_ISSET, FD_SET, FD_ZERO - 同期 I/O の多重化 書式 /* POSIX.1-2001 に従う場合 */ #include <sys/select.h> /* 以前の規格に従う場合 */ #include <sys/time.h> #include <sys/types.h> #include <unistd.h> int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *utimeout
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く