20210418のLinuxに関する記事は10件です。

modprobed-dbによるLinuxカーネルモジュールのコンパイル・起動時間の改善

私の環境では起動時のinitramfsのロードが20秒程度かかっていましたが、改善できたのでメモです。 一部のLinuxディストリビューションでは、カーネルのバージョンが古く、Intelのwifiドライバが動作しないといったことに悩まされることが有ります。 こういった場合は自分でLinuxカーネルをコンパイルすることで解決できますが、個人的にかなり難しいと感じたので、メモしておきます。 なお、本文のSystemdに関する部分は以下ページのSystemd項目を参照しています。 https://wiki.archlinux.org/index.php/Modprobed-db#Usage 必要なモジュールはなにか 新しいカーネルをコンパイルする上で大切なのが、カーネルモジュールの取捨選択です。 現在ロードされているカーネルモジュールのみをコンパイルする場合は、 make localmodconfig でカーネルをコンパイルできますが、残念ながら、コマンド実行時にロードされていないカーネルモジュールは組み込まれないため、例えばxfsのサポートが欲しくてもext4で起動している場合は、モジュールを読み込む機会がなかったために、xfsをマウントできないカーネルが出来上がってしまうこともあります。 つまり、localmodconfigで欲しいモジュール全部入りの実用的で最小のカーネルを作成したいときは、すべてのモジュールを一度ロードした状態でコマンドを実行する必要があるわけです。 これを簡単に行うにはmodprobed-dbを使用します。 modprobed-dbを使ってみる modprobed-dbはシステムがロードするモジュールを記録しておいてくれます。 カーネルコンパイルの直前に一気にモジュールを読み込むことで、localmodconfig実行時にモジュールが追加されるわけです。 git clone https://github.com/graysky2/modprobed-db && cd modprobed-db && make インストールはmake installです。 modprobed-db store コマンドで現在ロードされているモジュールを保存できますが、付属のsystemdのサービスを有効化するほうがいいでしょう。 systemctl --user enable --now modprobed-db.service これでサービスを有効化できます。Linuxの起動時、シャットダウン時、それから一時間ごとに自動的に記録してくれます。便利です。 カーネルのコンパイル modprobed-db recall で今までデータベースに構築されてきたモジュールを読み込みます。その後 make localmodconfig とすることで、無事必要なカーネルモジュールをコンパイルできます。 起動時間 Debian10公式カーネル(4.19.0-14-amd64)の.configをコピーして作成した5.11.13のカーネルでinitramfsのロードが20秒以上だったのに対し、3秒程度にまで改善されました。嬉しいです。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linuxでもlatexindentを使いたい

LaTeXのフォーマッタであるlatexindentですが,Linuxのインストール方法だけ何故か全然情報がありません.ですがインストール方法はどこよりも一番簡単でした. 結論 Ubuntuの場合は以下 $ sudo apt install texlive-extra-utils これで入ります.VSCodeのCtrl + Shift + I のフォーマットも難なく動くようになります. 参考文献 ここに他のディストリビューションのインストールコマンドも載ってます.大体同じようなパッケージ名でした.(というかcommand-not-found.comとかいう便利なサイトあったんですね...)
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【たったの3分】WindowsでLinuxコマンドを使えるようにする方法

