第1章 Ubuntu一般
ユーザー管理
rootユーザーの初期設定
Ubuntuの初期ではrootユーザーが使えない. これは初期設定ではrootのパスワードが未設定であるためだ. したがってsuコマンドでrootユーザーを使えるようにするためには, 初めにrootユーザーのパスワードを設定する必要がある.
sudo passwd root
これでパスワードを設定すれば,以降suコマンドでrootユーザーになることができる.
rootのシェルを使うだけであれば, 以下のようにOSインストール時に作成したユーザー(というかsudoでroot権限が使えるユーザー)でsudoを使い,root権限のシェルを使えるようになれる.
sudo -s
ユーザーの一覧
登録されているユーザー名を確認するには, 以下のようにして「/etc/passwd」の中身を確認する.
cat /etc/passwd
ユーザー名とともに付随情報も列挙される.
付随情報なしでユーザー名のみを取り出したい場合は 次のようにする.
cut -d: -f1 /etc/passwd
ユーザーの切り替え
su <username>
カーネル起動時の出力表示
起動に時間がかかるなど,起動において異常がある際の参考になる.
dmesg
出力が多い場合は,以下のようにしてlessやmoreで見ることも可能.
dmesg | less
crontab
重大な注意
オプションなしのcrontabコマンドは避ける
crontabコマンドをオプションなしで実行してはならない. 万が一実行してしまった場合は,Ctrl+Cで中断すること. なぜならば,crontabをそのまま実行すると,crontabファイルの新規作成が行われるからである. 誤ってこの新規ファイルを保存してしまうと,既存のcrontabが上書きされて消えてしまう.
-rオプションに警戒
-rオプションを付けると即座にcrontabファイルが削除される. 編集のための-eオプションは頻繁に使うが, 「e」と「r」はキーボード上で隣にあるのでタイプミスに要注意.
crontabの編集
crontabの設定は以下のように行う.
crontab -e
これでエディタを開き,以下の文法に従って実行コマンド,実行日時を指定する.
分 時 日 月 曜日 実行コマンド
「*」にするとすべてのタイミングとなる. 曜日は0-7 (日,月,..., 日) の数値か,sun - satの3文字の小文字で指定する. 毎週金曜日の17時に実行したい場合は次のようになる.
00 17 * * 5 <command>
エディタの変更
select-editor
このコマンドによって下記のように設定の入力画面が表示されるので, 目的の番号を入力する.
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /usr/bin/code
5. /bin/ed
Choose 1-5 [1]: 2
crontabの確認
現在のユーザーのcrontabを確認するには以下のコマンドを使う.
crontab -l
なお,-lの後にユーザー名を入力すると,他のユーザーのcrontabも確認可能. sudoなどで行うこと.
ネットワーク
IPアドレスの確認
ip a
これでIPアドレスを表示できる.
接続の確認
ping <IP address>
接続先のIPアドレスを引数に与えることで,通信が可能か確認できる.
マウント
外付けディスク
一般ユーザーによる書き込み権限の付加
そのままマウントすると,一般ユーザーでディスクに書き込みできない. マウント時に次のように設定することで書き込み可能にできる.
id
sudo mount -o uid=<userid>,gid=<groupid>
idコマンドで確認したid番号を,mountコマンドに与える. ネットではマウント後にchownコマンドで権限付加できるという記述があったが, そのコマンド自体が権限で拒否されて失敗した.
NASのマウント
sudo apt-get install cifs-utils
sudo mkdir /mnt/nas(他の名前でも可)
sudo mount -t cifs //172.17.26.172/disk1 /mnt/nas -o username=<name>,password=<pw>
GUIでNASに接続するのは容易であるが,CUIでもNASに接続できる.
cfi-utilsをインストールしていなければインストールする.
username
とpassword
はあらかじめNASに登録したユーザーIDとパスワード.
OneDriveのマウント
クラウドにはGoogle Driveもある. しかし大学のライセンスではOneDriveの方が容量が大きいため, ここではOneDriveのマウントを試みた.
Rcloneの準備
Note
作業時参照サイト(2024.2.7):
https://www.fujimiya-san.com/archives/2439
まずはcurlとRcloneをインストールする.
sudo apt install curl
sudo -v ; curl https://rclone.org/install.sh | sudo bash
続いてRcloneの設定を行う.
rclone config
次のように「n」で新リモートを作成し,名前を指定する.
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
Enter name for new remote.
name> onedrive_utokyo
続いて赤と緑の文字でストレージの種類を尋ねられるため, ここでOneDriveを探してその番号を入力する. 以下の例では34番.
...
33 / Microsoft Azure Files
\ (azurefiles)
34 / Microsoft OneDrive
\ (onedrive)
35 / OpenDrive
\ (opendrive)
...
Storage> 34
クライアント関連は未入力.
Option client_id.
OAuth Client Id.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_id>
Option client_secret.
OAuth Client Secret.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_secret>
その次はregionの設定. ほとんどの場合は1.
Option region.
Choose national cloud region for OneDrive.
Choose a number from below, or type in your own string value.
Press Enter for the default (global).
1 / Microsoft Cloud Global
\ (global)
2 / Microsoft Cloud for US Government
\ (us)
3 / Microsoft Cloud Germany
\ (de)
4 / Azure and Office 365 operated by Vnet Group in China
\ (cn)
region> 1
高度な設定はNo.
Edit advanced config?
y) Yes
n) No (default)
y/n> n
ブラウザーが開き,Microsoftアカウントへのログインが求められる. 希望のアカウントを入力しログインする. 自動でブラウザの画面が送られてきたが, フリーズしていたため何度か繰り返して待つと動くようになった.
2024/02/07 20:08:40 NOTICE: If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=CXNFxfxcx7kFU0xTNmRlig
2024/02/07 20:08:40 NOTICE: Log in and authorize rclone for access
2024/02/07 20:08:40 NOTICE: Waiting for code...
2024/02/07 20:13:44 NOTICE: Got code
入力すると最後の行のように直ちにGot codeと表示され次へ進む.
1を選ぶ.
Option config_type.
Type of connection
Choose a number from below, or type in an existing string value.
Press Enter for the default (onedrive).
1 / OneDrive Personal or Business
\ (onedrive)
2 / Root Sharepoint site
\ (sharepoint)
/ Sharepoint site name or URL
3 | E.g. mysite or https://contoso.sharepoint.com/sites/mysite
\ (url)
4 / Search for a Sharepoint site
\ (search)
5 / Type in driveID (advanced)
\ (driveid)
6 / Type in SiteID (advanced)
\ (siteid)
/ Sharepoint server-relative path (advanced)
7 | E.g. /teams/hr
\ (path)
config_type> 1
ドライブを選ぶ.1つしかないので1を選択.
Option config_driveid.
Select drive you want to use
Choose a number from below, or type in your own string value.
Press Enter for the default (b!B6VhbJMLPUO0uUYMDaOGBLuNH5pR9adBsJsyk5sSt3cZ9VcKJQa-Sreej4jO7Oeq).
1 / OneDrive (business)
\ (...)
ドライブが見つかり,表示内容で良ければy.
Drive OK?
Found drive "root" of type "business"
URL: ...
y) Yes (default)
n) No
y/n> y
最後の確認.良ければy.
...
- drive_type: business
Keep this "onedrive_utokyo" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y
完了すると以下のトップ画面になる. 先ほどのドライブが登録されている. qで終了する.
Current remotes:
Name Type
==== ====
onedrive_utokyo onedrive
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q>
rcloneのリモートのマウント
Note
参照: Rclone公式
https://rclone.org/commands/rclone_mount/
ドライブを登録できたらそれをマウントする. マウントもrcloneのコマンドで行う.
--vfs-cache-mode writesというオプションをつけないと
NOTICE: "onedrive_utokyo" refers to a local folder, use "onedrive_utokyo:" to refer to your remote or "./onedrive_utokyo" to hide this warning
というメッセージが出る. またマウント先のディレクトリの権限を775にしないと
2024/02/07 20:57:31 mount helper error: fusermount3: user has no write access to mountpoint /mnt/onedrive
2024/02/07 20:57:31 Fatal error: failed to mount FUSE fs: fusermount: exit status 1
のようなエラーが出た.
--daemonオプションをつけるとバックグラウンドでつないでくれる.一方でこのオプションがないと新しくターミナルを開かないと作業できなくなるので注意.
rclone mount onedrive_utokyo:/ /mnt/onedrive/ --vfs-cache-mode writes --daemon
最後に今後自動でマウントするために設定ファイルに書き込む.
storage_name: <マウント先> rclone rw,noauto,nofail,_netdev,x-systemd.automount,args2env,vfs_cache_mode=writes,config=<rclone config file で表示されるパス>,cache_dir=/var/cache/rclone 0 0
マウント先とconfigファイルのパスを適宜入れること.
アンマウント
sudo umount <マウント先>
Note
オプション:
- -f: 強制アンマウント
- -l: -fでアンマウントできない場合でも強制的にアンマウント
LVMの構成
単純な例
LVMは複数のディスクをまとめて一つのストレージとして扱う技術である. 複数のディスクにまたがるほど大容量のデータを保存したいときに役立つだろう.
まずは必要なライブラリをインストールする.
sudo apt install lvm2
sudo apt install xfsprogs
続けて,ここで自動でディスクがマウントされた場合はアンマウントする:
sudo umount <disk>
すでにパーティションが作成されている場合(lsblkなどで確認), それも削除する.
sudo wipefs -a <partition; e.g. /dev/sda>
ここから作業.
sudo pvcreate <e.g. /dev/sda>
sudo vgcreate <hdddGroup> </dev/sda /dev/sdb ...>
sudo lvcreate -l 100
<!-- FREE -n lv0 <hddGroup> -->
sudo mkfs -t xfs </dev/hddGroup/lv0>
sudo mount -t xfs </dev/hddGroup/lv0> <mount先>
次にgeditなどで/etc/fstabに追記する. これは自動でmountが行われるようにするための作業である.
sudo gedit /etc/fstab
追記内容は以下:
/dev/mapper/hddGroup-lv0 <mount先> /hdd xfs defaults 0 0
ストライプ化する例
ストライプ化によりデータを細かく分割して分散保存する. これにより高速化が期待される.
事前準備として,必要なライブラリをインストールする.
sudo apt install lvm2
sudo apt install xfsprogs
続けて,ここで自動でディスクがマウントされた場合はアンマウントする:
sudo umount <disk>
すでにパーティションが作成されている場合(lsblkなどで確認), それも削除する.
sudo wipefs -a <partition; e.g. /dev/sda>
ここからが本筋の作業である. まずはまとめたいディクスにLVMのラベルを付与する.
sudo pvcreate </dev/sda /dev/sdb ...>
これらをボリュームグループにまとめる.
sudo vgcreate <vg name> </dev/sda /dev/sdb ...>
ストライプ化した論理ボリュームを作成する. -iはストライプ数で,まとめたいディスクの数にすればよい. -Iはストライプサイズ.適切な値はよくわからない.
sudo lvcreate -l 100
<!-- VG -i <ディスク数> -I 64 -n <lv name> <vg name> -->
最後に論理ボリュームにファイルシステムを作成する.
sudo mkfs.xfs -f /dev/<lv name>/<vg name>
これで/dev/
LVMの認識
LVM構成のディスクを指しているにもかかわらず,LVMが認識されない場合, LVMを認識する作業が必要である.
以下のようにボリュームグループ (vg) のスキャンとアクティブ化,論理ボリューム (lv) のスキャンを行う.
sudo vgscan
sudo vgchange -ay
sudo lvscan
これでLVMをマウントできるようになるはず.
上記のコマンドを使用するにはlvm2のインストールが必要である.
dpkg -l | grep lvm
をしてインストールされていないことがわかれば,
sudo apt install lvm2
でインストールする.
プロセス
プロセスの確認
ps -<option>
ps -x
など.実行中のプロセスを表示する.
または,
top
でリアルタイムでプロセスを確認できる. Windowsでいうタスクマネージャーのような感じ.
バックグラウンドプロセス
出力の確認
出力は/proc/<process ID>/fd/1
に格納されている.
したがって
cat /proc/<process ID>/fd/1
で確認可能.プロセスIDはpsなどで調べておく. 実行コマンド名や実行時間などをもとに目的のプロセスを探すこと.
シャットダウン・再起動
shutdownコマンドの引数でシャットダウン, シャットダウンの場合 (--poweroff):
shutdown -P now
マシンの電源を切る.shutdownコマンドのデフォルトがこれなので,オプションはなくてもよさそうだ. なお「-h」引数でも同じである.
ただし,オプションを「-H」とした場合はCPUのみ停止し,マシン自体の電源は切らないので注意.
再起動の場合 (--reboot):
shutdown -r now
最後にはnowのみならず任意の時刻を指定できる. 5分後であれば「shutdown -h +5」,3時であれば「shutdown -h 03:00」のようにする.
なお,時刻指定をした場合は次のコマンドでシャットダウン/再起動の予定をキャンセルできる:
shutdown -c