Chapter 8

Linux

Subsections of Linux

Remote Desktop

WindowsからLinux (Ubuntu22.04) へのリモート接続の方法

サーバ側(Ubuntu)の設定

  1. 「設定」の「共有」を開く
  2. 「リモートデスクトップ」をクリック
  3. 「リモートデスクトップ」と「リモートコントロール」をONにする
  • Ubuntu 20.04 LTSまではxrdpサーバをインストールする必要があったが,Ubuntu22.04 LTSからはすでにインストールされてるので不要になったみたい

クライアント側(Windows)の設定

  1. リモートデスクトップ接続を開く
  2. 「コンピュータ名」にIPアドレス,「ユーザー名」にアクセスするユーザー名を記入し,接続をクリック

Problems

xrdpがのactive化でwarningが出る

  1. $ sudo systemctl status xrdpと打つと,[WARNING] Cannot read private key file /etc/xrdp/key-pem: Permission deniedと表示される
  2. xrdpユーザをssl-certグループに追加
    $ sudo gpasswd -a xrdp ssl-cert
    
  3. xrdpのリスタート
    $ sudo systemctl restart xrdp
    

画面が真っ暗のまま動かない

  • デスクトップとリモートで同時ログインはできないみたい → デスクトップをログアウトすれば良い!
  • リモート接続を終了する場合はUbuntuでlog outすれば自動で接続が切れる

Windowsからアクセスするとキーボードの種類によらずJIS配列になる

  • xrdpの設定を変更
    $ cd /etc/xrpd/
    $ sudo mv km-00000411.ini ~/km-00000411.ini-org
    $ sudo cp km-00000409.ini km-00000411.ini
    $ sudo systemctl restart xrdp
    
  • こちらを参照

参考

Launcher for Linux

1. Ulauncher

Linux系のlauncherの一つ。 設定済みのキーボード・ショートカットとかtabキーとかが使用できるため,こちらをインストール。

install

  1. こちらからUbuntu用のインストーラーをダウンロード
  2. 次のコマンドでインストール
    sudo apt install ./ulauncher_x.y.z_all.deb
    

settings

  1. アプリを起動
  2. 歯車マークをクリックし,設定画面を開く
  3. HotkeyをAlt+Spaceに変更
  4. Color Themeを変更
  5. 設定ファイルは~/.config/ulauncher/settings.jsonに存在
  6. 以下のExtensionsを追加
    • X11 Windows Swicher ($ ws )
    • Browser Bookmarks ($ bb)

2. Albert

Linux系で使用されているluncherの一つ。 Linuxで設定しているキーボード・ショートカットが使用できなかったためアンインストール済み。

install

ホームページからインストール方法を確認できる。 今回はxUbuntuの22.04バージョンでインストール。

echo 'deb http://download.opensuse.org/repositories/home:/manuelschneid3r/xUbuntu_22.04/ /' | sudo tee /etc/apt/sources.list.d/home:manuelschneid3r.list
curl -fsSL https://download.opensuse.org/repositories/home:manuelschneid3r/xUbuntu_22.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_manuelschneid3r.gpg > /dev/null
sudo apt update
sudo apt install albert

uninstall

sudo apt-get remove albert
  • アンストールだけする場合はsudo apt-get remove albert
  • albertのパッケージと他の依存パッケージをアンインストールする場合はsudo apt-get autoremove albert
  • configファイルとalbertのデータファイルを削除したい場合はsudo apt-get purge albert

Proxy settings

Ubuntu 22.04 LTS

/etc/environment

export no_proxy=localhost,127.0.0.1,localhost,*<domain>
export ftp_proxy=http://<proxy server>:<port>/
export http_proxy=http://<proxy server>:<port>/
export https_proxy=http://<proxy server>:<port>/
export all_proxy=socks://<proxy server>:<port>/
export FTP_PROXY=http://<proxy server>:<port>/
export HTTP_PROXY=http://<proxy server>:<port>/
export HTTPS_PROXY=http://<proxy server>:<port>/
export ALL_PROXY=socks://<proxy server>:<port>/

apt

/etc/apt/apt.confに以下を追記

Acquire::http::Proxy "http://proxy.cc.yamaguchi-u.ac.jp:8080/";

Discord

  1. whereis discordでパスを確認
  2. 上記で確認したディレクトリ下にあるdiscord.desktopExec=/usr/share/discord/Discord部分を以下のように書き換え
    Exec=env http_proxy=http://<proxy-server>:<port> https_proxy=http://<proxy-server>:<port> /usr/share/discord/Discord --proxy-server="http://<proxy-server>:<port>"
    
  3. reboot

Windows for Linux

/etc/environment

http_proxy=http://<proxy>:<port>
https_proxy=https://<proxy>:<port>

/etc/bash.bashrc

export http_proxy=http://<proxy>:<port>
export https_proxy=https://<proxy>:<port>

