20210502のLinuxに関する記事は11件です。

Linuxにおけるディレクトリの構成について

はじめに LinuxのFHSの構造について曖昧だったので、自分用にまとめました。 Linuxの勉強を始めた初心者の方にも参考にしていただければと思います。 FHSの構造 Linuxにおけるディレクトリ構成の基本ルールをFile Hierarchy Standard(FHS)と呼びます。 FHSにおいて、/ディレクトリ直下のディレクトリ構造は以下のように定義されています。 ディレクトリ名 用途 静的 共有可能 / ルートディレクトリ /bin 基本コマンド /boot システムを起動するために必要なファイル × /dev デバイスファイル × /etc システムやミドルウェアに関する設定ファイル ○ × /home ユーザのホームディレクトリ ○ /lib /binや/sbinにあるコマンドを実行するのに必要なライブラリ /media リムーバブルメディアのマウント場所 /mnt 一時的なファイルシステムのマウント場所 /opt パッケージ管理システムでインストールされたプログラム ○ /proc プロセスの実行状況(CPU, メモリ, FSの使用状況など)を記載したファイル /root rootユーザのホームディレクトリ /run 実行中プロセスのデータ /sbin システム管理者用のコマンド(起動・停止・再起動) /srv システムで動くサーバ用のデータ /sys カーネル・システム情報の疑似ファイルシステム /tmp 仮想メモリ上の一時ファイル /usr 第2の階層、ユーザが共通的に利用するプログラムやライブラリ ○ ○ /var 可変データ(ログ /var/log、ロックファイル /var/lock、キャッシュ /var/cacheなど) × △ ディレクトリによって、以下の性質が異なります。 ディレクトリ下の階層が静的(書き換わらない)かどうか ディレクトリを複数のマシン間で共有できるかどうか また、/usrには、/と同様に/bin /sbin libのディレクトリがあり、コマンドやライブラリが置かれます。 FHSの定義では、/直下のディレクトリ側には、システムの起動・復元・復旧・修復するのに必要なコマンド群を置くべきだとされているみたいです。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Linux】FHSの構造

はじめに LinuxのFHSの構造について曖昧だったので、自分用にまとめました。 Linuxの勉強を始めた初心者の方にも参考にしていただければと思います。 FHSの構造 Linuxにおけるディレクトリ構成の基本ルールをFile Hierarchy Standard(FHS)と呼びます。 FHSにおいて、/ディレクトリ直下のディレクトリ構造は以下のように定義されています。 ディレクトリ名 用途 静的 共有可能 / ルートディレクトリ /bin 基本コマンド /boot システムを起動するために必要なファイル × /dev デバイスファイル × /etc システムやミドルウェアに関する設定ファイル ○ × /home ユーザのホームディレクトリ ○ /lib /binや/sbinにあるコマンドを実行するのに必要なライブラリ /media リムーバブルメディアのマウント場所 /mnt 一時的なファイルシステムのマウント場所 /opt パッケージ管理システムでインストールされたプログラム ○ /proc プロセスの実行状況(CPU, メモリ, FSの使用状況など)を記載したファイル /root rootユーザのホームディレクトリ /run 実行中プロセスのデータ /sbin システム管理者用のコマンド(起動・停止・再起動) /srv システムで動くサーバ用のデータ /sys カーネル・システム情報の疑似ファイルシステム /tmp 仮想メモリ上の一時ファイル /usr 第2の階層、ユーザが共通的に利用するプログラムやライブラリ ○ ○ /var 可変データ(ログ /var/log、ロックファイル /var/lock、キャッシュ /var/cacheなど) × △ ディレクトリによって、以下の性質が異なります。 ディレクトリ下の階層が静的(書き換わらない)かどうか ディレクトリを複数のマシン間で共有できるかどうか また、/usrには、/と同様に/bin /sbin libのディレクトリがあり、コマンドやライブラリが置かれます。 FHSの定義では、/直下のディレクトリ側には、システムの起動・復元・復旧・修復するのに必要なコマンド群を置くべきだとされているみたいです。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

「Linux何それ美味しいの?」からLPIC満点近く取った話

