Linux 入門講習会 九州大学情報基盤研究開発センター 本資料は以下のURLで閲覧できます. http://www.cc.kyushu-u.ac.jp/scp/lecture/unix1/ 1
スケジュール Linuxの概要 計算機への接続, ログイン, ログアウト Linuxの操作 ファイル操作 テキストファイルの編集 その他のコマンド ssh 公開鍵認証 2
UNIX とは OS(Operating System) の一種 OS: 計算機の管理を行う基本ソフトウェア キーボードからの入力 ディスプレイへの出力 ファイルの読み書き プロセスの管理など 代表的な OS: UNIX Windows DOS MacOS 等 ディスプレイ 計算機 OS CPU キーボード プロセス 周辺機器 ( ハードディスク プリンタ等 ) 3
Linux とは UNIX 風の OS 厳密には UNIX ではないが UNIX との互換性を意識 Linux の構成要素の多くはフリーのソフトウェア 誰でもソースコードの殆どを参照できる. Linux と呼ばれる OS にも多くの種類がある RedHat, Debian, SUSE 等の系統がある. 有料で販売されているものもある. 4
情報基盤研究開発センターの 研究者用計算機システム tatara.cc.kyushu-u.ac.jp 富士通 PRIMERGY CX400 S1 Intel Xeon 2.7GHz x 16 コア x 1476 ノードメモリ : 128GB / ノード hayaka.cc.kyushu-u.ac.jp 富士通 PRIMEHPC FX10 Fujitsu SPARC64 Ⅸfx 1.848GHz x 16 コア x 768 ノードメモリ : 32GB / ノード hakozaki.cc.kyushu-u.ac.jp 日立 HA8000-tc/HT210 Intel Xeon 2.7GHz x 24 コア x 965 ノードメモリ : 256GB / ノード mikasa.cc.kyushu-u.ac.jp 日立 SR16000 モデル VM1 IBM POWER7 4.0GHz x 8 コア x 32CPU メモリ :16TB 5
情報基盤研究開発センターへの 利用登録 アカウント 情報基盤研究開発センターの研究者用計算機利用権 以下の Web ページで 利用申請書 を入手し記入後提出 http://www.cc.kyushu-u.ac.jp/scp/users/download.html 1~2 週間程度で 利用承認書 送付 利用承認書 : アカウントに関する情報 ユーザー ID 初期パスワード 6
情報基盤研究開発センターの 問い合わせ窓口 ホームページ : http://www.cc.kyushu-u.ac.jp/scp/ 計算機利用法等の資料 利用申請書 運用情報等 電子メール : request@iii.kyushu-u.ac.jp 7
スケジュール Linuxの概要 計算機への接続, ログイン, ログアウト Linuxの操作 ファイル操作 テキストファイルの編集 その他のコマンド ssh 公開鍵認証 8
計算機への接続 中 ~ 大規模の計算機は通常複数の利用者で共同利用するので, ネットワークを介した遠隔利用が主体 UNIX 等はネットワーク経由の共同利用が得意 TeraTerm tatara% hakozaki tatara wisdom TeraTerm wisdom% 9
PC からの接続 ログイン Windows より : UNIX, MacOS より : PuTTY, TeraTerm 等の接続ソフトウェアを利用 ssh コマンド ファイル転送 Windows より : WinSCP 等のソフトウェアを利用 UNIX, MacOS より : scp コマンド sftp コマンド 10
接続用ソフトウェアの入手 TeraTerm http://sourceforge.jp/projects/ttssh2/ WinSCP http://winscp.net/eng/docs/lang:jp 11
セッション : Linux の利用開始から終了まで Linuxへの接続 Linuxへのログイン パスワードによる認証後 セッション開設 作業 ファイル操作等 Linux からのログアウト セッション終了 12
接続 Windows の場合 TeraTerm を起動 Tera Term New Connection ウィンドウで Host にホスト名 ( 例えば wisdom.cc.kyushu-u.ac.jp) を入力 Service の SSH をチェックして [OK] SECURITY WARNING ウィンドウがでたら Add this machine... をチェックして [Continue] エラーが出ても 慌てず [OK] MacOS の場合 ターミナルを起動 出てきた画面で以下のように入力し 改行 ssh -l ユーザ ID wisdom.cc.kyushu-u.ac.jp 13
ログイン Windows から TeraTerm で接続している場合 ユーザ ID, パスワードを入力 Use plain password to log in をチェックして [OK] MacOS から接続している場合 パスワードを入力 14
パスワードの重要性 ユーザーの認証に利用 他人に知られた場合の危険 ファイルの破壊 そのユーザーになりすまして悪用される etc. パスワードの管理 他人に知られないようにする パスワードの変更 : passwd コマンド メモ等 他人が読める形で残さない 類推が容易なパスワードは避ける 15
サーバからのログアウト exit コマンドによりセッション終了 Windows のログオフやシャットダウンをする前に必ず Linux からログアウト 実行中のプログラムがそのまま残る可能性あり. 16
スケジュール Linuxの概要 計算機への接続, ログイン, ログアウト Linuxの操作 ファイル操作 テキストファイルの編集 その他のコマンド ssh 公開鍵認証 17
シェル ファイルの操作やプログラムの実行を行うためのインターフェイス Windows では explorer,mac OS では Finder に相当 基本的な操作は全てシェル上で行う Linux では複数のシェルが利用可能 18
シェル - bash RedHat 系や SUSE 系で既定値のシェルとして採用されているシェル. 様々な機能が利用可能で比較的高機能. 補完機能コマンドやファイル名を途中まで入力し, TAB キーを押すと残りを補完する. コマンド履歴の呼び出し機能今まで入力したコマンドを矢印キーの上下で呼び出す. コマンド行編集機能入力中のコマンドの書き換え カットアンドペースト等. 19
bash の利用法 通常のコマンドに加え, 以下の機能を利用可能 キー操作 C-a, Home C-e, End C-u C-k C-y TABキー 機能カーソルを一つ右に移動カーソルを一つ左に移動左端に移動右端に移動全部削除カーソルから右側を切り取り直前に切り取った部分を貼り付け実行したコマンド履歴の古い方へ実行したコマンド履歴の新しい方へコマンドやファイルの補完 C-x Ctrl キーを押しながら x を押す. 20
Linux のコマンド入力 プロンプト = コマンド入力待ち [ ユーザ名 @wisdom]$ 基本的なコマンドの形式 コマンド名 オプション 引数 pwd cd test ls -l test 半角スペースで区切る 打ち間違えたら BackSpace( 後退 ), C-u ( クリア ) で訂正 改行キーを押して実行 21
Linux のコマンド入力 オプションが複数ある場合 Linux の基本的なコマンドで ハイフン 1 つ + アルファベット 1 文字 のオプションが複数ある場合, ハイフンの後にアルファベット部分を連続して書いても同じ結果が得られる. 例 ) % ls -a -l % ls -al 22
スケジュール Linuxの概要 計算機への接続, ログイン, ログアウト Linuxの操作 ファイル操作 テキストファイルの編集 その他のコマンド ssh 公開鍵認証 23
Linux におけるファイルの整理 ファイルの数が多くなると 目的のファイルを探すのが面倒 新しく作るファイルの名前を考えるのが面倒 ディレクトリ (= ファイル分類用の箱 ) を利用して整理 ファイルを目的別に分類して格納することにより, 管理 ( 探索, 再利用, 削除等 ) を容易にする. Windows のフォルダと同じ働き. fortran pascal jikken 24
ファイルの分類法 自分が管理しやすいように. 例えば 1. 研究に関連するファイルは work ディレクトリの中に置くことにする. 2. さらに, work ディレクトリの中にプロジェクト毎のディレクトリを用意し分類する. proj3 proj4 proj1 proj2 work 25
ファイルとディレクトリの構造 準備 : ディレクトリにファイルが入っている状態をこのように表すことにする. 1 つのディレクトリに 1 つのファイルが入っている状態 fortran test.f90 複数のファイルが入っている状態 test1.f90 test2.f90 ディレクトリとファイルが混在している状態 fortran test3.f90 fortran april may test.f90 test.f90 test.f90 26
サーバ全体のファイル構造 逆さにした木のような構造 一番上にルート ( 根 ) ディレクトリ etc home / tmp usr ルートディレクトリ - 階層構造の起点 usr0 usr1 a00009a work proj1 test.f90 usr9 a99999a ホームディレクトリ - ログイン時のカレントディレクトリ - ユーザー毎に用意 カレントディレクトリ - 作業対象となるディレクトリ - cd コマンドで適宜変更可 - 最初 ( ログイン直後 ) はホームディレクトリ 27
ホームディレクトリと カレントディレクトリ カレントディレクトリ (= 現在 " いる " ディレクトリ ) を基準としてファイルやディレクトリの場所を指定する. ログイン直後はホームディレクトリ (= 自分専用のディレクトリ ) に いる. 例 1: カレントディレクトリにディレクトリ作成 % mkdir work 例 2: カレントディレクトリの test.f90 をカレントディレクトリの下の work ディレクトリに移動 % mv test.f90 work 28
カレントディレクトリの確認 使い方 : pwd pwd コマンド 使用のタイミング : cd コマンドで移動した後の確認. 重要な操作 ( ファイルの削除や移動等 ) を行う前の確認. 29
ファイルの一覧表示 ls コマンド 使い方 : ls [ オプション ] [ ファイル名またはディレクトリ名 ] 例 1: カレントディレクトリのファイル, ディレクトリを表示 % ls 例 2: work ディレクトリの下のファイル, ディレクトリを表示 % ls work 例 3: カレントディレクトリの下のファイル, ディレクトリの詳細情報を表示 % ls -l 例 4: 指定したファイルの詳細情報を表示 % ls -l ファイル 30
ドットファイル ( 隠しファイル ) 普通に ls コマンドを実行した際には表示されないファイルがある. ファイル名の先頭が. ( ドット ) になっているファイル 主に設定ファイル等がこの形式のファイルになっている. ls コマンドで表示するには -a オプションを追加する. 例 : カレントディレクトリの下の隠しファイルを含めた全ファイル, ディレクトリの詳細情報を表示 % ls -al 31
ディレクトリの作成 mkdir コマンド 使い方 : mkdir 作成したいディレクトリ名 空白 ( スペース ) を忘れない 例 : workディレクトリの作成 % mkdir work work 32
別のディレクトリに移る cd コマンド 使い方 : cd [ 移動先ディレクトリ ] 別のディレクトリに移る = カレントディレクトリの変更 移動先ディレクトリを指定しない場合, ホームディレクトリに移る. カレントディレクトリ 例 1: work ディレクトリに移る. % cd work 例 2: ホームディレクトリに移る. % cd a99999a work test.f90 33
別のディレクトリに移って作業 作業対象のファイルやディレクトリがあるディレクトリに移って作業する. 例 : work ディレクトリに移って, 各プロジェクトのディレクトリを作成する. % cd work % mkdir proj1 proj2 proj3 proj4 a99999a カレントディレクトリ work test.f90 proj1 proj2 proj3 proj4 ディレクトリを移らない場合, キー入力が大変 : % mkdir work/proj1 work/proj2 work/proj3 work/proj4 34
パス : ファイルやディレクトリの場所 目的のファイルやディレクトリまでたどる際の経路 (path) にあるディレクトリを列挙 二通りの記述方法 ( どちらでも良い ) 相対パス : カレントディレクトリからたどるパス 絶対パス : ルートディレクトリからたどるパス home / 絶対パス カレントディレクトリ user9 a99999a work test.f90 相対パス 35
パスの記述方法 : ディレクトリの下 を / で記述 例 :( 今ホームディレクトリにいる状態で ) work ディレクトリの下の test.f90 を指定 相対パス ( カレントディレクトリの下の ) work の下の test.f90 work/test.f90 / home user9 a99999a work 絶対パス test.f90 ルートディレクトリの下の home の下の usr9 の下の a9999a の下の work の下の test.f90 /home/usr9/a99999a/work/test.f90 ルートディレクトリも / で記述する. カレントディレクトリ 36
パスの記述に用いる特殊な記号 一つ上のディレクトリ.. ( ピリオド二つ ) 例 : カレントディレクトリの一つ上に移る % cd.. te199999 fortran カレントディレクトリ カレントディレクトリ. ( ピリオド一つ ) 例 : 一つ上のディレクトリの test.f90 をカレントディレクトリに移動する. % mv../test.f90. ホームディレクトリ ~ 例 : ホームディレクトリの work ディレクトリに移る. % cd ~/work 37
ファイルの移動 mv コマンド 使い方 : mv 移動元移動先 例 1: test.f90 を workディレクトリに移動 % mv test.f90 work 例 2:test.f90 の名前を test2.f90 に変更 % mv test.f90 test2.f90 test.f90 test.f90 test.f90 work test2.f90 例 3:test1.f90, test2.f90, test3.f90 を test1.f90 test ディレクトリに移動 % mv test1.f90 test2.f90 test3.f90 test test1.f90 fortran test 38
ファイルの複製 cp コマンド 使い方 : cp [ オプション ] 複製元複製先 例 1: test.f90 を test2.f90 という名前で複製 % cp test.f90 test2.f90 例 2: test.f90 と test2.f90 を work ディレクトリにコピー % cp test.f90 test2.f90 work 例 3: (backupディレクトリがまだ存在しなければ) work ディレクトリ全体を backupという名前で複製 % cp -r work backup 例 4: (backupディレクトリが既に存在すれば) work ディレクトリ全体を backupディレクトリの下に複製 % cp -r work backup 39
ファイルの削除 rm コマンド 使い方 : rm [ オプション ] 削除するファイルやディレクトリ 例 1: test.f90 と hello.f90 を削除 % rm test.f90 hello.f90 例 2: work ディレクトリとその下の全てのファイルを削除 % rm -r work 例 3: 削除の前に確認 % rm -ir work 40
ファイル名の補完 * ファイル名の一部だけを入力して操作できる 例 : ファイル名の最初が test で, 末尾が f90 であるファイル全てを test ディレクトリに移 % mv test*f90 test 便利で危険な機能 思いもよらないファイルまで操作してしまうことがあるので注意. 41
Linux のファイルに関する注意 削除したら ( 原則として ) 復元不可能 ごみ箱 は存在しない. コピーや移動で既に存在するファイルがコピー先や移動先になっている場合上書きされる. この場合も復元不可能 各ファイルについて削除や上書きの前に確認する -i オプションを利用する. rm i r ディレクトリ mv i ファイル 1 ファイル 2 ファイル 3 ディレクトリ cp i ファイル 1 ファイル 2 ファイル 3 ディレクトリ 42
ファイルの内容表示 less コマンド 使用法 : less ファイル名 ファイルの内容を 1 ページずつ表示 閲覧中は以下のキーを利用 次のページへ : SPACE もしくは f 前のページへ : b 1 行下へ : Enter もしくは j 1 行上へ : k 閲覧終了 : q 43
実習 1 実習 1: ログインとファイル操作 ログイン ファイル操作 ログアウト 44
スケジュール Linuxの概要 計算機への接続, ログイン, ログアウト Linuxの操作 ファイル操作 テキストファイルの編集 その他のコマンド ssh 公開鍵認証 45
Emacs( イーマックス ) UNIX における標準的なエディタ プログラムやジョブスクリプトなどの入力に利用. 実は, メールの読み書きや Web ページの閲覧も可能. 46
Emacs 使い方 emacs ファイル名 例 : hello.c の編集 % emacs hello.c 指定したファイルがまだ存在しない場合は新規作成. 既に存在する場合は読み込んで修正. 修正後保存すると, 修正前のファイルがファイル名 ~ という名前で残る. 47
Emacs の画面 起動後 テキストウィンドウ : 文書の編集を行う [--]E_:----Emacs: hello.c (C)--L1--All--- モード行 : Emacs の状態を表示 ミニバッファ : コマンドの入力 Emacs からのメッセージ表示 ファイル名 現在のカーソル位置の行 48
Emacs のコマンド キー操作 意味 C-a 行の先頭に移動 C-e 行の末尾に移動 C-k カーソルから右を切り取り C-y 直前に切り取った部分を貼り付け C-g 取り消し ( 画面が乱れた時に使用 ) C-x C-s ファイルにセーブ C-x C-c Emacs の終了 C-x Ctrl キーを押しながら x を押す. 49
連続行のコピー 連続行の切り取り : C-k を連続して押すと連続行を切り取り可 C-k 以外の操作を行うと連続行の切り取り終了 C-y を押すとその時点で切り取られた連続行を全て貼り付け C-k 以外の操作を行った後再び C-k を押すと, それまでの切り取り分はクリアされる. 50
Emacs で変な画面になったときは 何かのコマンドを誤って入力した場合, そのコマンドに関するメッセージが表示される. まず, C-g ( 取り消し ) を数回押してみる. 元に戻ったら, 入力を続ける. 元に戻らなければ, 一旦 C-x C-c で Emacs を終了する. Save file...? には y を入力. その後, あらためて % emacs さっき編集していたファイルの名前で Emacs を起動. 51
実習 2 実習 2: テキストの編集 Emacs を使ったテキストファイルの編集 52
スケジュール Linuxの概要 計算機への接続, ログイン, ログアウト Linuxの操作 ファイル操作 テキストファイルの編集 その他のコマンド ssh 公開鍵認証 53
オンラインマニュアルの利用 使い方 : man 調べたいコマンド 例 : コマンド ls のマニュアルを表示 % man ls LS(1) ls (fileutils) 4.1 (April 2001) LS(1) NAME ls - list directory contents SYNOPSIS ls [OPTION]... [FILE]... DESCRIPTION List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftusux nor --sort. -a, --all do not hide entries starting with. -A, --almost-all do not list implied. and.. -b, --escape print octal escapes for nongraphic characters 54
漢字コード変換 使い方 nkf オプションファイル 計算機内部では文字が番号 ( コード ) で扱われる. 日本語 ( 漢字, ひらがな, カタカナ ) が扱える文字コード EUC 主に UNIX で利用されていた JIS 主にインターネットで利用 Shift-JIS 主にPC(Windows, Macintosh) で利用 UTF8 近年普及している多言語対応コード 表示や動作が異常なプログラムは変換してみる. 例 : 文字コードを UNIX 向け (UTF8) に変換 % nkf -w hello.c > hello-e.c 例 : ファイルの文字コードを判別 % nkf -g hello.c 55
サーバ間のファイル転送 使い方 scp オプション転送元ファイル転送先 例 : サーバから手元の PC へファイル転送 % scp ユーザ名 @wisdom( 略 ).jp:~/test.txt./ 手元の PC 上で操作 ~/ はホームディレクトリを意味./ は手元 PC でのカレントディレクトリを意味 例 : 手元の PC からサーバへファイル ( ディレクトリ ) 転送 % scp -r./testdir ユーザ名 @wisdom( 略 ).jp:~/ 手元の PC 上で操作 testdir はディレクトリ -r はディレクトリを転送する際に必要なオプション 56
ファイルの検索 使い方 find 検索場所 -name 検索ファイル名 指定したディレクトリ配下で指定したファイル名に該当する ファイルを検索する 例 : ホームディレクトリ配下で名前に test を含むものを検索 % find ~/ -name *test* 57
ファイル内の文字列検索 使い方 grep 検索文字列対象ファイル 指定したファイル内で検索文字列に該当する行を検索する 例 : test.c 内で文字列 abcdef を含む行を検索 % grep abcdef test.c 例 : カレントディレクトリ内の全ファイル内で 文字列 abcdef を含む行を検索 % grep abcdef./* 58
出力結果をファイルに出力 リダイレクション > 左側のコマンドからの出力を画面に表示せず右側のファイルに保存 >> 左側のコマンドからの出力を画面に表示せず右側のファイルに追加 < 左側のコマンドに対する入力として右側のファイルの内容を利用 例 ) ls コマンドの結果を dirs に出力更にその内容を整列して rdirs に保存 % ls > dirs % sort -r < dirs > rdirs hello.c hello2.c work/ work/ hello2.c hello.c 59
標準出力と標準エラー出力 (1) 画面に表示される出力は実は 2 種類ある標準出力 - 通常の出力 1> で指定 ( > のみでも可 ) 標準エラー出力 - エラーメッセージ等の出力 2> で指定 例 ) ls コマンドの結果を標準出力とエラー出力に分けてファイルに出力する % ls lr /home/lecture 1>file1 2>file2 file1 に ls の通常の実行結果が出力される /home/lecture 下には他ユーザのホームがあり それらの情報は表示できずエラーとなるため そのエラーは file2 に出力される 60
標準出力と標準エラー出力 (2) 標準出力と標準エラー出力は 通常入り混じって画面に表示される画面に表示されるものと同じように標準出力と標準エラー出力が混ざった状態の出力を保存するには下記のように指定する 例 ) ls コマンド実行結果の標準出力とエラー出力をつなげて file に出力する % ls lr /home/lecture >file 2>&1 61
出力結果を他のコマンドの入力に利用 パイプライン 左側のコマンドからの出力を画面に表示せず右側のコマンドの入力として利用 例 1) ls コマンドの結果を整列して rdirs に保存 % ls sort -r > rdirs work/ hello2.c hello.c 例 2) ls コマンドの結果を less で 1 ページずつ表示 % ls -l less 62
実習 3 実習 3: その他のコマンド find の利用 grep の利用 リダイレクションの利用 パイプラインの利用 標準エラーと標準出力の保存 63
スケジュール Linuxの概要 計算機への接続, ログイン, ログアウト Linuxの操作 ファイル操作 テキストファイルの編集 その他のコマンド ssh 公開鍵認証 64
ssh 公開鍵認証 パスワードの代わりに鍵ファイルでログイン認証を行う あらかじめ鍵ファイルのペア ( 公開鍵 秘密鍵 ) を作成しておき 秘密鍵を手元の PC に 公開鍵をサーバに置く ログイン時にクライアント ( 手元 PC) とサーバの鍵ファイルペアを検証し 正しい組み合せならログインを許可する パスワード認証に比べて 強固で安全な認証方式 65
実習 4 実習 4:ssh 公開鍵認証の設定 鍵ファイルペア ( 公開 / 秘密 ) の作成 サーバへ公開鍵を転送 公開鍵の登録 鍵認証でのログイン 66
お疲れ様でした 実習で利用した ID は 1 週間利用できます. 不明な点等は request@iii.kyushu-u.ac.jp まで. 67