/etc/apt/apt.conf

Acquire::http::Proxy "http://<proxy>:<port>";
Acquire::https::Proxy "http://<proxy>:<port>";

/etc/wgetrc

http_proxy = http://<proxy>:<port>
https_proxy = http://<proxy>:<port>
ftp_proxy = http://<proxy>:<port>

anaconda3/envs/

proxy_servers:
    http: http://<proxy server>:<port>
    https: https://<proxy server>:<port>

次のコマンドで設定内容を確認

$ conda config --show

Spec confirmation (Ubuntu)

プロセッサー,グラフィック,OSは「設定」で確認可能

OSのバージョン

$ cat /etc/issue

CPUコア数

$ cat /proc/cpuinfo
  • processor: プロセッサのID
  • model name: cpuの種類
  • cpu cores: コアの数

メモリ

$ sudo dmidecode --type memory

demidecodeコマンドではハードウェアの物理RAMサイズと情報を確認でき, コンピュータのDMIテーブル(SMBIOS)情報を表示してくれる.

メモリ以外にも以下の項目を確認可能 0. bios

  1. system
  2. baseboard
  3. chassis
  4. processor
  5. memory (memory controller)
  6. memory (memory module)
  7. cache
  8. connector (port connector)
  9. slots (system slots)
  10. (on board devices)

cpuやmemoryの使用率等の確認

$ top

or

$ htop

or

$ ps aus | less

or

$ free
  • -h: 単位などを見やすく表示
  • -m: MB単位で表示(デフォルトはkB)
  • -g: GB単位で表示

ディスク確認方法

SSD or HDD

$ cat /sys/block/sda/queue/rotational
  • 0: SSD
  • 1: HDD

型番の確認

$ sudo lshw -c disc

ディスク使用率

$ df -h