はじめに 先日LPIC101と102を受けて、満点近くとって合格しましたので、ざっくりと試験合格までにした学習教材や学習手順について紹介していきます。 これからLPICを受けようと考えている方の参考になればなと思います。 ぜひ最後までご覧ください。 ↓合格時のスコアです。試験は800点満点と言われています。 注意点 本記事には、LPICの試験内容やそれに類したものは一切記載していませんので予めご了承ください。 本記事の内容 1. LPICについて 2. 結論?? 3. 学習を進める上での心構え 4. 具体的対策 5. 細かいTips 6. 【番外編】Linux入門書 7. 最後に 1. LPICについて まず最初にLPICの試験体制などについて簡単に説明しておきます。 正式名称は「Linux技術者認定試験(Linux Professional Institute Certification)」 であり、Linux技術者としての技術力を認定するIT資格です。 このLPICですが、「レベル1」「レベル2」「レベル3」の3つのレベルが用意されており、順次ステップアップする認定構成になっています。 そのため上位レベルに認定されるためには、下位レベルの認定が必須です。 また、レベル1、レベル2の認定を取得するには、それぞれのレベルに用意されている2つの試験を両方とも合格することが必須で、またレベル3に関しては、「300試験」「303試験」「304試験」の3つの試験のうち、いずれか1つの試験に合格する必要があります。 レベル 試験名 認定レベル1 ・LPIC1 101・LPIC1 102 認定レベル2 ・LPIC2 201・LPIC2 202 認定レベル3 ・LPIC3 300(混在環境)・LPIC3 303(セキュリティ)・LPIC3 304(仮想化&高可用性) 今回はレベル1についての話をしていきます。 レベル1の試験概要は以下の通りです。 101試験の概要 項目 詳細 出題数 約60問(800点満点) 制限時間 90分 合格に必要な正答率 65%前後 試験トピック トピック101:システムアーキテクチャトピック102:Linuxのインストールとパッケージ管理トピック103:GNUとUnixコマンドトピック104:デバイス、Linuxファイルシステム、ファイルシステム階層標準 102試験の概要 項目 詳細 出題数 約60問(800点満点) 制限時間 90分 合格に必要な正答率 65%前後 試験トピック トピック105:シェルとシェルスクリプトトピック106:ユーザーインターフェースとデスクトップトピック107:管理タスクトピック108:必要システムサービストピック109:ネットワークの基礎トピック110:セキュリティ こんな感じで結構幅広く出題されます。 2. 結論?? では、もったいぶらず結論からいきましょう。 結論:LPICはただの暗記ゲー。書籍やネット教材を用いて、内容を丸暗記すれば終わり。以上。 …… …… と言いたいところですが、残念ながらそう簡単にはいきません。 ただの暗記ゲーと言ってしまえばそれまでなのですが、この暗記ゲー、通常のゲームとはまるでその難易度が違います。 というのもこのLPIC、とにかく暗記量が尋常じゃありません。 実際に勉強している方はわかるかもしれませんが、101・102を合わせると、とてつもなく膨大な暗記量になります。 「全くLinuxに触れたことがない」という人の場合、おそらく試験を受ける前に、この膨大な暗記量に押しつぶされ、途中で挫折する可能性が非常に高いです。 現に私自身、「医学部での勉強や大学受験」などで、暗記に対しての耐性はかなり強い方なのですが、それでも途中で何度も挫折しそうになりました。 それくらいとにかく暗記量がえげつない。。 まぁ簡単に例えると、 「倒しても倒しても次からどんどん敵が現れ、圧倒的な数の暴力によりだんだん追い込まれていく。」 LPICとはそういうゲームなのです。 3. 学習を進める上での心構え さて、ここまでで「いかにこのLPICという暗記ゲーがやばいのか」ということを触れてきました。 しかし、安心してください。 このような数の暴力で殴りかかってくる相手に対して、何も真正面からぶつかる必要はありません。 私たちには奴らと違って「知恵」という最強の武器があります。 そう、つまり 押し寄せてくる「暗記の波」をできる限り避けながら、一瞬の隙をついて相手の王将を討ち取る 数で圧倒的に劣る私たちは、そういった戦い方をしていくべきなのです。 では、具体的にどのようにしてその「暗記の波」を避けていけばいいのか? それをお話しする前に、まずこのゲームを戦っていく上でのマインドセット、つまり「心構え」を先に皆さんにお伝えしたいと思います。 というのも、手取り足取り 「この敵がきたらこうする」 「あの武器を持っている敵がきたらこう攻める」 といったことを教えていては、 いくら時間があっても足りませんし、また外れ値の敵に対しては柔軟な対応もできなくなってしまいます。 そのため、まずは基本の考え方や大まかな方針を頭に叩き込んだ方が効率がいいんです。 では、ゲームを戦っていく上での心構え、全部で3つほどありますので一つずつ紹介していきます。 【注意】 ここから先の内容は一部の人にとっては当たり前の内容かもしれません。 なので、少し読んで 「それくらい知ってるわ!こちとらそこいらの素人とは違うねん!」 という感想を持ちましたら、この章はすっ飛ばしてさっさと次の章に進むことをおすすめします。 心構え①:インプット:アウトプット=3:7 まず、皆さんに覚えて欲しいのが、この暗記黄金法則「インプット:アウトプット=3:7」 「インプットばっかりするな!とにかくアウトプットしろ!」と息巻く人は、このようによく見かけますよね。 当然このLPICも例外ではなく、アウトプットが非常に肝になってきます。 例えば、 「実際にVirtulBoxをインストールし、Linux環境を立ち上げ、コマンドを試し打ちする」 「各章が終わるごとにノートに簡単でいいから要点をまとめる」 「市販の問題集を使い、問題を解く」 などのように、とにかく「見て終わり」にしないことが大切です。 必ず手を動かす。 正直このマインドセットが一番大切です。 特に、このLPICにはコマンドやらオプションやらが山のように出てきます。 それらをただ見て覚えることなんて到底不可能なので、必ず何かコマンドが出てくるたびに「試し打ちして挙動を確かめる」ということをしていきましょう。 これだけでも暗記効率は数倍上がります。 心構え②:短期一点集中 次に、ご紹介するのが「短期一点集中」 次から次へと敵を送り込んでくる相手に対して、長期戦を仕掛けるのは得策ではありません。 やると決めたらそれだけに集中して、短期間でやり切る。 これも大切です。 具体的には、 「試験日を先に設定してしまい、それまでは仕事と睡眠・食事以外の時間は全てLPICに捧げる」 「休日は友達や彼女と遊ぶのを我慢して、学習時間を必ず確保する」 などです。 私の場合、後述するPing-t1という学習サイトの契約期間を一つの目安として決めました。 この学習サイトは、一部有料会員しか見れないコンテンツが存在しており、試験突破にはこのコンテンツがどうしても必要となってきます。 しかし、月額2400円とまぁまぁな値段がかかってしまうため、お金に余裕がない私にはあまり良心的ではありませんでした。 そこで私は 「1ヶ月間限定で有料コンテンツを利用する」 と決めて、有料会員に登録しました。 こうすることで、無駄な出費も減りますし、何より絶対に期間内に勉強を終わらせてやるという「締め切り効果」2が働き、学習に緊張感が与えられます。 さらに、LPICは試験を受けるためにかかる費用は約15000円となっており、情報処理系の資格と比べると値段がかなり高めに設定されています。 そのため、一度申し込んでしまうと 「こんなに値段を払ったのだから、絶対に無駄にしたくない」 というサンクコストバイアス3がかかり、これも学習に緊張感を与える要因として機能します。 つまり、 「締め切り効果+サンクコストバイアス」によるブースター これを利用することで、学習効率の大幅な上昇が見込めるのです。 心構え③:武器を積極的に活用する 最後にご紹介するのが、「武器の積極的な活用」です。 素っ裸で戦場に飛び込んでいくのはあまりに無謀です。当然ながらちゃんと武装して戦場にいく必要があります。 しかし、武装といっても今の情報爆発社会において、 「どの武器を選べばいいのか?」 と悩む人はかなり多いかと思います。 具体的には 「どんなWebサイトや書籍を参考にすればいいのか?」 これを決めるのはなかなか至難の業かと思います。 しかし、安心してください。 そのように皆さんがうんうん悩む時間をなくすため、私の方からこの暗記ゲー攻略に最も適した武器を3つほどご紹介します。 正直この3つの武器さえあれば、LPICを沈めることは容易です。 現にほぼ満点近く取って合格した私もこれ以外の武器(教材)はほとんど使用していません。 武器①:Ping-t まず一つ目の武器がPing-tです。 これが今回のゲーム序盤における最強のチート武器になります。 通常のRPGゲームなら序盤からこのようなチート武器がいきなり手に入るなんてそうそうありません。 これがあるおかげで、LPICという無理ゲーが多少マシになります。 まず簡単にPing-tについて説明しておくと、 『CCNA/CCNP・LinuC(LPIC)・HTML5プロフェッショナル認定資格・OSS-DB・オラクルマスター・ITパスポート・ITILファンデーション試験の合格を目指す人を応援する学習サイトです。(登録ユーザ20万人)』  『ユーザ登録をすると、無料でCCNA問題集(600問以上)やLinuC(LPIC101)問題集(500問以上 LPI認定教材)、Oracle Master Bronze SQL基礎 11g/12c(各400問以上)、ITパスポート試験の過去問(1700問)、 ITILファンデーション(300問)、学習日記、助け合いフォーラムなどを利用できるようになります。』 ※引用元 ping-t公式サイト ちなみに、先ほども説明しましたが、このPing-tには一部有料のコンテンツがあります。 LPIC問題集の場合 101試験対策のコンテンツは全て無料で、102試験対策の教材は全て有料(月額2400円) となっています。 そのため、先程私が紹介した「1ヶ月限定で使用する」という縛りを設けて学習することをおすすめします。 101試験が終わったら、すぐに有料会員になり、1ヶ月間みっちり使い倒してやりましょう。 ではここから、このPing-tの特徴について簡単に説明していきます。 まず、特筆すべき点は何といっても、一問一問に対する解説の丁寧さです。 たぶんPing-tを使ったことがない人は 「Ping-t??まぁ資格対策としてよく聞くけど、所詮ただの一問一答形式の問題集みたいなもんやろ?そこらへんの本でいいやん。」 こんな感じの印象をお持ちかと思います。 しかし、このPing-tをなめてもらっては困ります。 Ping-tは、問題集がただ解けるだけでなく、その問題に対する解説も非常に丁寧に書かれているため、問題を解きながらでも理解を深めていきやすい作りになっているのです。 (しかも、各問題のポイントとなった部分の参考記事も載っています。めちゃくちゃ丁寧。) つまり通常、「各分野の理解」→「問題を解く」という2つの工程を別々の教材を使いながら行うところを、Ping-tは全て自分一人で完結させてしまうのです。 これが序盤の学習効率を飛躍的に上昇させます。 (詳しい使い方などは、後述の「具体的対策」の章で述べます。) 武器②:白本 次に紹介するのが、スピードマスター問題集、通称「白本」です。 (この名称の由来は、表紙が白いからだそうです。単純。) この本は、いわば過去問みたいなものです。 掲載されている問題が正式に過去問かどうかはわかりませんが、それでもLPICを運営している組織のLPI(Linux Professional Institute)の厳正な審査に合格した認定教材であるため、それなりの信頼性はあります。 現に、実際に試験を受けてみても、かなり近い問題が出題されているように感じました。 (あまり大きな声では言えませんが、全く同じ問題を見かけることもちらほら。) 学習の中盤〜終盤にかけてはこれをメインに据えて戦っていきます。 武器③:あずき本 最後にご紹介するのが、有名なLinux教科書、通称「あずき本」です。 (こちらも名称の由来は、表紙があずき色だからだとか。単純すぎじゃね?) この本はいってみれば辞書みたいなものです。 しかし、個人的にはこの教科書、絶妙にわかりづらい。。 一応、私自身お守り的な感じでこちらの教科書を使っていましたが、特段必要となる場面はなかったです。 というのも、必要な知識は全て一番目の武器である「Ping-t」でカバーできるからです。 (しかも「あずき本」には載っていないけど、Ping-tには載っている知識も結構あります。「あずき本」の存在意義とは) まあRPGなんかでよく序盤の隠しエリアで強い武器を手に入れてしまうと、中盤のショップで買える武器がほとんど必要なくなるといったことはよくありますよね。 それと似たようなものですね。 「みんな持っているから、とりあえず持っておこう」みたいな精神で購入する人がたぶんたくさんいるんでしょう。 まぁしかし値段、結構する(紙媒体だと4000円くらい)ので、これを買うのならPing-tの有料会員に申し込んだ方が絶対にいい気がするんですが。。。 4. 具体的対策 さて、ここまで皆さんにLPICという戦場での心構えについて説明してきました。 しかし実をいうと、この心構え、つまりマインドセットを体得すればもうほぼこのゲームは攻略したも同然なんですよね。 ここまであげた3つを守ってしっかり学習を進めていけば、ある程度の猛者ならいずれこの難攻不落の暗記ゲーを攻略できるでしょう。 しかし、そうはいっても 「具体的にどういう風に3つの武器を使って戦っていけばいいのかわからない。」 「この心構えだけで、暗記ゲーを乗り切れるかどうか不安」 という方も中には一定数いると思います。 その気持ちも痛いほどわかります。 ということで、ここから先はそういった方たちに向けて、アクションプランとともに「具体的な学習の進め方」についてお伝えしていこうと思います。 今からいうことを実践すれば、必ず誰でも挫折することなく「暗記という荒波」を乗り越えることができるはずです。 では一つずつステップ順に説明していきます。 ちなみに、今回の説明では、各試験の学習期間は約1ヶ月を想定しています。 理由はシンプルに、全くLinuxを知らない初学者がLPICを合格するのに必要な時間は1ヶ月もあれば十分だからです。 現に私自身も1ヶ月で9割オーバーを叩き出すことに成功しています。 (一応私の学習開始日と試験当日のツイートを下に載せておきます。) ①学習序盤:開始〜2週間 まず最初に学習開始〜2週間、ここは徹底的にPing-tだけをやり込んでください。他の教材は一切使わなくて構いません。 また、この期間の最終目標は、「Ping-tの問題を反射的に解けるようになること」です。 正直この期間が一番大切です。 なぜか? それは、よく言われるように、「基礎」が一番大切だからです。 スポーツでも、勉強でも変わりません。 何か大きな成果を上げるためには、必ず地盤がしっかりしている必要があります。 地盤グラグラの中途半端な状態で、難しいことをしようとしても必ず失敗します。 なので、まずは最初の2週間で徹底的に「基礎」を叩き込みます。 で、LPICの基礎を体得する際に一番手っ取り早いのがPing-tをやり込むことなのです。 理由は2つ。 前章で言った通り、解説記事が非常に丁寧かつ豊富であるため、問題を解き進めながら理解を深めていくことが可能。そのため、「インプット/アウトプット」バランスを理想に近い状態に保ちながら学習を進めることができる 掲載されている問題の網羅性が非常に高いため、試験で必要となる知識を全てカバーすることが可能 このように、基礎を固めるにはPing-tが一番効率がいいんです。 次に、このPing-tの使い方ですが、普通に「問題を解く→解説を読む」でも構わないのですが、、、 せっかくここまで素晴らしい教材なので、もう少し使いこなしてあげないとかわいそうです。 ということで、ここからは私が実際実践して効果的だった「Ping-tを使った学習法」について説明していきます。 全部で5STEPあります。 STEP1:学習単元の選定 まずは、取り組む単元を決めます。 Ping-tは単元ごとに問題が分かれているため、これを有効活用しましょう。 「全単元の問題をとりあえず一周解く」というやり方でも別に構いませんが、私自身それで学習が行き詰まったので、あまりおすすめはしません。 というのも、全体をまず一周するやり方だと、次から次へと知らない単語が出てくるため、ほとんど問題が解けずモチベーションが一気に低下してしまうからです。 理想としては「モチベーションに頼らない学習法」をすべきだとは思うのですが、残念ながら資格勉強というのはどんな学習法であってもある程度モチベーションの問題がつきまとってきます。 そのため、「モチベーション管理をすること」も試験突破には欠かせない要素であり、それを考えると「全体を先に一周する」というやり方は避けるべきだと私は考えます。 しかしこの辺りは非常に個人差があり、例えば 「同じ分野を何度も繰り返すのは単調作業だから飽きる!!」 という人の場合、ざっとまず一周する学習法の方がいいかもしれません。その辺は各自の判断に任せます。 STEP2:解説を流し読みしながら一周する 次に、選んだ分野を「解説を流し読みしながら」一周します。 ポイントは太字にもしましたが、「解説を読みながら」というところです。 いきなり何の知識もないまま問題にチャレンジしてもどーせ解けませんので、少し考えてわからなかったらすぐに解説記事を読みましょう。 目安としては5秒考えてわからなければ切り上げましょう。 これは、学習の時間効率を最大化させるためです。 Ping-tを使う目的はあくまで「基礎を身につけるため」であり、「実践を想定して問題を解くため」ではありません。 そのため、「いかに効率よく基礎を身につけることができるか?」だけを考えるべきであって、そのためには「問題を考える時間」など不要なのです。 この期間の最終的な目標は、「Ping-tの問題を反射的に解けるようになること」でしたね。 そのために不要な作業はどんどん省いていきましょう。 STEP3:解説を熟読しながら二周目を行う 問題を軽く一周したら、次は解説を熟読しながら二周目を解いていきましょう。 STEP2と同じに見えますが、ポイントは「解説を熟読すること」です。 STEP2は、あくまで全体像の把握に注力するため、解説はそこまで丁寧に読まなくていいのですが、このSTEPではじっくり読み内容の理解に努めましょう。 このステップを疎かにすると、ただの解答丸暗記になってしまいますので、本当の意味で「基礎を身につけるため」にはここを丁寧にこなす必要があります。 STEP4:理解できていな箇所を中心に三周目を行う さて、解説を熟読し、理解が深まったら次に間違ったり、理解がまだ不完全な箇所を中心に三周目を解いていきましょう。 ここで、是非使用して欲しいのがPing-tの「ミス/ヒット/コンボ」システムです。 具体的には、 直近に解いて間違えた問題=ミス 1度正解した問題=ヒット 2回連続で正解した問題=コンボ という感じに各問題が振り分けられるシステムのことです。 これが非常に便利で、 「ここまでのステップで『ミス/ヒット』になった問題=自分が理解できていない問題」 と考えることで、理解の浅い箇所を簡単に把握することができるのです。 これを利用しない手はありません。 理解が不完全な問題だけを徹底的に解いていきましょう。 ここでのコツは、ただ解いていくだけでなく、「解説でこんな内容が書いてあったな」と考えながら解いていくことです。 先ほども言いましたが、ただ反射的に解けるだけでは解答丸暗記と同じになってしまいます。 そのため、「自分がしっかり理解できているかどうか」の指標として「問題を見て解説の内容がすぐに思い浮かぶかどうか」を参考にしましょう。 パッと思い浮かぶようになるまで繰り返す。これがこのステップで一番大切です。 またこの段階で、「あまり理解できていない」と感じた問題があったら、その問題を解くのに必要だったポイントをメモアプリにまとめていくことをおすすめします。 私の場合、Notion4というアプリを使い、下のような感じでまとめていきました。 ここまでいくと、おそらくその分野の基礎知識はほぼ身につくことでしょう。 STEP5:「コマ問」で曖昧な知識を定着させる 最後に、仕上げとしてPing-tのもう一つの機能「コマ問」を利用しましょう。 今まで説明していませんでしたが、Ping-tには実は二種類の問題集があります。 一つ目が先ほどまで使用していた「WEB問題集」。 こちらは記号問題と解説がメインで、その分野で問われる内容の理解に重きを置いた問題集です。 そして二つ目が、今回使用する「コマ問」です。こちらは、本試験で問われる入力式問題を想定して作られた問題集で、主にコマンドやファイルのパスなどを打ち込んでいきます。 ここで、おそらくちょっとLPICを知っている人ならば 「入力式問題なんてたかが2-3割程度しか出ないし、そんなのに時間かけるぐらいなら記号問題を固めた方がいいんじゃね?」 と思われるかもしれません。 しかし残念ながらその認識は甘いです。 たしかに入力式問題の量は記号問題に比べて少ないですが、それでも「実際の試験でどのくらい出るのか?」はちゃんと明示されていないため、ある日いきなり入力問題がめっちゃ出題されるということも十分考えられるわけです。 そのため、あまり問題が出ないことを祈って運ゲーに持ち込むという戦法は正直悪手です。 実際、102試験などでは結構多めに入力式問題が出題されるという噂もあります。 ですが、コマ問をやるべき理由は実は他にあります。 それは、コマ問は「基礎知識の定着に最適だから」です。 正直STEP1~STEP4までこなせば、WEB問題集の大体の問題が瞬殺で解けるようになるはずです。 しかし、STEP4でも述べた通り、記号問題ということもあり、どうしても「解答丸暗記」に終わってしまう分野が存在してきます。 (一応、Ping-tでも解答丸暗記を防ぐため、「記号の順番を出題のたびにシャッフルする」という対応策が取られていますが、それでも解答丸暗記に終わってしまう可能性は否定できません。) 「理解したつもりになっているけれど、実は全然理解できていなかった。」 そういう問題が実は数多く存在しているのです。 (私自身、コマ問をやることで、そういった勘違いに気づかされたということが結構ありました。) そのような丸暗記防止策として、コマ問を解くのです。 こうすることで、仮に丸暗記で終わってしまった知識があったとしても、補完することができます。 イメージとしては以下のような感じです。 まとめ 以上5ステップを各単元ごとにこなせば、基礎知識はほぼ完全に定着します。 【注意】 ただし、やはり同じ単元を何度も繰り返していると、単調でつまらないと感じ、モチベーションが低下してしまう可能性はどうしても出てきてしまいます。 なので、私が紹介したこのやり方に縛られることなく、自身のモチベーションと相談しながら柔軟に対応していくことも重要です。 例えば、 似たような単元の場合は、一気にまとめてやってしまう どうしても理解できない分野があったら飛ばす など。 どんな相手に対しても、正面衝突だけで対応していては身が持ちません。 時には逃げたり、武器を変えたりしながら、柔軟に対応していくこともまた大切なのです。 ②学習中盤:2週間〜3週間 さて、では学習中盤期の話に移りましょう。 この期間では、主に「白本」を利用していきます。 白本はPing-tと違い、実際に試験で出る問題に即して作られているため、試験形式の問題に慣れることができます。 そして、この「試験形式の問題に慣れること」こそがこの期間の最終目標です まぁとはいっても、序盤の期間での学習をしっかりこなしていれば、この期間はだいぶ楽なはずです。 なぜなら白本で必要となる知識はほぼ全てPing-tで身についているからです。 なので、ここでの学習の進め方は、あまり詳しく説明しません。 シンプルに 「問題を解く→解説を読む→間違えた問題をもう一度解く→…」 の繰り返しで十分です。 一つだけ補足しておくと、ここで「まだ理解が浅い」と思った分野が出てきたら、その時はもう一度Ping-tに戻って復習しても構いません。 またこの辺からは、辞書がわりに「あずき本」も積極的に使用していきましょう。 ③学習終盤:3週間〜本番 さて、いよいよ学習終盤期に突入です。 この終盤では、「Ping-tの模擬試験」と「白本の模擬試験」、「あずき本の模擬試験」の3つをフル活用します。 まさに最終決戦ですね。 この期間では「今までの総復習」と「実際に時間を測って問題を解き、実戦形式に慣れる」という二つを目標にしてやっていきましょう。 ここまで来ればもはやゴール同然です。 しかし、この期間でもまだ理解できていない知識が出てくる可能性もあるので、気を抜かずその都度しっかりとPing-tや白本に戻り、復習を行っていきましょう。 ここまで、ちゃんとこなせれば、その証としておそらくPing-tのレベルがMAXになっていることでしょうから、ツイートしてドヤりましょう。 5. 細かいTips さて、ここまでLPICという暗記ゲーの攻略法をざっとお伝えしてきました。 正直ここで終わっても十分なのですが、実はもっと暗記量を減らせるテクニックが存在します。 「無駄な暗記をなくし、もっと楽したい」 「できるだけコスパよく受かりたい」 そんな方は、ぜひ次にご紹介するテクニックを活用してください。 きっとみなさんの暗記を手助けしてくれるはずです。 ①:オプションの由来を調べる まず最初にご紹介するのが、「オプションの由来を調べる」です。 私が一番おすすめしたいテクニックがこれです。 何度も言っているようにLPICでは、膨大な量のコマンドやオプションが出てきます。 例えば、パッケージ管理コマンドのdpkgの場合、ざっとあげるだけで次のようなオプションが存在します。 オプション 説明 -E すでに同バージョンがインストールされていればインストールしない -G すでに新バージョンがインストールされていればインストールしない -R ディレクトリ内を再起的に処理する アクション 説明 -i パッケージをインストールする -r 設定ファイルを残してパッケージをアンインストールする -P 設定ファイルも含めて完全にパッケージをアンインストールする -l インストール済みパッケージを検索して表示する -S 指定したファイルがどのパッケージからインストールされたかを表示する -L パッケージの情報を表示する -s パッケージの情報を表示する --configure 展開されたパッケージを構成する --unpack パッケージを展開する(インストールはしない) みなさんは、こんな大量の英字1文字をそのまま覚えることができますか?笑 少なくとも私はできません。 ですが、こういうオプションの細かな違いなどは結構問われたりします。 では、どうやってこれらを覚えればいいのでしょうか? ここで威力を発揮してくれるのが、「オプションの由来」です。 つまり、そのオプションが「どんな意味の英単語に由来しているのか?」を調べるのです。 これだけではイメージが掴みづらいので、上記の-Rオプションを例にして考えてみましょう。 まず上のような大量のオプションが出てきたらとりあえずググることが大切です。今回だとdpkgコマンドなので、 「dpkg オプション」 とかでググります。 すると、検索結果が大量に出てきますので、適当なサイトをクリックしましょう。 だいたいどのサイトでもオプションの由来は載っていますので、この辺はテキトーで大丈夫です。 ググったら、オプションの細かい説明が出てくるところまでスクロールして、知りたいオプションを探します。 今回だと、-Rは --recursiveの省略形 だということがわかります。 そして、recursiveの意味を知っている方はここで終わりですが、もし知らない人がいた場合もう一度意味を調べましょう。 するとrecursiveは 回帰的、帰納的、循環的 という意味があることがわかるので、オプションの説明が「ディレクトリ内を再帰的に処理する」となっているのにも納得がいきますね。 このように、正体不明の英字が出てきたらググったり、本で調べたりして、「その由来がなんなのか?」を調べる癖をつけることが大切です。 今回はオプションを例に出しましたが、コマンドやサブコマンド、アクションでも同様です。 こうすることで、かなり暗記量を減らすことが可能になります。 ②:似たものはまとめて覚える 次にご紹介するのが、「似たものはセットで覚える」です。 例えば、xinetdというスーパーサーバの設定ファイル。 この設定ファイルは、システム全体の設定を行える「/etc/xinetd.conf」ファイルとサービスごとの設定を行えるファイルがあります。 で、このサービスごとの設定を行えるファイルは全て「/etc/xinetd.d」ディレクトリ以下に含まれているんですよね。 つまり、xinetdはシステム全体とサービスごとに分けて設定を行っているということになります。 このように 「システム全体+部分」 という構造はLinuxの至る所で採用されています。 他にも、X.Org。 これはGUIを実現するためのX Window Systemなんですが、この設定ファイルも同様の形で実現されています。 全体の設定は「/etc/X11/xorg.conf」ファイルで行い、サービスごとに設定したい場合は「/etc/X11/xorg.d」ディレクトリ以下にある設定ファイルを使用します。 例えばキーボードレイアウトやモデルなどのキーボード関連の設定をしたい場合 /etc/X11/xorg.conf.d/00-keyboard.conf という設定ファイルが利用できます。 このように、似たようなファイルやコマンドはその構造を抽象化してまとめて覚えてあげると、非常に効率よく学習できます。 ③:VirtualBoxをインストールし、試し打ちをする 最後にご紹介するのが、まぁテクニックというよりは基本的なことですが、「VirtualBoxをインストールして、Linux環境を構築する」です。 (これは別にLinux環境を構築できるものなら何でもいいです。VirtualBox以外にも、AWSを利用してLinux環境を構築したりもできるそうです。お好きにどうぞ。) マインドセットの部分でもお伝えした通り、やはりコマンドを頭に叩き込むには実際に手を動かす他ありません。 そこで必要となってくるのが「Linux環境の構築」です。 MacOSなら、ターミナルやiTermを使えばある程度のコマンドを試し打ちできますが、yumやaptのパッケージ管理ツールなど、一部のコマンドはデフォルトでは実行するのが面倒です。 そこで、Macの方もそうでない方も、仮想ソフトウェアであるVirtualBoxをインストールして、自身のWindows/Mac上に仮想マシンで動作するLinux環境を構築することをおすすめします。 具体的なインストール方法などはググったらすぐに出てくるので、各々でググりましょう。 ちなみに私は、以下のようにCentOSとUbuntu両方を使いました。 (Red Hat系とDebian系で一部使用するコマンドが異なるから。) 6. 【番外編】Linux入門書 最後に番外編として、 「いきなりLPICの教材で学習するのは不安。もっと基本的なことを学んでからチャレンジしたい」 「Linuxについて全く触れたことがないから、もっと軽い教材で肩慣らししたい」 というような方のために、Linux超初心者向けの教材をいくつか紹介して終わりたいと思います。 LPICを受ける前にLinuxに触れてみたい方は是非参考にしてください。 【注意】 実は私もLinuxを触ったことが全くなかったため、最初は入門書的なものを1.2冊こなしました。 が、今振り返ってみると正直あまり必要なかったなあと感じます。 というのも、 内容が被っている部分が多い Ping-tの解説がかなり丁寧なので、初心者の方でも十分理解できる ため、いきなりLPIC対策をやってもほとんど問題ないんですよね。 そのため、 「一冊何かやってからでないと踏ん切りがつかない」 「ある程度時間的に余裕がある」 という方以外にはあまりこれらをやることはおすすめしません。 新しいLinuxの教科書 まず最初にご紹介するのが、「新しいLinuxの教科書」 Linuxの入門書としてはわりと有名な本で、これさえやっておけばLinuxの基本的なことはだいたいわかります。 入門書選びに迷ったら、こちらを選ぶと良いでしょう。 説明も結構丁寧めで、何より紙媒体の場合、紙質がめっちゃいい!! とりあえず持っておいて損はない一冊です。 【Udemy】もう怖くないLinuxコマンド。手を動かしながらLinuxコマンドラインを5日間で身に付けよう こちらは有名なベストセラー講師の方の講座。 ハンズオン形式でLinuxの基本的なコマンドが学べます。 ただ注意して欲しいのは、本当に基礎中の基礎のコマンドしか学べないということです。ややこしいファイルシステムのコマンドやシェルスクリプト、管理タスク系のコマンドなどは全く学べません。 レベル感としては「ls・cd・mkdir・touchなどの基本的なファイル操作やディレクトリ操作のコマンドを全く知らない人向け」といったところでしょうか。 ProgateやドットインストールなどでちょっとでもLinuxに触れたことがある人は前述の新しいLinuxの教科書でいいと思います。 1週間でLPICの基礎が学べる本 こちらは私自身、使用していませんが、入門書として結構評価が高めの本です。 LPIC対策と考えた場合はこちらが入門書としては最適かもしれません。 7. 最後に 本記事の内容がみなさんの参考になれば嬉しいです。 最後までご覧いただき、ありがとうございました。 https://ping-t.com/ ↩ 「締め切り効果」については次の記事を参考にしてください。https://president.jp/articles/-/24131?page=1 ↩ サンクコスト効果(サンクコストバイアス)とは、すでにお金や労力や時間を支払ってしまったという理由だけで損な取引に手を出し続けてしまう心理的傾向のこと。これを利用することで、逆に学習パフォーマンスを上げることが可能。 ↩ https://www.notion.so/ ↩
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Amazon Linux 2 AMI  OpenSSL1.1.1kソースからビルドしてインストールする

