タグ

Linuxとlinuxに関するKinjouJのブックマーク (86)

  • id コマンドの group 版。グループに所属しているユーザの一覧を取りたい - それマグで!

    id コマンドで、ユーザーの詳細が出せますよね $ id www-data uid=33(www-data) gid=33(www-data) groups=33(www-data) id コマンドを使えば、ユーザがどのグループ、サブグループに所属しているか確認できます。 では、group を確認するにはどうすれば。 $ group www-data bash: group: コマンドが見つかりません そうなんですよ~。グループ名から、所属しているユーザー名をリストする方法がわからないんです。 groups コマンドは引数がユーザー名で、ユーザが所属しているグループを表示するだけで、 id コマンドと変わらないし 仕方ないので getent する getent を alias するしかなかった。 $ alias group="getent group | /bin/grep " alias

    id コマンドの group 版。グループに所属しているユーザの一覧を取りたい - それマグで!
  • Linux のオーバーコミットについて調べてみた

    Linux のオーバーコミットについて調べてみた Linux のオーバーコミットのはなし(これを書いたのは Linux 2.6.38 のとき) Linux カーネルは実メモリ以上にメモリをプロセスに割り当てることができる この仕組みをオーバーコミット (over-commit) と呼ぶ オーバーコミットでは,とりあえずメモリを malloc させて仮のアドレスを返しておき, 実際に使われる段になってはじめて実メモリを確保する. 実験ただ malloc し続けるだけのプログラムを作って実験してみる. このプログラムをメモリ 1 GB + スワップ 1 GB のホストで実行してみると, $ free -t total used free shared buffers cached Mem: 1022404 82992 939412 0 4172 12280 -/+ buffers/cache:

    Linux のオーバーコミットについて調べてみた
  • スワップされて困っちゃうのでswappinessを設定する - Qiita

    Linuxカーネル2.6から採用されたswappiness。こちらの値を変更すると、メモリスワップの度合いを調整できるようだ。 /proc/sys/vm/swappinessというファイルにパラメータが入っている。 値は0から100まででデフォルトは60。大きいほどよくスワップする。0にするとRAMを使いきるまでスワップしない。100だとパフォーマンスに悪影響を及ぼすレベルでガンガンスワップする。 /proc/sys/vm/swappinessの値を直接書き換えてると、シャットダウンまでその値が適用される。

    スワップされて困っちゃうのでswappinessを設定する - Qiita
  • 【RHEL】linuxメモリのfreeとmeminfoの関係を図解し利用率の計算方法を説明してみる - のぴぴのメモ

    はじめに linuxのメモリ利用容量(空き容量)の考え方 linuxのメモリ利用容量/空き容量の計算方法 ■RHEL7 【freeコマンドとmeminfoの図解】 【計算方法】 freeコマンド表示例 /proc/meminfo表示例 ■RHEL6 【freeコマンドとmeminfoの図解】 【計算方法】 freeコマンド表示例 /proc/meminfo表示例 ■RHEL5以前 【freeコマンドとmeminfoの図解】 【計算方法】 freeコマンド表示例 /proc/meminfo表示例 蛇足 その1:無名ページとファイルページ その2:図解の内容のツッコミ その3:RHEL6の計算 その4:Inactiveを空き領域とすることは間違い。 はじめに linuxサーバを利用する上で何時も頭を悩ますものの一つが、メモリ利用状況の評価(メモリ利用率)ではないでしょうか。私も悩みます。そこで

    【RHEL】linuxメモリのfreeとmeminfoの関係を図解し利用率の計算方法を説明してみる - のぴぴのメモ
  • マルチスレッドのコンテキスト切り替えに伴うコスト - naoyaのはてなダイアリー

    また Linux カーネルの話です。 Linux では fork によるマルチプロセスと、pthread によるマルチスレッドでの並行処理を比較した場合、後者の方がコストが低く高速と言われます。「スレッドはメモリ空間を共有するので、マルチプロセスとは異なりコンテキストスイッチ時にメモリ空間の切り替えを省略できる。切り替えに伴うオーバーヘッドが少ない。」というのが FAQ の答えかと思います。 が「オーバーヘッドが少ない」と一言にいわれても具体的にどういうことなのかがイメージできません。そこで Linux のスレッド周りの実装を見て見ようじゃないか、というのが今回のテーマです。 3分でわかる(?) マルチプロセスとマルチスレッド まずはうんちく。マルチプロセスとマルチスレッドの違いの図。以前に社内で勉強会をしたときに作った資料にちょうど良いのがあったので掲載します。Pthreadsプログラミ

    マルチスレッドのコンテキスト切り替えに伴うコスト - naoyaのはてなダイアリー
  • setlockを使って簡単に多重起動防止機能を実装する - Qiita

    ギョームの必要上、cronを使って定期実行をするスクリプトに多重起動防止の機能を実装したいときがあった。 その際に、setlockというdaemontoolsに付属されているスクリプトを使うと、ロックファイルを使って簡単に多重起動防止機能が実装できることを会社の先輩に教わったので、使い方のメモを残しておく。 cr.yp.to/daemontools/setlock.html The setlock program(↑上記サイトの日語版) サンプルコードの実行環境はCentOS6.5。 サンプル 例えばsleeping.rbという、10秒sleepして「wake up!」と出力するだけの単純なスクリプトがあったとする。

    setlockを使って簡単に多重起動防止機能を実装する - Qiita
  • pipeバッファ - Linuxの備忘録とか・・・(目次へ)

    実装イメージ #define PIPE_DEF_BUFFERS 16 truct pipe_inode_info { wait_queue_head_t wait; unsigned int nrbufs, curbuf, buffers; unsigned int readers; unsigned int writers; unsigned int waiting_writers; unsigned int r_counter; unsigned int w_counter; struct page *tmp_page; struct fasync_struct *fasync_readers; struct fasync_struct *fasync_writers; struct inode *inode; struct pipe_buffer *bufs; }; struct p

  • cachectld〜無駄なページキャッシュの削除を自動化〜 | メルカリエンジニアリング

    原稿の執筆が一段落して心に余裕が出てきた@cubicdaiyaです。 今回はサーバを運用しているとありがちなページキャッシュに関する問題とメルカリのアプローチについて解説します。 Fluentdによるログ転送 話は変わりますが、メルカリの各サーバ上ではプログラムが吐いたログデータをKibanaやNorikraといった各種コンポーネントに転送するためにFluentdが稼働しています。各ログデータは原則単一のファイルに追記されてFluentdのtailプラグインによって各所に転送されていきます。 ログデータのサイズはまちまちで、1日で数GB程度のログデータもあれば数十GB以上のログデータもあります。 ページキャッシュと巨大なログファイル 各サーバに吐かれるログデータのサイズはサーバに搭載されているメモリのサイズと比べると1日分だけでもかなりの量になります。そして、このように絶えず書き込まれる巨

    cachectld〜無駄なページキャッシュの削除を自動化〜 | メルカリエンジニアリング
  • portフォワードというかTCPリレーというか(socat) | Linux | マイノリティでいこう

  • Charming Python: Functional programming in Python, Part 3

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    Charming Python: Functional programming in Python, Part 3
  • Linuxで無線LANをコマンドで接続する(raspi 用) - それマグで!

    wlan を設定するコマンドなど 無線LANの接続をコマンドで処理したいと思って少し調べましたのでメモを残しておきます。 SSID のスキャン sudo iwlist wlan0 scan wlan0 が設定されてば、SSIDをスキャンすることが出来る。 接続先のssid を変える wlan0が設定されているとssidを切り替えられる。 sudo iwconfig wlan0 essid 接続先ssid key s:接続キー wlan0 がまだ未設定なら、インターフェイスを使えるように設定していく必要がある。 ifup wlan0 # これが使えるように 現在の接続の確認 iwconfig で現在の設定を確認することが出来る。 takuya@raspberrypi:~$ iwconfig wlan0 IEEE 802.11bgn ESSID:"ocu.xxxxxssidxxxx" Nick

    Linuxで無線LANをコマンドで接続する(raspi 用) - それマグで!
  • Linuxでアプリケーションやユーザごとに、異なるdefault gateway を割り当てる変態ルーティングの方法 - お前の血は何色だ!! 4

    Linuxで、アプリケーションやユーザごとに、異なるデフォルトゲートウェイを割り当てたくなる時があります。 普通は、優先度とかで自動で切り替えとか、そーゆー感じですが、 そうではなくて、 ユーザAは、デフォルトゲートウェイ1を必ず使い、ユーザBは、デフォルトゲートウェイ2を絶対に使う。 プロセスAは、デフォルトゲートウェイ1を必ず使い、プロセスBは、デフォルトゲートウェイ2を絶対に使う。 そんな風にしたい時があります。 まあ、人生は長いですから、そういう時もあるのです。 ネッツ PC 192.168.0.10 ---> HUB -->gateway1 192.168.0.100 -->gateway2 192.168.0.200 ユーザ user_proxygw は、192.168.0.200 を使い、 それ以外は、 192.168.0.100(default gw) を使うというのを考え

    Linuxでアプリケーションやユーザごとに、異なるdefault gateway を割り当てる変態ルーティングの方法 - お前の血は何色だ!! 4
  • 技術/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上で検索したら見つか

  • よくわかるLinux帯域制限 | GREE Engineering

    矢口です。 みなさんはLinuxのtcという機能をご存知でしょうか。送信するパケットの帯域制御を行うことができる大変強力な機能で、グリーでもいくつかの用途で使用されています。 具体的な事例の一つはRedisです。Redisではreplicationを新規に開始する際やfailoverが発生しmasterが切り替わった際(特に2.6系)にストアされている全データが転送されます。しかし帯域制限をかける機能がないため、ネットワーク帯域を圧迫してしまう危険性があります。また通常のクライアントとの通信でも大量のクエリにより予想以上の帯域を使用してしまう可能性があります。このような場合にtcを用いることでRedisの使用する帯域をコントロールできます。 このように有用なtcですが残念なことに日語/英語ともにわかりやすい解説や詳細な情報は多くありません。 私も社内において使われていたtcの設定に問題が

    よくわかるLinux帯域制限 | GREE Engineering
  • xargsからのcURL

    1200くらいのURLのリストを渡され、そのURLのファイルをダウンロードする必要があった。今更ダウンローダーをダウンロードしてきて、インストールして、使って、アンインストールするのも面倒だったので、xargsからcURLをつなげてやった。 $ xargs -n 1 -P 4 curl -OL < urllist.txt xargsは、-n 1で標準入力を一行ずつの処理でき、-P 4で指定したコマンドを4つ並行に走らせることができる。cURLでは-Oを使ってURLから保存するファイル名を取り、-Lでリダイレクトを辿るようにする。これで4つ並行にファイルをダウンロードできた。 xargsはもちろん、cURL程になっても使い方を覚えてなくても--helpでなんとなくわかる。こういう--helpやGoogleで使い方や利用例がわかるCLIツールは、ほとんど何も覚える必要がない(どういう目的のツー

    xargsからのcURL
  • Linux なら expect でコマンドを自動化しよう | 温故知新 linux実践講座

    Linux なら expect でコマンドを自動化しよう expect は対話的なプログラムとのやりとりを自動化するプログラムです。特定の文字列とマッチすると入力します。 対話プロンプトに自動入力できます。特定の文字列とマッチすると値を入力してくれます。 例) telnetでログインを自動化する 例) telnetでログインを自動化する #!/usr/bin/expect -- set timeout -1 spawn telnet hogehoge.com expect "login:" send "hoge\r" expect "Password:" send "hogepasswd\r" interact set timeout:expectのタイムアウト値はデフォルトで10秒になっているので10秒以上かかると思われる処理の場合 set timeout -1 でタイムアウトしな

    Linux なら expect でコマンドを自動化しよう | 温故知新 linux実践講座
  • Linuxのmmap()を通して、アドレス空間の扱いを垣間見る - Qiita

    近況 飲んで帰ってきて、気づいたらこんなの書いていました。 ちょっと具体性に乏しいので、もう少し後でパッチを書きます。 (でも、明日は会社の歓迎会で飲んでくるのだ) 前回のあらましと今回見るところ 前回、仮想アドレスと物理アドレスの紐付けをする処理とそのデータ構造のページテーブルを見ました。 そして、今回はユーザ空間へのアドレス空間マップを行うmmap()を見ることで、仮想アドレス空間の扱いの一端をかいま見てみましょう。 mmapの実装 mmapは以下の実装である。 (厳密に言うと、システムコールのベクタではないので「システムコールの開始地点」ではない) asmlinkage long sys32_mmap(struct mmap_arg_struct32 __user *arg) { struct mmap_arg_struct32 a; if (copy_from_user(&a, a

    Linuxのmmap()を通して、アドレス空間の扱いを垣間見る - Qiita
  • 村夫子に憧れて… | Android Linux のメモリ管理について

    たまにはプログラミングの記事でも書かないといけないなと思って Androidのメモリ管理について調べていたら、わかりやすいページがあったので翻訳しました。 誤訳があったらごめんなさい。 ここからの文章はYhcting氏のサイトを翻訳し、若干の補足を加えたものです。 原文 http://yhcting.wordpress.com/2010/08/15/linuxandroid-analyzing-memory-usage/ なぜなら、この環境下(Android Linux)ではシェル(bash, tcshなど)が完全に機能することを期待出来ないからです。 Linuxのメモリーについて話す前に、メモリーについての基的な概念について確認しましょう。 (この記事はkernel 2.6.29 について書かれています。) メモリーには以下の四つのタイプが存在します。 private(heap) c

  • 危険!決して実行してはいけないLinuxコマンド7個(+1個) | 俺的備忘録 〜なんかいろいろ〜

    Linuxでは、実行することでシステムに重大な影響を及ぼす操作がいくつもある。 今回は、全てのシステム領域を削除してしまうようなものだったり、重要データを削除してしまうような危険なコマンド7個を紹介する。 1.rm -rf rmコマンドでファイルを削除する際、このオプションを用いて削除することで非常に手っ取り早く作業を行う事が出来る…のだが、ちょっとしたタイプミスをしてしまった場合、消してしまってはいけないファイルも強制的に削除されてしまうこともある。 以下に例を記載しよう。 rm :ファイルを削除するコマンド。 rm -r :フォルダを指定することで、再帰的に中のファイルを削除する。 rm -f :削除確認無しに、強制的にファイルを削除する。 ここまでは問題無い使い方。実際に危険なのは、以下のコマンドになる。 rm -rf / :実行するとルートディレクトリ配下を強制的に削除する。 rm

  • bash で Ctrl-C をフックする方法 - pyopyopyo - Linuxとかプログラミングの覚え書き -

    bash で Ctrl-C をフックする方法、つまりSIGINTを自前のシグナルハンドラで捕捉する方法についてメモ。 概要 シグナルハンドラを設定するには、trap というbashのビルトイン・コマンドを使います #!/bin/bash hander() { echo "recv!!" } trap hander SIGINT while /bin/true; do : ; done Ctrl-Cを押すと SIGINT という名前のシグナルがプロセスに通知されるので、trapコマンドで SIGINT を受け取ったら hander という関数を呼ぶように設定しています このシェルスクリプトは実行すると末尾で無限ループになるだけです。ただCtrl-C を押しても、シェルスクリプトは終了せず、代わりに hander()関数が呼ばれて"recv!" という文字列が画面に表示されます Ctrl-Cで

    bash で Ctrl-C をフックする方法 - pyopyopyo - Linuxとかプログラミングの覚え書き -