その他

  • sudo fdisk -l
  • sudo blkid
  • df -Th
  • sudo du -sm ./* | sort -rn | head -5

GPU確認方法

GPUの種類

$ lspci | grep -u nvidia

nvidia driverのバージョン

$ cat /proc/driver/nvidia/version

GPUの使用状況

$ nvidia-smi -l

Shortcut

エディタのショートカットキー

移動系

ショートカットキー 概要
Ctrl+Home ファイルの先頭に移動
Ctrl+End ファイルの末尾に移動
Home 行頭に移動
End 行末に移動
Ctrl+← 単語の先頭に移動
Ctrl+→ 単語の末尾に移動

分割

ショートカットキー 概要
ショートカットキー 概要
Ctrl+\ ※\は右上の|のキーボード 編集画面を分割表示
Ctrl+1or2or 3 … 分割した画面間を移動

ファイルやディレクトリの開き方

ショートカットキー 概要
Ctrl+N 新規ファイル
Ctrl+Shift+N 新規ウィンドウ
Ctrl+o ファイルを開く

文字列検索

ショートカットキー 概要
Ctrl+F エディタ内検索
Ctrl+H エディタ内置換
F3 次の検索結果にジャンプ
Shift+F3 前の検索結果にジャンプ

Shell script

シェルスクリプト

$mv arg.sh ~/bin/arg.sh

※このあとパス設定が必要だけど、すでにbinにパスが設定されてた… パスの確認方法は

$printenv PATH

シェルスクリプトの作成手順

  1. ~/bin にbzdirファイルを作成

  2. ファイルに書き込めたら次のコマンドを実行

    $chmod +x bzdir.sh 
    
    • ファイル内容は ~/bin/bzdir を参照
  3. ~/.bashrcに下記の記述を書き込む

    "alias bzdir='bzdir.sh'
    
  4. $source ~/.bashrcを実行

Command

コンソールの起動

  1. Ctel+F[2~3] 以下のコマンドを実行することでコンソール画面からXwindowを起動することもできる
    $ startx
    
  2. ログインするアカウント名を入力
  3. passwordを入力

X windowへの復帰

  • Ctrl-Alt-F7

コマンド停止方法

  • Ctrl + C
  • コマンド kill
    1. ps r を入力
    2. PID(プロセスID)を確認
    3. kill [PID] を入力
  • コマンド kill②
    1. ps auxw | grep yes (axでもOK)で実行しているコマンドyesのPID(2列目)を検索
    2. kill [PID] を入力
  • コマンド kill③
    1. topでPIDを確認
    2. topコマンド実行中にkをタイプ
    3. killしたいPIDを入力&Enter
    4. Send PID <PID> signalでEnter
  • killall yesと入力 →※同じコマンド名のものはすべてkillされる

topコマンド

topコマンドでよく使う or 便利そうな機能

コンソール上で入出力を受け付けない際の対処法

  1. Ctrl-sで入出力を受け付けなくなる
  2. Ctrl-q で復帰

aptコマンド(Ubuntu Linux等)

コマンド 概要
インストールされているパッケージの一覧を表示する $apt list –installed
インストールされているパッケージを最新状態にする $apt-get update
パッケージをインストールする $apt-get install package [package …]

ユーザーの追加方法

$ useradd <option> <user name>

オプション

  • m: ホームディレクトリを追加

パーミッション

  • 権限の変更
    $ chmod u+w 
    
  • ユーザー所有権の変更
    $ chown <user name>:<group name> <file name>
    
    • <user name>:<group name>はユーザー所有権とグループ所有権
    • グループ所有権は省略可

パスワードの変更

$ passwd <user name>

バックグラウンド処理

$ <command> &

&をつけ忘れた場合

  1. コマンド実行中にCtrl-zでコマンドを中断
    • bgとタイプ → バックグラウンド処理に移行
    • fgとタイプ → コンソール上で処理を再開

エイリアス

エイリアスの作成

alias em=`emacs`

※ここではemという名前でemacsのエイリアスを作成

エイリアスを無効にしてコマンドを実行

\<コマンド>

エイリアスの確認

alias <エイリアス名>

エイリアスの削除

  1. unalias em
  2. .bashrc のエイリアス設定も消去

シンボリックリンク

ホームディレクトリにディレクトリ ~/c と ~/tmp を作成し、tmpから c へのシンボリックリンクを作成するには下記のようにする。

$cd
$mkdir c tmp
$cd tmp
$ln -s ../c

シンボリックリンクの削除

$unlink c または rm c ※ただし rm c で削除する場合は rm c/ としてしまうと元のディレクトリの中身まで削除してしまうので注意!!

リダイレクト

>をリダイレクトよぶ。リダイレクトの左で実行したコマンドの標準出力が、リダイレクトの右に書い たファイルに出力される。

(例)ls -IR の出力をファイルls-IRに書き込む

$ls -IR > ls-IR

パイプ

|をパイプとよぶ。パイプの左側で実行したコマンドの標準出力が、パイプの右側のコマンドの標準入 力になる。

(例)

  1. ファイルから文字列PIを含む行をすべて抜き出す

    $less math.h | grep IR
    

    【補足】math.hのファイルのパス(所在)を調べるにはlocateコマンドをインストールして使う

    $ sudo -E apt-get update
    $ sudo -E apt install mlocate
    $ locate math.h
    
  2. ファイルの先頭から50行のみを出力する。

    head -50 <ファイル名> | less
    
  3. ファイルの末尾50行のみを出力する。

    tail -50 <ファイル名> | less
    
  4. CSVファイルの2列目のみを抜き出して表示する。

    $cut -f 2 -d "," retu.csv
    

    -f が表示する項数、-dが区切りの文字、-fと-dは基本一緒に使う

  5. 2つのファイルの各行をくっつけて別のファイルに出力する。

    $paste -d " " data[1-2].txt > data3.txt
    

    または

    $paste -d " " data1.txt data2.txt > data3.txt
    

文字列の置換

ストリームエディタ sed を使うと、文字列の置 換を簡単にできる。あるファイル中の文字列 1 を 文字列 2 に置換した内容を出力したいときには以 下を実行する。

$ sed −e ”s/文字列1/文字列2/g” <ファイル名>

※gはすべての文字列を置換するためのオプション。これがない場合は各行で一番はじめにあった文字列1のみが置換される。

(例)

  1. ファイルの空白をすべて削除

    $sed -i -e "s/ //g" ファイル名
    
    • -i はファイルの中身そのものの変更
    • gはすべてのマッチした文字列を置換(gの指定がなく1行に2つ以上文字がある場合は1つ目しか置換されない
  2. ファイルの連続した5つのスペースをタブに変換してその結果をファイルに保存

    $sed -i -e "s/[(space)(tab)][(space)(tab)]*/[(tab)]/g" ファイル名
    

    ※(space)および(tab)はそれぞれスペースキー、タブキーをクリック

  3. ファイルの各行のはじめ(行頭)にある空白およびタブをすべて削除する方法

    $ sed -i -e "s/^[ \t]*//" test
    

    ^は行頭を表す

使用されているポートの確認

  • service名から確認したい場合は sudo lsof -i -P | grep <service>
  • 特定のポート番号の確認は sudo lsof -i:<port>
  • ssコマンドでの確認 ss -atnu

その他の様々なコマンド

コマンド 概要
locate <ファイル名> そのファイルがシステム上のどこにあるか、一覧を表示するコマンド
which <コマンド> 実行されるコマンドがどこのパスにあるか表示
diff ファイル1と2の違いを表示
cd - もとのディレクトリに移動
df ディスク使用率を表示
wc <ファイル名> ファイルに含まれる文字数や行数を表示
nkf -g <ファイル名> 日本語のテキストファイルの文字コードを判断
nkf -w <ファイル名> テキストファイルの文字コードをUTF-8に変換