linux初心者の為、勉強の為にソースからビルドしてインストールしてみました。 参考記事 https://qiita.com/DQNEO/items/3613cc1d87c01121a9e2 https://qiita.com/knutpb1205/items/24326ff0e7b886354898 環境 Amazon Linux 2 AMI OpenSSL1.1.1k (最新バージョン確認 https://www.openssl.org/) /opt/openssl/ にopensslをインストールする 手順 コンパイルとビルドに必要なパッケージをインストール # yum install -y gcc make # yum install perl zlib-devel OpenSSLのソースをビルドしてインストール URLを指定してファイルをダウンロード # wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz 解凍して展開 # tar xvfz openssl-1.1.1k.tar.gz openssl-1.1.1kディレクトリに移動 # cd openssl-1.1.1k/ /opt/opensslディレクトリにインストール、シェアードライブラリとしてビルド、zlib使用 # ./config --prefix=/opt/openssl shared zlib ビルド # make インストール # make install ちゃんと出来たか、バージョン確認してみる # /opt/openssl/bin/openssl version エラーが出るw /opt/openssl/bin/openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory 対策 まず「libssl.so.1.1」があるか確認 find -name "libssl.so.1.1" ./home/ec2-user/openssl-1.1.1k/libssl.so.1.1 ./opt/openssl/lib/libssl.so.1 /opt/openssl/lib/にちゃんといてくれたので、以下を実行 echo "/opt/openssl/lib/" > /etc/ld.so.conf.d/lib64.conf ldconfig 今度こそ!バージョン確認 /opt/openssl/bin/openssl version OpenSSL 1.1.1k 25 Mar 2021 ♡できたみたい♡ libsslが/opt/openssl/lib/libssl.so.1.1にあるものとリンクしている libcryptが/opt/openssl/lib/libcrypto.so.1.1にあるものとリンクしている libzがリンクしていることを確認 ldd /opt/openssl/bin/openssl linux-vdso.so.1 (0x00007ffec31cb000) libssl.so.1.1 => /opt/openssl/lib/libssl.so.1.1 (0x00007f6f2f1c7000) libcrypto.so.1.1 => /opt/openssl/lib/libcrypto.so.1.1 (0x00007f6f2ece7000) libz.so.1 => /lib64/libz.so.1 (0x00007f6f2ead2000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f6f2e8ce000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f6f2e6b0000) libc.so.6 => /lib64/libc.so.6 (0x00007f6f2e305000) /lib64/ld-linux-x86-64.so.2 (0x00007f6f2f456000) できてるみたい
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ダブルクォーテーション「"」ではなくウムラウト「¨」が入力されてしまう時の対処