背景 転職先でWindowsPCを使っているが、標準のコマンドプロンプトが不便 コマンドプロンプトでもLinuxコマンドを使える方法を見つけたので紹介する WindowsでLinuxコマンドを使えるようにする方法 結論 busyboxを入れましょう。 手順 1. busyboxのダウンロード 以下のサイトからWindows用のbusyboxをダウンロードする。(http://frippery.org/busybox/) サイトの下の方に、以下の記載があるので、busybox64.exeと書いてあるリンクをクリック The 32-bit binary above will work on 64-bit systems but if you have a 64-bit version of Windows > there's some advantage in using the 64-bit executable busybox64.exe. It's 667,136 bytes in size. 2. ダウンロードファイルの配置 ダウンロードしたbusybox64.exeを好きなフォルダに移動 busybox64.exeを置いたフォルダへPathを通す。 3. インストール実施 コマンドラインでbusybox.exeを置いたフォルダへ移動 busyboxをインストールする > busybox64.exe --install インストールできていることを確認する。 (複数のexegz展開されていればOK) 4. 起動確認 どこでも良いので、lsなどのコマンドを実行し、動作することを確認する 参考 Windowsでbusyboxを用いてLinuxの基本的なコマンドを使用する
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

NFSサーバーの作り方・設定方法

はじめに 業務でNFSサーバーを建てる機会があったので作成手順を残します。サーバー側、クライアン側ともにCentOS 7。 構成 # サーバー側 /var/nfs # クライアント側 /mnt/nfs SELinuxをオフ $ vi /etc/selinux/config SELINUX=enforcing ↓ SELINUX=disabled $ reboot サーバー側で行うこと $ yum install -y nfs-utils $ vi /etc/exports /var/nfs 192.168.◯.◯/255.255.255.0(ro) # 反映と確認 $ exportfs -ra $ exportfs -v # ファイアーウォールの設定 $ firewall-cmd --permanent --zone=public --add-service=nfs $ firewall-cmd --reload $ systemctl start rpcbind nfs-server クライアント側で行うこと $ yum install nfs-utils $ mount -v -t nfs 192.168.◯.◯:/var/nfs /mnt/nfs これでいけるはず。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Linux]rmコマンド

コマンドの個人復習メモ rmとは rmコマンドはremoveの略で、基本的にファイルを削除するコマンドです。 rm ファイル名1 (ファイル名2 ファイル名3) # 並べれば複数可能 特徴 そのままではフォルダは削除できない sampleFoldrフォルダを作って削除しようとすると「sampleFoldrはディレクトリです」というエラーが出ます。 mkdir sampleFoldr rm sampleFoldr/ **エラー** rm: sampleFoldr/: is a directory 削除して良いかめっちゃ聞いてくる 毎回、削除してよいか聞かれます。消して良い場合は「y」を押して「エンターキー」をおします。 削除したくない場合は「エンターキー」だけ押せばスルーされます。 touch sampleFile rm sampleFile remove sampleFile? y # 削除して良いか聞いてくる sampleFile # 削除したファイルが表示される オプション オプション 利便性 説明 -r (--recursive) ◎ フォルダを中身ごと削除できる -f (--force) ◎ 確認されず削除できる -i (--interactive) 削除前に確認する サンプル -r (--recursive) `先ほどrmコマンドだけでは削除出来なかったsampleFoldrフォルダですが、-r`オプションをつけるとフォルダを削除できるようになります。 rm -r sampleFoldr examine files in directory sampleFoldr? y # フォルダの中身削除してOK? remove sampleFoldr? y # フォルダも削除してOK? sampleFoldr # 削除したフォルダ名 -f (--force) 削除して良いかの確認入力なしで削除されます。 便利ですが非表示になるのは確認メッセージだけでなく、エラーメッセージなども非表示になってしまうため、予期せぬ挙動が発生しても知る術がなくなってしまうので、注意が必要です。 rm -f sampleFile sampleFile # 削除したファイル名 -i (--interactive) 削除して良いかの確認入力なしで削除されます。 (オプションをつけなくてもデフォルトで聞いてくれます) rm -i sampleFile remove sampleFile? y #削除して良いか聞いてくれる sampleFile # 削除したファイル名 参考
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Grub関連の問題によってLinuxが起動不能になった場合・・・

はじめに LinuxではブートローダーとしてGrubが採用されています。 通常はユーザーがあまりむやみに弄る場所ではないため、特に意識して使うことはないんじゃないかと思います。 しかしながら、何らかの理由でGrub周辺の設定に手を触れなければならなくなった場合、さらには最悪その設定を誤った場合・・・ 起動しなくなります。 が、Grub設定を誤っただけでOSのファイル自体が生きている場合、Grub-Shellから手動でLinuxをスタートアップできる可能性があります。 今回は自分がそんな状況に置かれてしまったので、備忘録+戒めとしてここに記録しておきます。 対象読者 最近ハードディスク構成を変更した grub.cfgをいじったらおかしくなった Linux初心者(なかまだね) Case-1 GrubのOS選択画面は出る 1つ目のケースとして、GrubのOS選択画面に項目が表示される場合です。 こんな感じで↓ しかしこの項目を選択すると・・・ こんな画面になって意味がわからない場合、エンターキーを押して一度OS選択画面に戻り、選択画面になったらキーボードの「c」を押して、Grub-Shell(↓こんなん)を立ち上げてください。 Case-2 いきなりGrub-Shell 2つ目のケースとして、Grubのシェルが立ち上がってしまう場合です。 なんかよくわからないけどOS選択画面すらも表示されず、突然コマンド画面になる・・・って場合↓ この場合は特に何もせずに次へ読み進めてください。 豆知識:Grub-Shellってなんなん・・・ おそらく普通に使っている場合はあまり見ることがないであろうGrub-Shellですが、こいつは一体なんやいねという話ですよね。 Grub-ShellというのはOSが起動不能になってしまった場合に他の起動ディスク(LinuxのLiveCDとか)なしに起動可能な状態に復元できるように組み込まれたGrubのコンソールだそうです。 とはいえOS自体がぶっ壊れても復旧できるような万能なものではなく、あくまで今回のように「OS自体は生きてるけど内部の設定ファイルがおかしくて起動できない」みたいな場合にGrub-Shellからファイルを操作して起動可能な状態に持っていこうって趣旨のようです。 ちなみにシェル上部に「Minimal BASH-like line」と書かれているように、LinuxのBashに操作感が近く、Tabキーでの補完機能等が使えます。 一連の動作 lsコマンドでOSの入っているHDDを探してそれを指定して、その中に眠るLinuxカーネルを読み込ませて起動って感じですね。 コマンド解説 ls Linuxではおなじみのlsコマンドは、Grub-Shellでも同じように使えます。 ただGrub-shellでは何も指定せずにlsを入力すると、認識されているパーティションが表示されるようです。 (hd0)がsda、(hd1)がsdbっぽいです。 上の画像ではHDDが1つだけなので「(hd0)(hd0,msdos2)(hd0,msdos1)」と表示されています。 (hd0,msdos1)がsda1でありOS、(hd0,msdos2)がsda2でありスワップ領域です。 スワップ領域は本筋でないので今は解説しませんが、要するにOSが入っているのが「hd0,msdos1」であることがわかります。 補足・・・どこにOSが入っているかわからない場合は? 今回の場合はHDDが1つだけであったこと、1発でOS領域が当てられたので良かったですが、複数HDDがある場合はなかなか分かりづらいと思います。 その場合は↓このコマンドを片っ端から実行することでわかります。 ls (パーティション(hd0,1とか))/boot この場合、指定したパーティションの中にあるbootディレクトリを参照してくれるので、これでどれがOS用HDDであるのか判定することができます。 もし指定したパーティションがOS領域ではない場合、なにかエラーメッセージ(Unknown Filesystemみたいな)が表示されると思います。 set root=(hd0,msdos1) コマンドの通り、(hd0,msdos1)の領域をroot(/)として設定するという意味です。 これでls / と打つとおそらくOSのrootファイルが表示されると思います。 ls /boot /bootディレクトリの中をlsで表示させています。 カーネルを見つけなければならないのですが、一般的にLinuxカーネルは「vmlinuz-xxxx」のような形で記述されています。 linux /boot/vmlinuz-Uparticle-Lilik5.11.15 root=/dev/sda1 カーネルを指定するコマンドです。 今回私が実験で使っているLinuxは自作ディストリビューションですのでこのような名前ですが、Ubuntuなんかだと「vmlinuz-xxxx-genelic」のような名前だと思います。 この名前を特定するために、前述の「ls /boot」コマンドを入力したわけです。 root=/dev/sda1は、システムの存在する場所です。 boot カーネルを読み込ませたら起動します。 起動コマンドはこの「boot」です。 起動なるか・・・ bootコマンドを入力してカーネルパニックにならないよう祈りながら起動を待つと・・・ 起動しました!!!やったぜ。 ついでにgrub.cfgの中身 あまり触らないほうが良いのですが、cfgファイルの中身を見てみます。見るだけよ。 ついでにどこがミスりやすくて起動しなくなるかも見ていきます。 set root=(hd0,msdos1) よくあるミスがこれ↓ set root = (hd0, msdos1) grubコマンド等は無駄な空白が空いていると誤った認識をされてしまいます。 プログラミングなんかでは「$a = 1;」のような記述が好ましいとされている場合も多いですが、grubコマンドの場合はそれをするとそもそも起動しなくなる場合が多いです。 menuentry "GNU/Linux, XXX OS {... 今回私はこれが原因で起動しませんでした。 ダブルクォーテーション閉じ忘れでどこまでがmenuentryなのかが分からなくなってしまっていたようですね。 まとめ grub.cfgは普通に使っていたら触らないとは思うのですが、万が一触ることになった場合+ミスった場合はこのような形で復旧できる可能性があることがわかりました。 Linux From ScratchでLinuxディストリビューションを作っている場合、このあたりがおかしくて起動しなくなる場合がよくあるので、覚えておいて損は無いと思います。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

C#とJetBrains RiderでUbuntuのGUIを開発する

Ubuntu上でC# GUIを開発する時いろいろなIDEやフレームワークがあり、それぞれに長所と短所がある 開発環境 Ubuntu 18 要件 理由 .net Core Sdkで開発したい 開発者が多い monoより.net Coreのほうがで検索でヒットする glade gtk3を利用したい .net Coreに対応しているから VisualSutdio風のIDEを使いたい Windowsで使い慣れているから。 IDEとフレームワークの種類 IDE SDK エディター デザイン デメリット 費用 MonoDevelop Mono VisaulStudioに慣れていると使いづらい GTK2デザイナー .net coreが利用できないっぽい? IDEの見栄えが悪い 無料 VisalStudio Code .net Core VisaulStudio風にカスタマイズすれば近づけるが手順が多く煩雑 抜けが発生する Gtk3 glade いろいろ拡張機能をインストール必要がある。  無料 Rider .net Core Mono Visual Studio風で使いやすい 便利な機能が既に組み込まれている Gtk3 glade 毎月料金が発生する 月1600円 開発環境がすぐ構築できそうななので Riderを利用することにした。 とりあえず試用期間30日を利用してみる JetBrains Riderをインストールする $ sudo snap install rider --classic Download Riderの日本語化 Settings/Preferences→Plugins→Marketplace より “japanese” を検索して見つかる”Japanese Language Pack”をインストールする Riderを起動する Ubunchの環境でConsoleアプリの開発環境がすぐ出てくる 標準で.net Core がインストールされている。 三角のボタンをクリックするとビルドができます。 Nugetはどこにあるのか? 左下にありました。右クリックからソフトをインストールできます。 エラーが出たときに最適なライブラリをNugetから検索してくれる機能 ライブラリがインポートされていなくてエラーが出た時に、右クリックから最適なライブラリをNugetから検索してにいってくれます GladeとGTK3を組み合わせてGUIアプリを作る GTK+-3.0をインストール。 $ sudo apt install libgtk-3-dev GTK3デザイナ gladeをインストール。 $ sudo apt install glade GladeはGUIをデザインするソフトです。日本語にも対応しています。このGladeファイルと Riderと.net Coreを併用してGUIアプリを開発していきます。 続く GTK+3入門 GTKではじめるGUIアプリケーション開発
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

C#とJetBrains RiderでUbuntuのGUIアプリを開発する

Ubuntu上でC# GUIを開発する時いろいろなIDEやフレームワークがあり、それぞれに長所と短所がある 開発環境 Ubuntu 18 要件 理由 .net Core Sdkで開発したい 開発者が多い monoより.net Coreの方が検索でヒットする glade gtk3を利用したい .net Coreに対応しているから VisualSutdio風のIDEを使いたい Windowsで使い慣れているから IDEとフレームワークの種類 IDE SDK エディター デザイン デメリット 費用 MonoDevelop Mono VisaulStudioに慣れていると使いづらい GTK2デザイナー .net coreが利用できないっぽい? IDEの見栄えが悪い 無料 VisalStudio Code .net Core VisaulStudio風にカスタマイズすれば近づけるが手順が多く煩雑 抜けが発生する Gtk3 glade いろいろ拡張機能をインストール必要がある  無料 JetBrains Rider .net Core Mono Visual Studio風で使いやすい 便利な機能が既に組み込まれている Gtk3 glade 毎月料金が発生する 月1600円 開発環境がすぐ構築できそうななので Riderを利用することにした。 とりあえず試用期間30日を利用してみる JetBrains Riderをインストールする $ sudo snap install rider --classic Download Riderを起動する Ubuntuの環境でConsoleアプリの開発環境がすぐ出てくる Riderの日本語化 Settings/Preferences→Plugins→Marketplace より “japanese” を検索して見つかる”Japanese Language Pack”をインストールする 標準で.net Core がインストールされている。 三角のボタンをクリックするとビルドができます。 Nugetはどこにあるのか? 左下にありました。右クリックからソフトをインストールできます。 エラーが出たときに最適なライブラリをNugetから検索してくれる機能 ライブラリがインポートされていなくてエラーが出た時に、右クリックから最適なライブラリをNugetから検索してにいってくれます GladeとGTK3を組み合わせてGUIアプリを作る GTK+-3.0をインストール。 $ sudo apt install libgtk-3-dev GTK3デザイナ gladeをインストール。 $ sudo apt install glade GladeはGUIをデザインするソフトです。日本語にも対応しています。このGladeファイルと Riderと.net Coreを併用してGUIアプリを開発していきます。 続く GTKではじめるGUIアプリケーション開発
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Ubuntu Desktop 20.04 LTSでL2TPのVPN接続

sudo apt install network-manager-l2tp-gnome をインストールすると 設定 -> ネットワーク -> VPN からL2TPでのVPN設定がGUIで出来るようになる。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linuxの基本とよく使うコマンド

Linuxとは OSの一種。コンピュータを動かすための基本ソフト 例) windows,android,MacOSX,Linux Linux誕生の歴史 1970年代 UnixというOSが誕生 有料でライセンス縛りが厳しかった 1985年〜 オープンソース版のUnixを開発するプロジェクトが開始 ソースコードも公開されて様々な派生版Unixが誕生 1991年〜 リーナス・トーバルズがLinuxを開発、オープンソース化 UNIXを真似て、1からOSを作る 現在まで Linuxという形でライセンスの縛りもなく無償で誰でも使えるようになった どこで使われているか サーバー 組み込み デスクトップ 特徴 オープンソースなので誰でも自由に使える 世界中で使われていて信頼性が高い 品質の高い多くのソフトウエアが利用できる 自動化するための仕組みがあり、サーバー運用が行いやすい 欠点 商用アプリケーションがあまり存在しない Microsoft Officeが動作しない 画像、音楽、動画などのマルチメディア系ファイルを編集するのが苦手 日本語対応されていない部分が多い なぜLinuxを学ぶのか 幅広い場所で使われている サーバー用、組み込み用の90%が使われている 長年使える 良くも悪くも技術が枯れている(Linuxの技術は長い時間かけて多くのユーザーに検証された結果、大きく変更する必要がなくなった) Linux ディストリビューションとは カーネルとは OSの中核となるソフトウエア(狭義のLinux) ディストリビューションとは カーネルに色々なソフトウエアを組み合わせて使いやすくしたもの。 ディストリビューションの種類 例) Red Hat系 Red Hat Enterprise Linux CentOS Fedora Debian系 Debian GUN/Linux Ubuntu シェルとは シェルは、LinuxのCLIを提供するソフトウエア。ユーザーとLinuxカーネルの仲介役をしている。 一言で言うと「コマンドを入力する場所」 CLI = 全てのやりとりを文字によって行う方式(インターフェース) ユーザー →(コマンド入力)→ シェル →(コマンド伝える)→ Linuxカーネル ユーザー ←(コマンド結果)← シェル ←(コマンド実行)← Linuxカーネル シェルの画面 [ユーザー名@ホスト名~]$ ユーザー名 = 使用しているコンピュータにログインしているユーザー ホスト名 = コンピュータの識別名 $ = プロンプト(コマンドを入力する部分) シェルの仕組み 1 ユーザーがプロンプトにコマンドをうつ 2 シェルが入力された名前のコマンドを探す 3 Linuxカーネルが見つかったコマンドを実行する 4 シェルが実行結果を画面に表示する Linuxを操作する(ターミナル) ターミナルとは 入出力の画面を提供するソフトウエア。 シェルはコマンドを解釈するソフトウエア。 シェルの種類 sh もっとも古いシェル ほぼ全てのUnixで利用できる標準的なシェル機能は少ない bash shを基本として機能を拡張したシェル Linux環境でデフォルトのログインシェル 学習で使うならbashがおすすめ zhs bashの機能を取り込み、独自の拡張も追加 機能の豊富なシェル Linuxの設計思想(有用な考え方) 1つのプログラムには1つのことをうまくやらせる 色々な機能をできるだけ細かく切り分けて作る シェルの便利機能(ショートカットキー) カーソルの移動 Ctrl(cmd) + f 一文字次へ移動 Ctrl(cmd) + b 一文字前へ移動 Ctrl(cmd) + a 行の先頭に移動 Ctrl(cmd) + e 行の最後に移動 Meta(esc) → f 一単語次へ移動 Meta(esc) → b 一単語前へ移動 ※ escキーは同時押ししない 文字列の編集 Ctrl + h カーソルの左側を一文字削除 Ctrl + d カーソル部分を一文字削除 Ctrl + w カーソル位置の単語を削除 Ctrl + u カーソル位置から行頭まで削除 Ctrl + k カーソル一から行末まで削除 Ctrl + y 最後に削除した内容を挿入 トラブル時の対応 Ctrl + c 実行中のコマンドを強制終了 Ctrl + l 画面の消去 Ctrl + s 画面表示のロック(キーボードから文字の入力を受け付けない) Ctrl + q 画面表示のロック解除 補完・コマンド履歴 Tab コマンドやパスの補完 Ctrl + p(↑)   一つ前の履歴を見る Ctrl + n(↓)   一つ後の履歴を見る Ctrl + r     コマンド履歴をインクリメンタル検索 文字の入力  コマンド履歴から検索 Ctrl + r    1つ前の検索結果へ移動 Enterキー   現在の検索結果を実行 Escキー    現在の検索結果を表示したままコマンドラインに戻る Ctrl + g    検索結果を破棄し、コマンドラインに戻る ディレクトリを操作する ディレクトリとは 階層構造を持ったファイルのこと。 ディレクトリの構造 例1)Linuxの場合 / #ルートディレクトリ ┣bin ┣dev ┣etc ┣home  ┣sbin ┣tmp ┣usr ┗var 例2)windowsの場合 Cドライブ ┗Downloads Dドライブ ┗######### windowsはドライブから入れ子構造が始まる Linuxは1つのディレクトリ(/)から入れ子構造が始まる マウントとは ルートディレクトリ配下にディレクトリとしてくっつける操作のこと。 主要なディレクトリの役割 /bin ・一般ユーザー及び管理ユーザーが使用するコマンドの実行ファイルを格納 ・特にLinuxの動作に最低限必要な重要度の高いコマンドの実行ファイルを格納 /dev ・デバイスファイルを格納 デバイスファイル:ハードウエアをファイルとして扱えるようにしたファイル /etc ・設定ファイルを格納 ・Linuxで動作するアプリケーションファイルの設定ファイルが置かれている ・Linux自体の設定に関わるファイルが置かれている /home ・ホームディレクトリ(各ユーザーの個人用ディレクトリ)が配置されている ・ユーザーはホームディレクトリ内に自由にファイルやディレクトリを作成できる /sbin ・管理者ユーザー向けのコマンド実行ファイルを格納 /tmp ・一時的なファイルを格納 ・アプリケーションの実行中に結果を一時的にファイルとして保存する場合に使用 /usr ・各種アプリケーションと、それに付随するファイルを格納 /var ・変化するデータを格納 ・アプリケーションを動作する上で作成されたログなどを格納 cdコマンド(ディレクトリの移動) 略元: change directory 書式: $ cd [オプション] [ディレクトリ] ※ []は任意という意味 特殊なディレクトリの指定 ディレクトリ 意味 指定方法 カレントディレクトリ 現在自分のいるディレクトリ . 親ディレクトリ 1つ上の階層ディレクトリ .. ホームディレクトリ 「/home/ユーザー名」ディレクトリ ~ ルートディレクトリ  「/」ディレクトリ  / pwdコマンド(カレントディレクトリの表示) 略元: print name of working directory 書式: $ pwd [オプション] 現在自分のいるディレクトリを表示される homeディレクトリとは、/homeではなく、/home/ユーザー名のこと。 lsコマンド(ディレクトリの中身を一覧表示) 略元: list 書式: $ ls [オプション] [ディレクトリ・ファイル名] 例) $ ls / $ ls / /dv #複数のディレクトリを指定する時 パス名展開 パス名展開を使うと複数のファイルを一度に指定できる 例) $ ls *.html   #拡張子がhtmlのファイルの一覧を表示 $ ls /bin/z???  #zから始まり4文字で終わるファイルを表示 よく使うオプション $ ls -l #ファイルの詳細情報を表示 例) drwxr-xr-x 2 hoge hoge 6 8月 6 11:57 dev $ ls -a #隠しファイルを含めた全てのファイルを表示 「.」で始まるのが隠しファイル $ ls -F #ファイルの種別を表示 / ディレクトリ @ シンボリックリンク * 実行可能ファイル 記号なし 通常ファイル ファイルの詳細の見方 ファイルタイプ  d  ファイルモード  rwxr-xr-x  リンク数  2  所有者(左)  hoge  所有グループ(右)  hoge  サイズ  6  タイムスタンプ  8月 6 11:57  ファイル名・ディレクトリ名  dev  mkdirコマンド(ディレクトリの作成) 略元: make directory 書式: $ mkdir [オプション] <作成するディレクトリ名> ※<>は必須という意味 オプション $ mkdir -p test/2019/08 -pオプションは、階層ディレクトリを丸ごと指定して作成するオプション rmdir(ディレクトリの削除) 略元: remove directory 書式: $ rmdir <ディレクトリ名> 空ではないディレクトリを削除しようとするとエラーが起こる。 中身のあるファイルを間違って削除してしまう事故を防げる。 パスとは ディレクトリやファイルの住所情報 階層の区切りを「/」で表現する。 例) /home/kume Linuxの場合は「/」 windowsの場合は「¥」 絶対パス 「/」から始まるパス 相対パス カレントディレクトリから始まるパス 特別なディレクトリの表記 例えば、下記のような構造にいるとする。★が自分のいる場所(カレントディレクトリ) 例) / └home └★kume └code └README.md 相対パス 絶対パス ../.. / .. /home . /home/kume code(./code) /home/kume/code code/work(./code/work) /home/kume/code/README.md コマンドの使い方を調べる 書式: $ <コマンド> --help コマンドの使用方法、概要、利用可能なオプション一覧が表示される。 書式: $ man <調べたいコマンド>  $ man -k move #キーワードから検索もできる --helpオプションよりも詳しい。コマンドをきちんと理解したい時に使う。 j で上へスクロール k で下へスクロール q で終了 ファイルを操作 catコマンド(ファイルの中身を表示) 略元:concatenate 書式:$ cat [オプション] <ファイル名> ※複数ファイルをまとめて表示もできる オプション -n #ファイルの詳細情報を表示(行番号がつく) lessコマンド(ファイルの中身をスクロール) 略元:less - opposite of more 書式:$ less [オプション] <ファイル名> ※長いファイルの中身を見たい時に使う 操作方法 コマンド  内容  スペース,f  一画面下へスクロール b  一画面上へスクロール j  1行下へスクロール k  1行上へスクロール q  lessコマンドの終了 検索の操作 コマンド 内容 /<文字列> 下方向に検索 ?<文字列> 上方向に検索 n 次の検索結果に移動 N 前の検索結果に移動 ファイルの種類 テキストファイルとは 文字列を扱ったファイルのこと。 OSに関わるほとんどの設定情報をテキストファイルとして管理している。 バイナリファイルとは 画像ファイル、音声ファイル、実行ファイルなどのこと。 文字コード以外の数値を含むようなファイルもバイナリファイルと呼ぶ。 touchコマンド(ファイルを作成) 略元:touch 書式:$ touch <新規ファイル名1> <新規ファイル名2>… ※ファイル名が存在しない時はからのファイルを作成する  本来は存在しているファイルのタイムスタンプを更新するコマンド  間違って操作しても上書きしない安全なコマンド rmコマンド(ファイルを削除) 略元:remove 書式:$ rm [オプション] <削除するファイル名1> <削除するファイル名2>… ※完全に削除するために復活できないため注意! オプション -r #ディレクトリ構造、中身も合わせて削除する(危険) -f #ファイルを削除する際に警告文を表示しない(危険) -i #ファイルの削除前に確認する mvコマンド(ファイルの移動、ファイル名の変更) 略元:move 書式:$ mv [オプション] <移動元> <移動先> ※指定する先によって挙動が異なる 移動先がファイルの場合 => ファイル名が変わる 移動先がディレクトリの場合 => ファイルが移動する オプション -i #上書きする前に確認する cpコマンド(ファイル・ディレクトリをコピー) 略元:copy 書式:$ cp [オプション] <コピー元> <コピー先> ※コピー先のファイルがすでにある場合は上書きしてしまう注意 オプション -i #上書きする前に確認する -r #ディレクトリをコピー lnコマンド(リンクを貼る) 略元:link 書式:$ ln [オプション] <リンク元ファイル名> <リンク名> ※オプションを付けないとハードリンクになる。 オプション -s #シンボリックリンクを指定する リンクを貼るとは Linuxではファイルに別名をつけることができる。 別名をつける = 「リンクを貼る」 windowsでいうショートカットのようなもの ハードリンク(ファイルに複数の名前をつける) 1つのファイルの実態に複数の名前をつける機能 元のファイルを削除しても消えない 全てのハードリンクが無くなった時に削除される シンボリックリンク(リンク先のパス名を記載しただけ) リンク先のパス名が書かれた特殊ファイル(リンク先がファイルの実体)。 シンボリックリンクを残したままファイルの実体を削除したり、ファイルを移動するとファイルを参照できなくなる。 どういう時に使うのか 長いパス名を省略したい時(階層が深いとアクセスが手間になるため) 複数バージョンを共存させ最新を区別したい時 findコマンド(ファイルを検索) 略元:find 書式:$ find <検索開始ディレクトリ> <検索条件> <アクション> よく使われる検索条件 -name ファイル名 #大文字小文字を区別する(ワイルドカード利用可能) -iname ファイル名 #大文字小文字を区別しない -type f #通常ファイルを指定 -type l #シンボリックリンクを指定 -type d #ディレクトリを指定 -a #複数の検索条件を指定(省略可能) ワイルドカードが使える '*.html' #任意の文字列 '????.html' #任意の文字数(? = 1文字) よく使われるアクション -print #パス名の表示 標準入出力とパーミッション 標準入出力とは 一言で言うと、キーボードから画面に表示されるまでの仕組みのこと。 プログラムが特になにも指定されていない場合に利用するデータの標準的な入出力元 図) ファイル →┐ キーボード(標準入力) → コマンド実行 → ディスプレイ(標準出力) └→ ファイル(標準エラー出力) Linuxでは、コマンドの入出力先を抽象化することで、入出力先を柔軟に変更できる。 リダイレクトとは(入出力先を変更する機能) 入力リダイレクト(<) キーボードの代わりにファイルから入力する機能 何度も同じコマンドを実行する時などにファイルにまとめておいて、実行しておけばミスも手間もなくせる 例) $ cat < /etc/hosts 出力のリダイレクト(>) コマンドの実行結果をファイルに保存する機能(画面に表示しない) 例) $ ls > output.txt ※正式には1>で表記する(ただし1は省略できる) 標準入出力の数値 標準入出力などをOSが識別するために用いる識別子 入出力 数値 標準入力 0 標準出力 1 標準エラー出力 2 エラー入力のリダイレクト(2>) エラー結果をファイルに保存する機能(画面に表示しない) 例) $ ls /hoge 2> error.txt 出力とエラー出力をまとめる(2>&1) 出力をリダイレクトした後にまとめる。 例) $ ls / /hoge > output.txt 2>&1 リダイレクトで追記 「>」でファイルを上書き 「>>」でファイルを追記 例) $ echo Hello! >> output.txt /dev/nullとは  入力先として指定しても何も返さず、出力先として指定してもデータは消え何も表示されない特別なファイル 入力先として指定 入力が何もない状態になる コマンドのテストなどで入力を空にしたい時に使用する 出力先として指定 結果が何も表示されない 結果が大量にあり、結果を非表示にしたい時に使用する パイプラインとは 複数のコマンドを連携させる機能。 コマンドの標準出力を別のコマンドの標準入力に繋げる 書式:$ コマンド | コマンド 例) $ ls /bin | grep systemd | less ls… grep… less… まとめ  Linuxの設計思想は、小さなことを1つずつ動かし、組み合わせる事で複雑な操作を可能にする。それを実現するために標準入出力の仕組みがある。 パーミッションとは ファイルの権限管理のこと。 Linuxは複数人がアクセスして使うように作られているために権限がある。 ファイルのオーナーとグループ ファイルには全てオーナー(所有者)とグループ(所有グループ)が設定されている。 詳細 前提:Linuxはユーザーごとにアカウントを発行している。 オーナー:ファイルの所有者 グループ:ファイルの所有グループ。ユーザーをグループに所属させ、グループに権限を与えることで複数ユーザーを一括で管理できる。 確認方法 $ ls -l ファイル名 #ファイルのオーナーとグループが確認できる。 例) -rwxr-xr-x. 1 root root 158240 7月 31 2015 /bin/less root(左) = オーナー root(右) = グループ ファイルのパーミッション ファイルやディレクトリを「誰がどのように操作できるか」を定めたのがパーミッション。 パーミッションの確認方法 $ ls -l ファイル名 例) -rwxr-xr-x. 1 root root 158240 7月 31 2015 /bin/less パーミッションの見方 ファイルタイプ オーナーの権限 グループの権限 その他ユーザーの権限 - rwx r-x r-x 記号の意味 記号 内容 r read(読み取り) w write(書き込み) x execute(実行) - 権限なし chmodコマンド(ファイルモード) ファイルやディレクトリのパーミッションを設定する。 略元:change mode 書式:chmod [ugoa] [+-=] [rwx] <ファイル名> 例) $ chmod u+r file ファイルに対して所有者の権限を追加する 記号 内容 u 所有者の権限 g グループの権限 o その他のユーザーの権限 a 全ユーザーの権限 + 権限を追加 - 権限を削除 = 記述した権限にする 数値で指定する方法(chmodコマンド) 書式:chmod <8進数の数値> <ファイル名> 例) $ chmod 755 file 通常指定 = 相対指定 数値指定 = 絶対指定 パーミッション 数値 r(読み取り) 4 w(書き込み) 2 x(実行) 1 数値で置き換えて足し合わせる。 オーナー グループ その他 rwx r-x r-x 421 4 1 4 1 7 5 5 スーパーユーザー 管理者権限を持つ特別なユーザー(root) 背景 システムの根幹に関わる作業が誰にでもできると危険 システムの根幹に関わる作業はスーパーユーザーだけができるようにしている。 コマンド $ sudo <コマンド> 略元:switch user and do プロセスとは 実行中のプログラムのこと。 コマンドを実行すると、実行ファイルをメモリに格納してメモリ上でCPUがプログラムを実行する。1つ実行する度に新しいプロセスが1つ作られる。 psコマンド(実行中のプロセスを表示する) 略元:process status 書式:ps [オプション] 例) $ ps 1行ずつが1つのプロセスとして表示される。 PID = プロセスID CMD = 実行中のコマンド オプション $ ps aux -は付けない。 x 実行したユーザーの全てのプロセスを表示 a 全てのユーザーのプロセスを表示する u 詳細情報を合わせて表示する 他にもたくさんある。 ジョブとは まとめて実行されるプロセスの集まりのこと。シェルごとに管理されるもの。 例) $ ps aux | grep bash | less psaux,grep bash, lessで3つのプロセスが生成 3つのプロセスが連なって1つのジョブを生成する。 ジョブとプロセスの違い プロセスは、OS全体で統一して管理されている。 ジョブは、そのジョブを実行するシェルで管理されている。 ジョブにもIDが存在する。 fg・bgコマンド(ジョブの状態を変更する) バックグランドとフォアグラウンド バックグラウンド = シェルの画面外でコマンドを実行すること フォアグラウンド = シェルの画面内でコマンドを実行すること jobsコマンド 略元:jobs 書式:$ jobs 例) $ jobs [1]+ 実行中 sleep 10 &  #ジョブID、実行状況、実行コマンドを表示 fgコマンド(ジョブをフォアグラウンドにするコマンド) 略元:foreground 書式:$ fg %<ジョブID> 例) $ fg %1 ジョブをフォアグラウンドに戻して対話的に操作したい時に使う bgコマンド(ジョブをバックグラウンドにするコマンド) 略元:background 書式:bg %<ジョブID> 例) $ bg %1 長い時間かかる処理をバックグラウンドで実行することで、コマンドが終了するのを待たなくても良くなる。 killコマンド(プロセス・ジョブを終了する) 不要なジョブやプロセスを終了させる。 略元:kill process 書式:kill [オプション] %<ジョブID(プロセスID)> 例) $ kill %1 $ kill 4965 フォアグラウンドのジョブはCtrl+cで終了できる。 停止中やバックグラウンドのジョブはkillコマンドで終了できる。 補足 $ kill -<シグナル名> <プロセスID> 正確には、killコマンドはシグナルを送信するコマンド。 デフォルトでは、TERM(終了)というシグナルを送信している。 強制終了のシグナル(時々使うができるだけ使わない方がいい) $ kill -SIGKILL 4965 $ kill -9 4965 この二つのコマンドは同じ 参考元 もう怖くないLinuxコマンド。手を動かしながらLinuxコマンドラインを5日間で身に付けよう/山浦清透
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む