teppeilog

ちょっとずつエンジンかかってきた

Archive for 9月, 2009

forkしたプロセスをProcess.kill()するとdefunctが残る

leave a comment

とあるシステムで親プログラムからforkで子プログラムを起動させ、頃合いをみて親プロセスがその子プロセスをkillするという処理を実装した。しかしpsコマンドでプロセスの状態を確認すると、子プロセスで動作させたと思われるプログラムが

defunct ..
defunct ..
defunct ..

と残りまくり。これは何かと訪ねたら調べてたら、どうやら親プロセスでforkして子プロセスを起動すると、親にてProcess.waitを呼ばないとゾンビ(defunct)になってしまうとのこと。

これを回避するには子プロセスに対してProcess.detachを行ってから、Process.killを行う。

例えば

pid = fork do
  何か処理
end

Process.detach(pid)
Process.kill(:INT, pid)

な感じ。

このエントリーをはてなブックマークに追加
はてなブックマーク - forkしたプロセスをProcess.kill()するとdefunctが残る
Share on Facebook

Written by teppei

9月 30th, 2009 at 1:54 am

Posted in プログラミング

Tagged with

screenコマンド

leave a comment

便利なscreenについてメモ。

起動後の操作コマンドは以下

・Ctrl-a c : 新しいウインドウを作成する
・Ctrl-a n : 前方のウインドウに移動
・Ctrl-a p : 後方のウインドウに移動
・Ctrl-a w : ウインドウのリストを表示する。
・Ctrl-a ” : スクリーン上にウインドウのリストを表示する。リスト上はjとkで移動し、Enterで選択。
・Ctrl-a A : 現在のウインドウに名前をつける
・Ctrl-a k : 現在のウインドウを消去
・Ctrl-a d : スクリーンからdetachする

detach(スクリーンから離脱)しても、reattach(復帰)できます。

・screen -list : 現在起動中のscreen一覧を表示する
・screen -r (プロセス名) : 指定のscreenへ復帰する

screenが固まってしまったら!

・Ctrl-a Ctrl-\ : screenをkillするコマンド

基本は以上かな。

このエントリーをはてなブックマークに追加
はてなブックマーク - screenコマンド
Share on Facebook

Written by teppei

9月 15th, 2009 at 12:09 pm

Posted in ネットワーク

Tagged with

scpコマンド

leave a comment

サーバサイドのお仕事が多くなってきたのでメモ。

scpコマンドを使うとホストーホストとか、ローカルーホスト、ホストーローカル間でファイル転送できる。

・ローカルのtest.txtをホストお/home/document/ディレクトリへ転送
$ scp -P ポート番号 -i 鍵 ./text.txt tep-pey@example.com:/home/document
-r オプションをつけるとディレクトリ毎転送できる
$ scp -P ポート番号 -i 鍵 -r ./ tep-pey@example.com:/home/document
・リモートのindex.htmlをローカルのカレントディレクトリに転送
$ scp -P ポート番号 -i 鍵  tep-pey@example.com:/home/document/index.html .
このエントリーをはてなブックマークに追加
はてなブックマーク - scpコマンド
Share on Facebook

Written by teppei

9月 15th, 2009 at 11:16 am

Posted in ネットワーク

Tagged with