事象 想定しているダブルクォーテーション「"」ではなくウムラウト「¨」が入力される。 環境 OS: OracleLinux 6.7(VertualBox上の仮想マシン) キーボード: Keychron k2(v1) ※英字キーボード 発生状況 ターミナルで vi を使用してファイル編集を試みていた。 ダブルクォーテーションを入力しようとしたところ「"」ではなくウムラウト記号「¨」が入力された。 念のため、ターミナル外でテキストファイルを開いて入力してみたが同様の結果だった。 対処 キーボードのレイアウト設定が「デッドキー付き」になっていたので、別のレイアウトに変更した。 ※OS インストール時に自分で意図せず選択していたのかも。 対処手順 GUIで以下の対処を実施した。 画面上部バーにある「システム」を選択 「設定」を選択 「キーボード」を選択 「レイアウト」タブを選択 「追加」ボタンを選択 「国」で「アメリカ合衆国」を選択 「系列」で「英語(US)」を選択 雑記 デッドキーとやらが有効なレイアウトに設定していた事が原因で発生していたようです。 https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%83%E3%83%89%E3%82%AD%E3%83%BC
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

WSL2上のGUIで日本語入力を行う際の最低限の設定

前提条件 Windows10 Build:21364以降のWSL2でLinuxカーネルのアップデートが完了していること 設定コマンド sudo apt update sudo apt install -y fcitx-bin fcitx-mozc dbus-x11 language-pack-ja sudo update-locale LANG=ja_JP.UTF8 cat << EOS | sudo tee /etc/fonts/local.conf <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig><dir>/mnt/c/Windows/Fonts</dir></fontconfig> EOS cat << EOS >> ~/.profile export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx export DefaultIMModule=fcitx fcitx-autostart &> /dev/null EOS 日本語入力 GUIアプリを立ち上げてctrl+spaceで入力可能となります Windowsからの直接起動 Windowsが自動生成するショートカットだとbashは間に挟みませんが、これをやらないと日本語入力が出来ません wslg.exe ~ -d Ubuntu bash --login -c gedit
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

