コース内容#
グラフィカルな [Windows] からテキストインターフェース [Linux] への移行#
エラーとヒント#
グラフィカル→テキスト情報
- 画面出力を無視しないで、システムの各応答を注意深く見てください!
- プログラムの return 値は次の行の右側に反映されます
- return 0 は成功を示します
コマンド形式#
コマンド [オプション] [オプション引数]... [引数]...
- オプション:-- オプションの完全名 - オプションの略称
- スペース:いくつあっても 1 つのスペースとして扱われ、区切りとして使用されます
Linux はセキュリティ面でより多くの考慮がなされています#
ユーザー、ユーザーグループ、権限
- パスワードの変更:passwd
- ユーザーのログアウト:exit、logout、ctrl + d
- 新しいユーザーの作成:useradd
- ホームディレクトリ:/home、他のユーザーは他のディレクトリで変更権限がない場合があります
- グループ
- [PS] すべてはファイルであり、すべてのデバイス、抽象的なプロセス、実行データ、CPU...
- ユーザーに関連するファイル /etc/passwd、/etc/group、関連コマンド usermod、userdel、id
- id:自分または指定したユーザーの uid、gid(主要グループ)、groups(所属グループ)を確認できます
ユーザーとグループ#
- 権限:文字で表現(r は読み取り可能、w は書き込み可能、x は実行可能)→8/10 進数での説明
- 各ファイルには所有者、所有グループ、その他のユーザーがいます
- ls -l を入力すると確認できます
-
- 赤枠を参照、ファイルタイプ l、d など、詳細は追加知識ポイント - 7 種類のファイルタイプを参照
-
ファイルのブラウジング#
Linux には 1 本の木しかなく、ルートディレクトリ / から始まります
私は誰か、私はどこにいるか、どこに行くか#
- 私は誰か whoami、who am i(本質を見る)
-
- whoami:システムがあなたを誰と感じているか、who am i:あなたは実際に誰か
-
- 私はどこにいるか pwd:print working directory
- 私はどこに行くか cd:change directory
- [PS] コマンドやパスを書くときは、Tab キーをうまく使いましょう
ソフトウェアのインストール(Ubuntu)#
- .deb:dpkg -i xxx.deb を使用
- .tar:tar で解凍
- apt インストール:依存関係を自動的に解決し、適切なソフトウェアソースアドレスを選択できます
- どこにインストールされたか?分散配置:bin、lib;/usr/→bin、include、lib、local、share(ヘルプマニュアル)、src
- 関連コマンド
-
- search はソフトウェアを探し、存在するかどうかを確認します、名前を忘れた可能性があります
- apt remove xxx--purge(設定ファイルを保持しない)
- apt autoremove は慎重に使用してください、apt が管理しているため、誤って削除される可能性があり、まだ使用する必要があるが実行中でない、他の方法でダウンロードしたソフトウェア
-
Linux の一般的なコマンド#
ファイルおよびディレクトリ操作#
-
- ln:ソフトリンク、ハードリンク
ファイル内容の変更と表示#
-
- ⭐Linux の三剣客:grep [Global Regular Expression Print]、awk [データ処理]、sed [バッチ操作]
- ❗ パイプ:| 前のコマンドの出力を次のコマンドに渡します
- less は more よりも使いやすく、機能が豊富です
- wc:word count、-l [行数] などの引数を受け取ることができます
ファイルの検索と位置特定#
-
- which:実行可能ファイルの具体的な位置を探します、具体的にどれを使用しているか
- locate
- インデックスに基づいており、非常に速く検索できます
- 【リアルタイム更新ではありません】、更新にはすべてのファイルを遍歴する必要があり、遅いです
- 定期的に更新されるか、sudo updatedb を使用してデータベースを即座に更新します
ユーザー関連#
-
- sudo -i:スーパーユーザー権限でデフォルトのシェルにログインします
- chmod:change mode
- chown:change owner
プロセス関連#
-
- 一般的に使用される ps -ef、すべてのプロセスの詳細情報を出力します
- kill 指定 PID [process ID] でプロセスを終了できます
- pkill は文字列に一致するプロセスを一括で終了できます、ユーザーが権限を持つプロセスのみを終了します、sudo pkill は慎重に使用してください
- crontab -e:編集【定期タスク】、中の形式を参考にしてください
- ctrl + z、fg、bg、jobs
- jobs でプロセス番号を確認します
- ctrl + z はプロセスを一時停止させます
- bg はバックグラウンドで実行でき、出力はターミナルに表示されます
- %2(または fg %2)[zsh で]、fg 2 [bash で] で 2 番目のプロセスをフォアグラウンドに戻します
- [PS] fg はソースファイルの変更や gcc の時に使用すると効率が上がります
システム情報の取得#
-
- 調整に使用できます
- 他の人がリソースを占有していないか確認し、システムが攻撃されていないかをチェックします:top、htop、nmon
- 【クラウドホストが攻撃される可能性を減らす方法】
- パスワードを無効にし、sshd を設定し、公開鍵と秘密鍵の方法でログインします
- 複雑なパスワードに変更します
- デフォルトのユーザー名を変更するか、新しいユーザーを作成します
- ssh の接続ポートを変更します
- -h は人間に優しい表示をします
- du -h、ディレクトリファイルサイズを人間に優しい表示、K、M
- free -h、メモリデータを人間に優しい表示
- nmon:システムがいつ問題を起こしたかを確認するのに適しています
- ifconfig [interfaces config] で表示されるネットワークデバイス情報の意味- ブログ
- プライベート IP が見え、パブリック IP は見えません
- uname -a:利用可能なすべてのシステム情報を出力します、cat /etc/os-release も使用できます
その他のコマンド#
-
- ssh [オープンソース] 以前は telnet をよく使用していました
- 【scp を使用して ssh でコピー】
- リモート👉ローカル:scp username@ip_address: リモートファイル ローカルパス
- ローカル👉リモート:scp ローカルファイル username@ip_address: リモートパス
- クラウドホストを poweroff した後、コンソールに接続して起動する必要があります
基礎知識のまとめ#
Terminal & Shell#
- Terminal はデバイスに似ています
- Terminal の中で Shell ソフトウェアが実行されており、bash、zsh など、Terminal に入力されたコマンドを解釈します
- Shell がコマンドを受け取るとき:内蔵かどうか→システム環境変数 PATH のパスを探し、呼び出します
区切り文字#
- 一部の特殊記号も区切り文字に含まれます:パイプ | 、リダイレクト >、>>、<、<< 、バックグラウンド実行 &、シーケンス実行 &&
- /dev/zero、/dev/null にリダイレクト:データのブラックホールに入力し、ここに入力されたものは直接無視されます、具体的には man zero を参照してください【/dev:デバイス】
プログラムとプロセス#
- プログラムは実行可能なバイナリファイルです;プロセスはメモリ内のプログラムのイメージ、インスタンス化です
パス#
- 絶対パス:起点はルートディレクトリ /
- 相対パス:現在のパス "." と上位パス ".." をうまく使います
- リモートパス:プロトコル:// ユーザー名:パスワード @位置 / パス:ポート
- 特殊パス:~ ユーザー名 = ユーザー名のホームディレクトリ、- = 前回の作業ディレクトリ
ソフトウェア#
- Linux にはレジストリの概念がありません
-
隠しファイル#
- 名前は。で始まる必要があります
- 特殊ディレクトリ:現在のディレクトリ "." と親ディレクトリ ".."
ファイルタイプ#
【7 種類のファイルタイプ】
-
- link:一時的に Windows のショートカットとして理解できます
- block:システムの大多数のブロックは 4096Byte = 4KB で、バッファの役割を果たします、宅配便の配送に例えられます
- character:デバイスもファイルであり、仮想端末 /dev/pts/0 のように
- socket:ネットワークに基づくものはこれを離れられません
- pipe:メモリを占有せず、伝送のみを担当します、例えば一度の伝送:echo > パイプファイル、cat パイプファイル
- 3 種類の通常ファイル
-
ファイル権限の変更#
- chmod
- +、-、= をうまく使います
- a = all、+ 権限を追加、- 権限を削除、= 権限を直接上書き
- chmod 777 の使用はできるだけ減らしてください、権限が過度にオープンになります
- +、-、= をうまく使います
- chown
- ファイルの所属ユーザーとグループを同時に変更できます
- chown 所属ユーザー:所属グループ ファイル
- ディレクトリおよびその下のすべてのファイルの所属ユーザーを変更できます
- chown -R 所属ユーザー ディレクトリ
- ファイルの所属ユーザーとグループを同時に変更できます
- chgrp:ファイルの所属グループを変更します、一般的には chown で代替可能です
- ファイル権限を確認する
- ll = ls -lh
- which ll または alias ll で ll が具体的に使用しているコマンドを確認できます
- l = ls -lah
- システム内の 3 つの時間:変更時間 mtime、読み取り時間 atime、権限変更時間 ctime
- ll = ls -lh
ユーザー#
- root の使用は慎重に
- su ユーザー名:別のユーザーに切り替え、パスワードを入力する必要があります
- su - ユーザー名
- "-" を使用すると、環境変数が完全に更新され、複雑な操作に適しています
- "-" を加えない場合、環境変数が適度に更新され、一時的なユーザー切り替えに適しています
- ユーザー名を加えない場合、デフォルトで root に切り替わります
追加知識ポイント#
- . 現在のディレクトリ .. 親ディレクトリ / ルートディレクトリ
- ゾンビプロセス [有害]:子プロセスが死んで、親プロセスが管理せず、子プロセスがリソースを占有している;孤児プロセス [無害]:1 号プロセスに養子にされます
- 他の端末とチャット
- w を入力してオンライン端末を確認します
- TTY [Teletype]:端末;pts [pseudo terminal slave]:仮想端末
- echo "hello" >> /dev/pts/1 を入力して端末 pts/1 に "hello" を送信します
- pts/1 はメッセージを受信し、同じ方法で echo で返信します
- wall "System is rebooting in 15s" を使用して、すべてのオンラインユーザーに自分が再起動することを知らせることもできます
- w を入力してオンライン端末を確認します
- sudo !! を使用すると、スーパーユーザーとして前回のコマンドを実行できます
- 前回のコマンドを再度入力する必要なく、スーパーユーザーとして実行できます
- whereis
- ソフトウェアのインストールディレクトリを確認します
- file ファイル
- ファイルの具体的な情報を確認します
- 通常は [man コマンド] または [コマンド -h] を使用してコマンドのヘルプを確認できます
- 使用説明の形式ルール:[] はオプション、| は同時に使用できない引数
- ディレクトリもファイルです
- alias 別名 = コマンド、別名に対応するコマンドを設定できます
ヒント#
-
ユーザー関連
- ユーザーを作成する際に特別なグループを指定しない場合、自分のユーザー名でグループが作成されます
- 1 人のユーザーは複数の異なるグループに所属できます
-
優れたリソース監視ソフトウェア
- Htop:Linux で動作する監視およびプロセス管理ソフトウェア、top よりも使いやすい
- nmon:Linux のコンピュータ性能システム監視ツール [IBM 開発]
- dstat:柔軟なリソース統計ツール
-
コマンド関連
- apt と apt-get に違いはありません
- history:出力されたコマンドの履歴を印刷します
- tldr + コマンド:コマンド形式を確認します
- echo $PATH:PATH 環境変数を印刷し、システムのデフォルトの実行可能ファイルのパスを格納します
-
Ubuntu でホスト名を変更する方法- ブログ、hostnamectl について
-
- 基本操作は5 基本システム —— ネットワーク —— 第 2 点を参考にしてください
-
-
コンピュータネットワーク学習の推奨:《コンピュータネットワーク:自頂向下法》、重点は最初の 5 章