シェルスクリプトでバックグラウンドで子プロセスを動かしている場合、何も考えずに書くと元のプロセスを殺しても子プロセスが残ってしまいます。例えばこんな風に書くと:
![bashスクリプトで子プロセスを全部殺すイディオム - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/5b5b6f0c81f89e6e65e655c62f098b2e23bc71da/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9YmFzaCVFMyU4MiVCOSVFMyU4MiVBRiVFMyU4MyVBQSVFMyU4MyU5NyVFMyU4MyU4OCVFMyU4MSVBNyVFNSVBRCU5MCVFMyU4MyU5NyVFMyU4MyVBRCVFMyU4MiVCQiVFMyU4MiVCOSVFMyU4MiU5MiVFNSU4NSVBOCVFOSU4MyVBOCVFNiVBRSVCQSVFMyU4MSU5OSVFMyU4MiVBNCVFMyU4MyU4NyVFMyU4MiVBMyVFMyU4MiVBQSVFMyU4MyVBMCZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9NTg5MjBiZThkMjljYjc3YzBkNDExZThjZGU0ZjBkMTE%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBidXp6dGFpa2kmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWQzNWM3ZTU5YzA2MGEzNTM2NmNmMWMzZjYzMmM5YTdj%26blend-x%3D142%26blend-y%3D436%26blend-mode%3Dnormal%26txt64%3DaW4g44Ki44Oq44Ko44Or44O744ON44OD44OI44Ov44O844KvIOagquW8j-S8muekvg%26txt-width%3D770%26txt-clip%3Dend%252Cellipsis%26txt-color%3D%2523212121%26txt-font%3DHiragino%2520Sans%2520W6%26txt-size%3D36%26txt-x%3D156%26txt-y%3D536%26s%3D1e73f500e082b51a478d458c1fe591b3)
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 こないだ祝日だったので、サイバーエージェントの事業別業績を地道に調べてました。参照元はコチラ。 ■2003年9月期〜2007年9月期 まず2003年9月期から2007年9月期まで。広告関連の売上が堅調に伸び、EC、物販も伸びてる。ガラケー関連も良い時代でしたね。広告に関しては他社媒体売上が大きく、利益の大きい自社媒体の取扱いを多くしたいなぁという感じ。その解決策の要素も大きいと思われるAmeba事業への注力という時期。Amebaは立ち上げ時期であり、Ameba(メディア事業)の先行投資による損益が目立ちます。一方で、利益貢献で大きいのが投資育成事業。2006年2月上場のドリコム、2006年9月上場のミクシィ、その他、インタースペース、ウェブドゥジャパン(現クルーズ)、フルスピード
この文書はなんですか? この文書は*nix系のシステムにおけるプロセスやシグナルなどについて説明することを目的に書かれました。「プロセスとかよくわかってないからちゃんと知りたいな」みたいなひとたちが想定読者です。 書いているあいだは gist で管理されていたのですが、ボリュームが大きくなったので github で管理するように変えました。 目次 導入 プロセスの生成 プロセスとファイル入出力 ファイルディスクリプタ preforkサーバーを作ってみよう ゾンビプロセスと孤児プロセス シグナルとkill プロセスグループとフォアグランドプロセス epub と pdf epub化したもの、pdf化したものが release ディレクトリに入っています。thanks to mitukiii & moznion! ライセンス この 作品 は クリエイティブ・コモンズ 表示 - 継承 3.0 非移
特定のプロセスが極端にメモリをpidstatはプロセス単位(pid毎)のリソース使用量を測定するツールです。pidstatはsysstatの一部なので、sysstatをインストールする必要があります。 インストール $ sudo yum install sysstat Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * epel: ftp.iij.ad.jp * extras: www.ftp.ne.jp * rpmforge: mirror.fairway.ne.jp * updates: www.ftp.ne.jp Setting up Install Process Resolving Dependencies --> Running tran
鉄則1. [必須] 既定のブラウザは -no-remote 無しで起動すること。 鉄則2. [必須] 上記以外は -no-remote 付きで起動すること。 鉄則3. [推奨] -P オプションで明示的にプロファイル名を指定して起動すること。 補則:既定のブラウザをメインのプロファイルの他にたとえばテスト用のプロファイルでも起動する場合、メインのプロファイルのみ鉄則1に従い、その他は鉄則2に従うこと。 以降は蛇足なので読む必要なし。 例:鉄則に沿って以下のようなショートカットを作ったとする(Firefox 3.5が既定のブラウザ)。 1. Firefox 3.5 -P Firefox3.5 2. Firefox 3.5 -no-remote -P Firefox3.5-test 3. Firefox 3.0 -no-remote -P Firefox3.0 1を起動した状態で、2、3を起動
linux上のアプリケーションはプロセスとして起動されます。 プロセスを管理することはOS(ここではlinux)の重要な役割であり、プロセスのスケジューリング、割り込み、シグナル制御、優先度の制御、プロセスの切り替え、状態管理、メモリ管理などを行っています。 プロセスとは何でしょう? プロセスはCPU上で実行されるもので、タスクを完了するために、Linuxのカーネルが制御するあらゆるリソースを使うことができます。 スレッドとは何でしょう? スレッドは1つのプロセスから生成される実行単位です。同じプロセスから並行でスレッドを起動させることができます。 スレッドはメモリや、オープン中のファイルなどのリソースを共有することができます。同じアプリケーションのデータにアクセスすることができるのです。 プロセスはリソースを共有することができないので、これは大きな違いです。 言い換えると、スレッドは同じ
米調査会社のガートナーは、「2015年およびその先におけるIT部門とITユーザーのための予測」を発表、これからのITの進化がが引き起こすであろう大きな変化について10の予測を明らかにしました。 その内容は、コンピュータの能力、Siriのようなエージェント、モバイルの普及といったいまの進化の延長線上で、多くの、そして大きなビジネス環境の変化が起こるだろうというものです。10の予測について紹介します(一部、分かりにくいところはガートナーの説明を要約して補足しました。詳細はプレスリリースをご覧ください) (1) 2018年までにデジタルビジネスは、現在のビジネスプロセス上の労働者の半分を不要にする一方で、デジタルビジネスの仕事は5倍になる 例えば、冷蔵庫が自分で食料品を発注し、ECサイトのロボットがそれを自動処理し、ドローンが配達する、といったデジタルビジネスの進化によって、従来の食料品店の店員
調べ方 /proc/[pid]/smaps で KernelPageSize がデフォルトの 4kB 以外のプロセスを探す。 調べ方の例 /proc/[pid]/smaps で KernelPageSize が 4 kB 以外のプロセスを探す。 [root@yazekats-linux ~]# perl -lane '/KernelPageSize/ and $F[1]!=4 and print qq/$ARGV\t$_/' /proc/*/smaps /proc/3834/smaps KernelPageSize: 2048 kB PID:3834 のプロセス名を調べる。 [root@yazekats-linux ~]# ps -fp 3834 UID PID PPID C STIME TTY TIME CMD root 3834 3832 0 13:44 pts/0 00:00:01
Ruby でシェルのようなものを作ってみると、Ruby とシェルやシステムコールの理解ができて、研修の課題とかにいいんじゃないかと10年くらい前に思ってたのを、ふと思い出したので書いてみます。 基本 シェルの動作を簡単に説明すると次のような感じです。 プロンプトを出力 標準入力からコマンドラインを読み込む 読み込んだコマンドを実行する コマンドの終了を待つ 1 に戻る これをそのまま Ruby で書いてみます。 while true print '-> ' # プロンプト表示 cmd = gets or break # コマンド入力 cmd.chomp! # 末尾の改行削除 pid = Process.fork do # 子プロセス生成 Process.exec [cmd, cmd] # コマンド実行 end Process.waitall # 子プロセスの終了待ち end Process
シグナルと trap コマンド シグナル シグナルとは? シグナルとは、実行中のプロセスに対して、さまざまなイベントを通知するために送出されるものである。 よく使用される、プロセスを終了するためのシグナルである SIGTERM や SIGKILL などのほかにも、数十種類のシグナルが存在する。 使用可能なシグナルの一覧は、コマンドラインから kill -l を実行することで参照可能である。 $ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19)
UbuntuやFedoraといったGUIプラットフォームには、ネットワークトラフィックを表示するアプリケーションが用意されていることが多い。ただしそれらアプリが出力するトラフィック情報は大雑把で、個別の情報は表示されないことがある。またGUIアプリでは、sshでログインした状態でネットワークトラフィックを調査するといった作業ができない。 How to Monitor Network Traffic in Linux - Techthrob.comにおいてLinuxやUnixなどでネットワークトラフィックのモニタリングを実施するための2つのツールが紹介されている。コマンドラインで動作するツールなので、ssh経由でログインして使うことができる。紹介されているツールと活用例は次のとおり。 iftop(8) ネットワークトラフィック情報を表示するツール。IPとポート番号をベースに、それぞれの通信に
あまりにも処理に時間がかかるようなSQLを実行してしまい、MySQLがうんともすんとも言わなくなってしまうような状況、よくありますよね。っていうか、まぁそんな状況あってはならないんですが、時たまあります。そんな時、問題となっているクエリの処理を止めたいわけです。 特定のクエリを止める方法 MySQLで実行中のクエリ一覧を見て、SQLを強制終了する方法 こちらを見てもらえればやり方は分かります。単純にMySQLに入って、show processlist;で問題のあるクエリを発見し、プロセスIDを kill するだけ。とても簡単。 複数のクエリを一括で止める方法 今回は問題のあるクエリが100個あったらどうする…?的なのを解決するエントリーです。まぁ、問題あるクエリ100個ある状況は、アプリ的に問題あるんじゃね?っていうレベルですが。 1個ずつプロセスIDをコピペして…なんてやってられないです
「いますぐ実践! Linux システム管理」はこちらです。 メルマガの解除、バックナンバーなども、以下からどうぞ。 https://www.usupi.org/sysad/ (まぐまぐ ID:149633) その他、作者に関するページは、概ね以下にございます。 https://www.usupi.org/kuri/ (まぐまぐ ID:126454) http://usupi.seesaa.net/ (栗日記ブログ) https://twitter.com/kuriking/ (twitter) https://facebook.com/kuriking3 (facebook) https://jp.pinterest.com/kuriking/pinterest) https://www.instagram.com/kuri_king_/ (instagram) [バックナンバーのトップへ
CPU負荷制限 cpulimit というツールがあり、%指定でそのプロセス(子プロセス含む)のCPUの利用率を制限することができます。例えば infinity という単にシングルスレッドで無限ループするプログラムがあったとして、CPU使用率10%で制限するには以下のようにします。 この10%というのは1論理コアの割合です。100と指定すると論理コア1個分(100%)まで許可することになります。例えば4論理コアの環境ではこの値は0~400まで設定できます。なのでシングルスレッド・シングルプロセスのプログラムであれば100以上指定しても意味はありません。 infinityを2論理コア上で50%で制限すると、以下のようになります。 (↓では論理コア全部を100%として表示してます) 既に走っているプロセスに制限をかけることもできます。
今までは、「kill すればプロセスは終了する」って思ってたので、例えば、以下のようなコマンドでデーモンプロセスが終了しないのを不思議に思ってた。 $ kill [デーモンのプロセス番号] (いや、man 読んどけよって話なんですが・・・) kill で終了させられない例 例として、rails のデフォルトのweb サーバであるwebrick $ ruby script/server webrick -d $ ps ax | grep ruby 518 ?? S 0:00.00 ruby script/server webrick -d $ kill 518 $ ps ax | grep ruby 518 ?? S 0:00.00 ruby script/server webrick -d kill したのに終了してねー(⊃д⊂) 今までやってた対処法 $ kill -KILL 518 こ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く