未経験エンジニアが覚えておきたい基本的なLinuxコマンド

はじめに エンジニアになる前に(なってからでも)業務をする上で知っておきたい最低限のLinuxコマンドについて紹介します。 覚えておきたいコマンド一覧はこちら pwd ls mv cp mv cd vi(vim) cat less mkdir rm rmdir 一つでもわからないコマンドがあれば確認してみて下さい。 ぜひ、Linuxのターミナルを開いて実践してみて下さい。 覚えておきたいコマンド一覧 pwd $ pwd /home/juno pwdは今のいるディレクトリの場所を表示します。 「ディレクトリ」って何? WindowsやMacでいう「フォルダ」と同じものだと思ってもらえば大丈夫です。 厳密にディレクトリは、「ハードディスクなどの記録メディア上のファイルの保存場所」を表します。 この単語はエンジニアでないとあまり聞き慣れない言葉ですが、普段から常に使う言葉なので覚えておきましょう! つまりpwdとは、windowsでいうと今開いているフォルダの場所を表示しているということです。 print working directoryの略 ls $ ls fileA.txt fileB.txt fileC.txt folderA 今いるディレクトリに存在するファイルを表示します。 lsコマンドは数あるコマンドの中でも最も多く使うコマンドかもしれません。 ちなみに各Linuxコマンドにはオプションというものが存在します。 例えばlsに-lというオプションを付与すると以下のようになります。 $ ls -l total 4 -rw-rw-r-- 1 juno juno 0 May 2 04:48 fileA.txt -rw-rw-r-- 1 juno juno 0 May 2 04:48 fileB.txt -rw-rw-r-- 1 juno juno 0 May 2 04:48 fileC.txt drwxrwxr-x 2 juno juno 4096 May 2 04:49 folderA 各ファイルの詳細が縦になって一覧で表示することができます。 また、オプションは複数付与することもでき、例えば上記のコマンドに-aも追加すると以下のようになる。 $ ls -al total 24 drwxr-xr-x 3 juno juno 4096 May 2 04:58 . drwxr-xr-x 1 root root 4096 May 2 04:27 .. -rw-r--r-- 1 juno juno 220 Apr 4 2018 .bash_logout -rw-r--r-- 1 juno juno 3771 Apr 4 2018 .bashrc -rw-rw-r-- 1 juno juno 0 May 2 04:48 fileA.txt -rw-rw-r-- 1 juno juno 0 May 2 04:48 fileB.txt -rw-rw-r-- 1 juno juno 0 May 2 04:48 fileC.txt drwxrwxr-x 2 juno juno 4096 May 2 04:49 folderA -rw-r--r-- 1 juno juno 807 Apr 4 2018 .profile -rw-rw-r-- 1 juno juno 0 May 2 04:58 .secret_file.txt -aは隠しファイルも含め全ファイルを表示するオプションです。 ファイルの1文字目が「.」のものが隠しファイルです。 lsコマンドでは-l や-aはよく使うオプションなので覚えておきましょう! list segmentsの略 cd $ cd folderA $ $ pwd /home/juno/folderA cdはディレクトリを移動するコマンドです。 WindowsやMacでフォルダをクリックしてフォルダを開くのと同じですね。 cd {移動したいディレクトリ}で移動できます。 また、便利なので以下の使い方も覚えておきましょう。 $ cd "cd"のみ実行した場合はhomeディレクトリへ移動する $ cd .. ".."をつけると一個前の階層に移動する $ cd - "-"をつけるとcdで移動する前にいたディレクトリへ戻る(1つ前の階層に移動するわけではない) またLinuxにはディレクトリの指定の仕方として「絶対パス」と「相対パス」というものがあります。 「絶対パス」 絶対パスとはルートディレクトリからのフルパスのことです。 ルートディレクトリとは、ディレクトリの中でも最も上部の根に当たる場所のことです。 ルートディレクトリは「/」で表します。 cd / でルートディレクトリに移動することができます。 そのルートディレクトリからの該当のファイル(orディレクトリ)までのパスが絶対パスとなります。 例えば、今いる場所の絶対パスはpwdコマンドで表示することができます。 /home/juno/folderA これはルートディレクトリ(/)の中のhomeディレクトリの中のjunoディレクトリの中のfolderAディレクトリを表しています。 「相対パス」 絶対パスは「ルートディレクトリ」を起点としたパスの指定でした。 一方で、相対パスは「今いるディレクトリ」を起点としたパスの指定です。 例えば、今いる場所からディレクトリを指定する場合 folderA/fileD.txt or ./folderA/fileD.txt これは今いるディレクトリのfolderAディレクトリ内のfileD.txtを示しています。 ちなみに「./」は現在のディレクトリを意味します。これは省略可能です。 絶対パスと相対パスでcdコマンドを使ってfolderAに移動する場合は以下のようになります。 絶対パス $ cd /home/juno/folderA 相対パス $ cd folderA 絶対パスと相対パスの使い分けは、基本的に楽な方で大丈夫です。 もし、どの場所でも使えるようにするなら絶対パスを使いますし、今いる場所からそこにあるディレクトリにただ移動するだけなら相対パスが楽です。 change directoryの略 cat $ cat fileD.txt Hello fileD!! ファイルDの中身です。 catファイルの中身を表示するコマンドです。 catは「キャット」と呼びます。猫ですね。 cat {ファイル名}で使います。 less $ less fileD.txt Hello fileD!! ファイルDの中身です。 あ い う え お カ キ ク ケ コ さ し す せ そ fileD.txt (END) lessコマンドもcat同様ファイルの中身を出力するコマンドです。 less {ファイル名}で使います。 違いはcatコマンドは中身をコマンドライン上にバーーーっと表示しますが、 lessコマンドはファイルの頭から表示し、上下カーソルで中身の表示を操作することができます。 ファイルの行数が多い場合はlessコマンドで中身を表示します。 言葉だけでは難しいので実際やってみて下さい(あきらめ)。 lessコマンドを終了するときはqを押すと元のコマンドラインに戻ります。 lessのようなコマンドでmoreコマンドもあります。 一度試しに使ってみて下さい。 mkdir $ mkdir folderB mkdirはディレクトリを作成するコマンドです。 私は「メイクディーアイアール」と言っています。 make directoryの略 mv $ mv fileC.txt folderA mvはファイルを移動させるコマンドです。 mv {移動元(ファイル名)} {移動先(ディレクトリ)}で指定します。 また、ファイル名を変更したい場合にも使います。 $ mv fileC.txt fileCCC.txt こうすると、fileC.txtファイルがfileCCC.txtに名前が変わります。 mv {変更前} {変更後}とおぼえましょう! moveの略 cp $ cp fileC.txt folderA ファイルをコピーするコマンドです。 mvコマンドと同様で、 cp {移動元} {移動先}とおぼえましょう! copyの略 vi(vim) $ vi fileA.txt viはファイルを編集するコマンドです。 LINUXではコマンドを使ってファイルを操作します。そのファイル編集で代表的なコマンドがviです。 viはこれだけで1つの記事がかけるくらい奥が深いのでここでは省略します(さぼり)。 viは絶対使うコマンドなのでぜひ勉強をしてみてください。 ちなみにviからぬけだすには escをおして:qで抜け出せます。 1箇所でも編集して保存する場合は:wqで保存して抜け出せます。 編集はしたけど保存はしたくない場合は:q!で保存せず抜け出せます。 rm $ rm fileA.txt rmはファイルを削除するコマンドです。 消してしますともう元には戻せないので注意しましょう! rmdir $ rmdir folderB rmdirはディレクトリを削除するコマンドです。 このコマンドを使う場合はディレクトリの中身が空である必要があります。 もしも中身がはいったディレクトリを削除する場合はrm -rf {ディレクトリ名}を使います。 ちなみに-rは再帰的にという意味でディレクトリ内のものも削除するという意味で、-fは確認をせず強制的に削除するという意味です。 絶対知っておきたい豆知識 矢印キー上下(過去のコマンドを表示する) ターミナルで上下キーを押すと過去に実行したコマンドを表示することができます。 何度もタイピングをするのは効率が悪いので同じコマンドを使う場合は上下キーを使いましょう。 タブキー(コマンドの補完機能) コマンドを入力するとき、コマンドやパスを途中まで入力した状態でタブキーを押すと入力を自動的に補完してくれます。 例えば、forlderAを指定するとき、foと入力してタブキーを押すとfolderAとなります(他にfoに当てはまるフォルダやディレクトリがなければ)。 すべてタイピングするのも時間の無駄なのでこちらも積極的に使用しましょう! ctrl + a カーソルを先頭に移動します。 カーソルを先頭に移動させるとき、いちいち左右の矢印キーで戻るのは時間がかかる場合があります。 そんなとき、一発で移動させたいときに使います。 ctrl + e ctrl + aとは逆にカーソルを最後に移動する方法です。 これも一緒に覚えましょう! おわりに Linuxコマンドはたくさんありますが、その中でも今回紹介したコマンドを知っていればとりあえずLinux使えます!といっても問題ないかと思います。しかし、普段から使っていないと忘れてしますものなのでぜひ毎日使っていきましょう!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

覚えておきたい最も基本的なLinuxコマンド

はじめに こんにちはJUNOです。 私の周りには未経験でエンジニアになったメンバーが勢揃いで、エンジニアの経験を教えられるのが私しかいないため今後の勉強会のためのアウトプットをしようと思います。 今回は題材は「Linuxコマンド」についてということで、 エンジニアになる前に(なってからでも)業務をする上で知っておきたい最低限のLinuxコマンドについて紹介します。 覚えておきたいコマンド一覧はこちら pwd ls mv cp mv cd vi(vim) cat less mkdir rm rmdir 一つでもわからないコマンドがあればターミナルを開いて確認してみてみましょう! 覚えておきたいコマンド一覧 pwd $ pwd /home/juno pwdは今のいるディレクトリの場所を表示します。 「ディレクトリ」って何? WindowsやMacでいう「フォルダ」と同じものだと思ってもらえば大丈夫です。 厳密にディレクトリは、「ハードディスクなどの記録メディア上のファイルの保存場所」を表します。 この単語はエンジニアでないとあまり聞き慣れない言葉ですが、普段から常に使う言葉なので覚えておきましょう! つまりpwdとは、windowsでいうと今開いているフォルダの場所を表示しているということです。 print working directoryの略 ls $ ls fileA.txt fileB.txt fileC.txt folderA 今いるディレクトリに存在するファイルを表示します。 lsコマンドは数あるコマンドの中でも最も多く使うコマンドかもしれません。 ちなみに各Linuxコマンドにはオプションというものが存在します。 例えばlsに-lというオプションを付与すると以下のようになります。 $ ls -l total 4 -rw-rw-r-- 1 juno juno 0 May 2 04:48 fileA.txt -rw-rw-r-- 1 juno juno 0 May 2 04:48 fileB.txt -rw-rw-r-- 1 juno juno 0 May 2 04:48 fileC.txt drwxrwxr-x 2 juno juno 4096 May 2 04:49 folderA 各ファイルの詳細が縦になって一覧で表示することができます。 また、オプションは複数付与することもでき、例えば上記のコマンドに-aも追加すると以下のようになる。 $ ls -al total 24 drwxr-xr-x 3 juno juno 4096 May 2 04:58 . drwxr-xr-x 1 root root 4096 May 2 04:27 .. -rw-r--r-- 1 juno juno 220 Apr 4 2018 .bash_logout -rw-r--r-- 1 juno juno 3771 Apr 4 2018 .bashrc -rw-rw-r-- 1 juno juno 0 May 2 04:48 fileA.txt -rw-rw-r-- 1 juno juno 0 May 2 04:48 fileB.txt -rw-rw-r-- 1 juno juno 0 May 2 04:48 fileC.txt drwxrwxr-x 2 juno juno 4096 May 2 04:49 folderA -rw-r--r-- 1 juno juno 807 Apr 4 2018 .profile -rw-rw-r-- 1 juno juno 0 May 2 04:58 .secret_file.txt -aは隠しファイルも含め全ファイルを表示するオプションです。 ファイルの1文字目が「.」のものが隠しファイルです。 lsコマンドでは-l や-aはよく使うオプションなので覚えておきましょう! list segmentsの略 cd $ cd folderA $ $ pwd /home/juno/folderA cdはディレクトリを移動するコマンドです。 WindowsやMacでフォルダをクリックしてフォルダを開くのと同じですね。 cd {移動したいディレクトリ}で移動できます。 また、便利なので以下の使い方も覚えておきましょう。 $ cd "cd"のみ実行した場合はhomeディレクトリへ移動する $ cd .. ".."をつけると一個前の階層に移動する $ cd - "-"をつけるとcdで移動する前にいたディレクトリへ戻る(1つ前の階層に移動するわけではない) またLinuxにはディレクトリの指定の仕方として「絶対パス」と「相対パス」というものがあります。 「絶対パス」 絶対パスとはルートディレクトリからのフルパスのことです。 ルートディレクトリとは、ディレクトリの中でも最も上部の根に当たる場所のことです。 ルートディレクトリは「/」で表します。 cd / でルートディレクトリに移動することができます。 そのルートディレクトリからの該当のファイル(orディレクトリ)までのパスが絶対パスとなります。 例えば、今いる場所の絶対パスはpwdコマンドで表示することができます。 /home/juno/folderA これはルートディレクトリ(/)の中のhomeディレクトリの中のjunoディレクトリの中のfolderAディレクトリを表しています。 「相対パス」 絶対パスは「ルートディレクトリ」を起点としたパスの指定でした。 一方で、相対パスは「今いるディレクトリ」を起点としたパスの指定です。 例えば、今いる場所からディレクトリを指定する場合 folderA/fileD.txt or ./folderA/fileD.txt これは今いるディレクトリのfolderAディレクトリ内のfileD.txtを示しています。 ちなみに「./」は現在のディレクトリを意味します。これは省略可能です。 絶対パスと相対パスでcdコマンドを使ってfolderAに移動する場合は以下のようになります。 絶対パス $ cd /home/juno/folderA 相対パス $ cd folderA 絶対パスと相対パスの使い分けは、基本的に楽な方で大丈夫です。 もし、どの場所でも使えるようにするなら絶対パスを使いますし、今いる場所からそこにあるディレクトリにただ移動するだけなら相対パスが楽です。 change directoryの略 cat $ cat fileD.txt Hello fileD!! ファイルDの中身です。 catファイルの中身を表示するコマンドです。 catは「キャット」と呼びます。猫ですね。 cat {ファイル名}で使います。 less $ less fileD.txt Hello fileD!! ファイルDの中身です。 あ い う え お カ キ ク ケ コ さ し す せ そ fileD.txt (END) lessコマンドもcat同様ファイルの中身を出力するコマンドです。 less {ファイル名}で使います。 違いはcatコマンドは中身をコマンドライン上にバーーーっと表示しますが、 lessコマンドはファイルの頭から表示し、上下カーソルで中身の表示を操作することができます。 ファイルの行数が多い場合はlessコマンドで中身を表示します。 言葉だけでは難しいので実際やってみて下さい(あきらめ)。 lessコマンドを終了するときはqを押すと元のコマンドラインに戻ります。 lessのようなコマンドでmoreコマンドもあります。 一度試しに使ってみて下さい。 mkdir $ mkdir folderB mkdirはディレクトリを作成するコマンドです。 私は「メイクディーアイアール」と言っています。 make directoryの略 mv $ mv fileC.txt folderA mvはファイルを移動させるコマンドです。 mv {移動元(ファイル名)} {移動先(ディレクトリ)}で指定します。 また、ファイル名を変更したい場合にも使います。 $ mv fileC.txt fileCCC.txt こうすると、fileC.txtファイルがfileCCC.txtに名前が変わります。 mv {変更前} {変更後}とおぼえましょう! moveの略 cp $ cp fileC.txt folderA ファイルをコピーするコマンドです。 mvコマンドと同様で、 cp {移動元} {移動先}とおぼえましょう! copyの略 vi(vim) $ vi fileA.txt viはファイルを編集するコマンドです。 LINUXではコマンドを使ってファイルを操作します。そのファイル編集で代表的なコマンドがviです。 viはこれだけで1つの記事がかけるくらい奥が深いのでここでは省略します(さぼり)。 viは絶対使うコマンドなのでぜひ勉強をしてみてください。 ちなみにviからぬけだすには escをおして:qで抜け出せます。 1箇所でも編集して保存する場合は:wqで保存して抜け出せます。 編集はしたけど保存はしたくない場合は:q!で保存せず抜け出せます。 rm $ rm fileA.txt rmはファイルを削除するコマンドです。 消してしまうともう元には戻せないので注意しましょう! (このコマンドでこれまで何人のエンジニアが冷や汗をかいてきたのか。むしろはじめは覚えないほうがいいコマンドなのかもしれない...) removeの略です。 rmdir $ rmdir folderB rmdirはディレクトリを削除するコマンドです。 このコマンドを使う場合はディレクトリの中身が空である必要があります。 もしも中身がはいったディレクトリを削除する場合はrm -rf {ディレクトリ名}を使います。 ちなみに-rは再帰的にという意味でディレクトリ内のものも削除するという意味で、-fは確認をせず強制的に削除するという意味です。 絶対知っておきたい豆知識 矢印キー上下(過去のコマンドを表示する) ターミナルで上下キーを押すと過去に実行したコマンドを表示することができます。 何度もタイピングをするのは効率が悪いので同じコマンドを使う場合は上下キーを使いましょう。 タブキー(コマンドの補完機能) コマンドを入力するとき、コマンドやパスを途中まで入力した状態でタブキーを押すと入力を自動的に補完してくれます。 例えば、forlderAを指定するとき、foと入力してタブキーを押すとfolderAとなります(他にfoに当てはまるフォルダやディレクトリがなければ)。 すべてタイピングするのも時間の無駄なのでこちらも積極的に使用しましょう! ctrl + a カーソルを先頭に移動します。 カーソルを先頭に移動させるとき、いちいち左右の矢印キーで戻るのは時間がかかる場合があります。 そんなとき、一発で移動させたいときに使います。 ctrl + e ctrl + aとは逆にカーソルを最後に移動する方法です。 これも一緒に覚えましょう! おわりに Linuxコマンドはたくさんありますが、その中でも今回紹介したコマンドを知っていればとりあえずLinux使えます!といっても問題ないかと思います。しかし、普段から使っていないと忘れてしまうものなのでぜひ毎日使っていきましょう! 次は「知って得する!便利なLinuxコマンド」みたいな記事をかければいいなと思います。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Debianでdoom-emacsを使う

準備  doom-emacsを導入するためにはバージョン26.3以上のバニラemacsが必要です。しかしながら、debianでaptを使ってemacsを導入すると、標準ではバージョン26.1のものがインストールされます。そのため、ここでは最新版のemacsをビルドします。(2021/5/1現在) 必要なパッケージのインストール sudo apt install git gcc make ncurses-dev xorg-dev libjpeg-dev libgif-dev libtiff-dev gnutls-dev emacs本体のダウンロード  jaist から、最新版のtar.gzファイルをダウンロードします ビルド  もし既にosパッケージでemacsをインストールしている場合は、念の為削除しておきます sudo apt remove emacs emacs-gtk emacs-lucid emacs-nox sudo apt autoremove  先ほど落としてきたファイルがあるディレクトリに移動した後に、 tar xvf emacs-27.2.tar.gz cd emacs-27.2 ./configure sudo make sudo make install emacsのバージョンは、ダウンロードしたものに合わせて適宜読み替えてください doom-emacsの導入  もしホームディレクトリ直下に.emacs.dがある場合は、事前に名前を変更しておいてください。 その後、 git clone --depth 1 https://github.com/hlissner/doom-emacs ~/.emacs.d ~/.emacs.d/bin/doom install .profile に export PATH=$PATH:~/.emacs.d/bin を追記してください。 その後、 source .profile をするか、再起動をして.profileを再読込みします。 doomコマンドが利用可能になっているはずです。 とりあえずバイトコンパイルしておきます。 doom install doom build その後guiでemacsを起動すると、doom-emacsのホーム画面が表示されるはずです。 参考資料 emacsをソースコードからビルドしてインストールする doom-emacs(GitHub)
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

CentOS 5.xでLet's Encrypt

CentOS5.x/Apache 2.2.19のSSL/TLS証明書の有効期限切れに対応することになったのでメモとして残しておくことにしました。 方式 証明書はcertbotを使って取得 認証局はLet's Encrypt 証明書はCentOS5.xとは別のホストのcertbotで証明書をDNS認証で発行 動作確認環境 今回対応するCentOS5.xのサーバは本番環境しかないため、まずは動作を確認するため検証環境の構築から始めます。 検証環境はKVMゲストとして以下の緒元で作成しました。 CentOS 5.5を選択した理由は手持ちのCentOS 5系のisoがCentOS 5.5だけだったので特に意味はありません。 # ホストOS CentOS 8 Stream IP 192.168.1.55/24 メモリ 512 MB OS CentOS 5.5 httpd Apache 2.2.19 (ソースからインストール) openssl 1.0.12u (ソースからインストール) CentOS5.5のインストール cent55.cfgを以下の内容で作成 install cdrom text skipx reboot keyboard jp106 timezone Asia/Tokyo key --skip lang en_US.UTF-8 network --device eth0 --bootproto static --ip 192.168.1.55 --netmask 255.255.255.0 --gateway 192.168.1.1 --nameserver 192.168.1.1 rootpw --iscrypted $6$JNY9rzBjiwK4HgJQ$A3Nac/jusuRE0q1RYK1ZNq.LVz4k0w8t6TGmDM55yxGkPHP64m466BrPlHBKuHr4feIlTYu0Wb4q0jqnBQbu1 firewall --disabled selinux --disabled authconfig --enableshadow --passalgo=sha512 zerombr yes bootloader --location=mbr --driveorder=vda --append="console=ttyS0,115200n8" clearpart --all --initlabel autopart %packages --nobase インストール開始 virt-install \ --name cent55 \ --initrd-inject cent55.cfg \ --hvm \ --virt-type kvm \ --ram 512 \ --vcpus 1 \ --arch x86_64 \ --cpu kvm64 \ --os-type linux \ --os-variant rhel5.5 \ --graphics none \ --disk=/var/lib/libvirt/images/cent55.img,format=qcow2,size=8,bus=virtio,cache=none \ --location /export/isos/CentOS-5.5-x86_64-bin-DVD-1of2.iso \ --network bridge=br0 \ --extra-args "edd=off console=tty0 console=ttyS0,115200n8 ks=file:/cent55.cfg" \ --serial pty インストール完了 GNU GRUB version 0.97 (639K lower / 523104K upper memory) +-------------------------------------------------------------------------+ | CentOS (2.6.18-194.el5) | | | | | | | | | | | | | | | | | | | | | | | +-------------------------------------------------------------------------+ Use the ^ and v keys to select which entry is highlighted. Press enter to boot the selected OS, 'e' to edit the commands before booting, 'a' to modify the kernel arguments before booting, or 'c' for a command-line. The highlighted entry will be booted automatically in 1 seconds. ログイン /boot: clean, 35/26104 files, 15947/104388 blocks [ OK ] Remounting root filesystem in read-write mode: [ OK ] Mounting local filesystems: [ OK ] Enabling /etc/fstab swaps: [ OK ] INIT: Entering runlevel: 3 Entering non-interactive startup Checking for hardware changes [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface eth0: [ OK ] Starting system logger: [ OK ] Starting kernel logger: [ OK ] Starting system message bus: [ OK ] Mounting other filesystems: [ OK ] Starting HAL daemon: [ OK ] Starting sshd: [ OK ] CentOS release 5.5 (Final) Kernel 2.6.18-194.el5 on an x86_64 localhost.localdomain login: root Password: Last login: Tue Apr 27 07:31:02 on ttyS0 [root@localhost ~]# yumリポジトリを変更 CentOS5 は 2017/03/31 にサポートが切れているのでyumのリポジトリを変更します。 # sed -i \ -e 's/^mirrorlist=/#mirrorlist=/' \ -e 's/^#baseurl=/baseurl=/' \ -e 's/mirror.centos.org\/centos/archive.kernel.org\/centos-vault/' \ -e 's/\$releasever/5.5/g' \ /etc/yum.repos.d/CentOS-Base.repo httpdとopensslのコンパイルに必要なパッケージをインストールします。 # yum -y install curl gcc gnutls-devel make openssl-devel pcre pcre-devel wget zlib-devel httpdインストール Apache httpd 2.2.19のソースダウンロード → コンパイル → インストール # curl -k -O https://archive.apache.org/dist/httpd/httpd-2.2.19.tar.gz # tar xzvf httpd-2.2.19.tar.gz -C /usr/local/src/ # cd /usr/local/src/httpd-2.2.19 # ./configure --enable-mods-shared="all ssl" --with-included-apr # make # make install httpdの起動と確認 # /usr/local/apache2/bin/apachectl start 今回は証明書の検証なので検証用のドメインを取得してhttps://(ドメイン名)/で正常にアクセス出来る事を確認する必要があります。 また証明書は上で構築したCentOS5.5とは別のホストのcertbotでDNS認証により発行するのでDNSサーバも必要となります。 今回は以下の2つフリーサービスを使うことにしました。 - ドメイン取得 → freenom - DNSサーバ → serverspace ドメイン取得 例としてドメインはcerts-test.tkを取得します。 freenomのサイトにアクセスしてドメインの利用状況を確認します。 「certs-test.tk」を選択します。 しかし「今すぐ入手」をクリックすると×利用不可の表示に変わってしまいます。 ドメインの利用状況の確認を「certs-test.tk」で行うと 利用可能となるので、「チェックアウト」をクリックして先にすすみます。 デフォルトでは「3 Months@FREE」が選択されていますが、無料なので「12 Months@FREE」を選択しました。 ※「12 Months@FREE」なのに「1 Year @ USD 9.95」な理由は分かりません。 「Continue」をクリックして先に進みます。 Review & Checkout画面が表示されるのでメールアドレスを登録します。 「Verify My Email Address」をクリックすると確認メールが届くので、メール内のリンクをクリックします。 Your Detailsを埋め、利用規約をチェックして「Complete Order」をクリックします。 Order Confirmation画面が表示されるので「Click here to go to your Client Area」をクリックします。 name server登録 ログイン画面が表示されたら、登録したメールアドレスとパスワードでログインします。 ログインしたら、「Service」→「My Domains」を選択します。 certs-test.tkの「Manage Domain」をクリックします。 「Management Tools」→「Nameservers」を選択します。 Use custom nameserversを選択します。 freenomの画面はこのままにしておき、別のブラウザやタブなどからserverspaceのサイトにアクセスします。 メールアドレスを登録してアカウントを作成します。 確認メールが届くのでメール内の「CONFIRM」をクリックします。 パスワードが書かれたメールが届きます。 serverspaceのサイトにアクセスして登録したメールアドレスと、↑のメールで届いたパスワードでログインします。 「DNS」をクリックします。 「ADD DOMAIN」をクリックします。 freenomで取得したドメイン「certs-test.tk」を入力して「ADD DOMAIN」をクリックします。 2つのNSレコードのname serverをCopyして、freenomのnameserver1とnameserver2に登録します。 freenomのnameserver1とnameserver2に登録が完了したら「Change Nameservers」をクリックします。 以上でfreenomでの作業は終了です。 serverspaceの画面で「CREATE RECORD」をクリックします。 Domain nameに@、IP addressにグローバルIP、TTLを適当に設定して「CREATE RECORD」をクリックします。 グローバルIPはifconfig.ioやipconfig.ioなどにアクセスすると確認できます。 レコードが追加され「certs-test.tk」ドメインで検証用CentOS5.xにアクセスできるようになります。 今回の検証環境ではインターネットからのリクエストがホストOS(CentOS 8 Stream)に着信するので、着信したhttp(tcp:80)とhttps(tcp:443)の通信をCentOS5.5へポートフォワードするように設定します。 # firewall-cmd --zone=external --add-forward-siamsport=port=80:proto=tcp:toport=80:toaddr=192.168.1.55 # firewall-cmd --zone=external --add-forward-port=port=443:proto=tcp:toport=443:toaddr=192.168.1.55 ドメイン(certs-test.tk)でアクセスできるようになりました。 証明書作成 ここまでで検証環境の構築が完了したので、いよいよ証明書を作成します。 証明書はホストOS(CentOS 8 Stream)のcertbotを使用してDNS認証で作成します。 # certbot certonly \ --manual \ --domain certs-test.tk \ --email certs-test@XXXXXXXX.xxx \ --agree-tos \ --preferred-challenges dns-01 \ --server https://acme-v02.api.letsencrypt.org/directory Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator manual, Installer None Requesting a certificate for certs-test.tk Performing the following challenges: dns-01 challenge for certs-test.tk - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please deploy a DNS TXT record under the name _acme-challenge.certs-test.tk with the following value: VLdtOLi2Rmy9JbuZCeAbB1yYE4h-xm8MqgXwl042a_U Before continuing, verify the record is deployed. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Press Enter to Continue 注意 ここではまだEnterを押下しないでください。 serverspaceのDomainに↑で表示されたTXTレコードを追加します。 TXTレコードが登録されたことを確認してから、certbot画面でEnterを押下します。 # dig +short _acme-challenge.certs-test.tk txt "VLdtOLi2Rmy9JbuZCeAbB1yYE4h-xm8MqgXwl042a_U" Press Enter to Continue (Enter) Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/certs-test.tk/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/certs-test.tk/privkey.pem Your certificate will expire on 2021-07-29. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le /etc/letsencrypt/archive/certs-test.tkに証明書が作成されるのでCentOS5.5に転送します。 # pwd /etc/letsencrypt/archive/certs-test.tk # scp fullchain1.pem privkey1.pem 192.168.1.55:/usr/local/apache2/conf/ Warning: Permanently added '192.168.1.55' (RSA) to the list of known hosts. root@192.168.1.55's password: fullchain1.pem 100% 3424 3.8MB/s 00:00 privkey1.pem 100% 1704 2.3MB/s 00:00 CentOS5.5にログインしてapacheの設定を変更します。 # cd /usr/local/apache2/conf # vi httpd.conf Include conf/extra/httpd-ssl.conf ← コメントアウトを削除 # vi extra/httpd-ssl.conf (下記2箇所を以下のように変更) SSLCertificateFile "/usr/local/apache2/conf/fullchain1.pem" SSLCertificateKeyFile "/usr/local/apache2/conf/privkey1.pem" Apacheを再起動してアクセスしてみます。 /usr/local/apache2/bin/apachectl restart エラーです。 詳細情報を見てみましょう。 「サーバーはTLS1.2以降を使用する必要があります。」 証明書は有効ですが、サーバー(Apache)がTLS1.2に対応していないためエラーとなります。 TLS1.2対応 それでは、CentOS5.5のApacheをTLS1.2に対応しましょう。 以下はCentOS5.5での作業です。 # curl -k -O https://ftp.openssl.org/source/old/1.0.2/openssl-1.0.2u.tar.gz # tar xzvf openssl-1.0.2u.tar.gz -C /usr/local/src/ # cd /usr/local/src/openssl-1.0.2u/ # ./config shared enable-ssl2 enable-ssl3 enable-md2 --prefix=/usr/local/openssl-1.0.2u # make # make install # cd /usr/local/openssl-1.0.2u/lib/ # ln -s libssl.so.1.0.0 libssl.so.6 # ln -s libcrypto.so.1.0.0 libcrypto.so.6 # cd /usr/local/apache2/bin # cp -a envvars envvars_bak # vi envvars LD_LIBRARY_PATH="/usr/local/apache2/lib:$LD_LIBRARY_PATH" ↓変更 LD_LIBRARY_PATH="/usr/local/openssl-1.0.2u/lib:/usr/local/apache2/lib:$LD_LIBRARY_PATH" Apacheを再起動してアクセスしてみます。 /usr/local/apache2/bin/apachectl restart 今度は正常にアクセス出来ました。 まとめ 今回は検証環境を構築するためドメインの取得から行ったので手順が多かったですが、実環境ではcertbotで証明書をDNS認証で作成し、CentOS5.xにはTLS1.2に対応したopensslをインストールすれば良いことが分かりました。 Let's Encryptでは証明書の更新を3ヶ月以内に行う必要がありますが、更新はAnsibleなどを使えば簡単に行えるかと思います。 証明書の更新作業についてはまた別の機会に書こうと思います。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

fanotifyによる削除検出について調べてみた

概要 元々fanotify(ファイルシステムイベントの監視)で削除ができなかった。 Linux 5.1より削除が検出できるようになった。 具体的な実装方法を探してみた。 結果 dmacvicar/fanotify_example: Example of fanotify API including the new FAN_DELETE in kernel 5.1を参考に削除を検出できる そのままだと再帰的な検出ができないのでファイルシステム単位での監視に変更するにはfanotify_markの引数にFAN_MARK_FILESYSTEMを加えてマウントポイント/等を指定する。 --- fanotify_example.c.org 2021-05-01 20:55:37.356846871 +0000 +++ fanotify_example.c 2021-05-01 20:57:37.118257631 +0000 @@ -40,7 +40,7 @@ } int ret = fanotify_mark(fan, - FAN_MARK_ADD, + FAN_MARK_ADD | FAN_MARK_FILESYSTEM, FAN_CREATE | FAN_DELETE | FAN_MODIFY | FAN_EVENT_ON_CHILD, AT_FDCWD, argv[1] rm /tmp/a/a.txtを実行したときの出力は以下となる。 $ gcc -Wall fanotify_example.c $ sudo ./a.out / FAN_DELETE/tmp/a fanotify(7) - Linux manual page下部にfanotify_fid.cがあるが、FAN_REPORT_DFID_NAMEがLinux 5.9 以降でないと動かない。(現在最新ubuntu 21.04はLinux 5.8.0だったのでここまで) fanotify(7)めも - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ ファイルを監視して、将来どのプロセスがファイルを書き込みまたは削除するかを確認する方法 - Javaer101 fanotify(7) - Linux manual page Man page of FANOTIFY_INIT dmacvicar/fanotify_example: Example of fanotify API including the new FAN_DELETE in kernel 5.1 c ++-fanotify-カーネル5.1で導入された新しいフラグの問題-スタックオーバーフロー
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む