Linux 操作のメモ

2020 年 12 月 18 日 改訂

Linux の操作をメモしています.Scientific Linux に関するメモですが,CentOS でも状況は変わらないそうです.


コマンド

df -h

マウントされているディスクの消費容量。-Th にすると、ファイルシステムの情報が表示される。

lsblk

List block devices。現在利用できるブロックデバイスをツリー状に一覧表示する。ストレージの構成やデバイス番号を確認できる。

grep ^@ <fastqファイル名> | wc -l

fastq ファイル内部のリード数をカウントします.@ で始まる行数を調べています.

grep ^\> <fastaファイル名> | wc -l

fasta ファイル内部のレコード数をカウントします.> で始まる行数を調べています.
注意: > の前にバックスラッシュを入れることでエスケープします.これをしないと,> がファイルを作成するなどリダイレクションと判断され,インファイル内部の情報が消えてしまいます.


ソースからコンパイルしてソフトウェアをインストール

オープンソースとして公開されている LINUX (UNIX) 用ソフトウェアをインストールする方法を紹介します。大津 (2010) の 5.2 節 (P233〜) を参照しました。

Configure スクリプトが用意されている場合の、ソースの取得からインストールまでの基本的な流れは、次のようになります。

(1) 圧縮されたソースファイル (.tar.gz ファイル) をダウンロードして展開

(2) configure スクリプトを実行して Makefile を作成

「./configure」のように、カレントディレクトリをつけて実行。configure スクリプトには、通常、インストール先などの環境を設定するオプションが用意されている。--help でオプションが表示される。例えば、「--prefix」は、インストール先を指定するオプション。

(3) make でコンパイル

Makefile を利用したコンパイルを行う。make コマンドを引数なしで実行すると、カレントディレクトリに保存されている Makefile に記述された手順にしたがってコンパイル& リンクが行われ、オブジェクト (bin ディレクトリなどの内部) が作成される。
 make のターゲットには、make install などのように、実在しない「擬似ターゲット」を指定できる。all: 全てのオプジェクトを作成。clean: オプジェクトを消去 (make をやり直す場合に使用)。install: 完成したプログラムをインストール。

(4) make install でインストール

インストール先が、スーパーユーザの書き込み権現が筆意ようなディレクトリ (/usr/local ディレクトリ以下など) の場合は、sudo コマンドが必要。

configure スクリプト:コンパイルまでの手順を簡略化するシェルスクリプト。これを使うと、使っている OS によってコンパイラやライブラリが異なるので、環境の相違を吸収して、ソースファイルを修正することなくコンパイルからインストールまでの作業が行える。実行すると、Makefile を作成する。

Makefile:分割されたソースプログラムをコンパイルしたり、インストールするなどに使われる。必要なライブラリの場所や依存関係など、様々な情報が記述されている。

(2020 年 11 月)

 

CentOS のインストール

CentOS のインストール

Mac で BOOTABLE USEB を作成する

最後の sudo dd .... を入力した後、Password:と表示されたまま、二時間近く待たされました。動いているか確認するには、他のターミナルから

sudo killall -INFO dd

を入力します。すると、進行状況が表示されます(参考) 。

[inouejun:Downloads]$ sudo dd if=/Users/inouejun/Downloads/CentOS-7-x86_64-DVD-2003.iso.img.dmg of=/dev/disk2 bs=1m
Password:
3044+0 records in
3043+0 records out
3190816768 bytes transferred in 4699.560445 secs (678961 bytes/sec)
3057+0 records in
3056+0 records out
3204448256 bytes transferred in 4719.991381 secs (678910 bytes/sec)

(2020 年 5 月)

 

sudoer の追加

スーパーユーザーとして sudoer を追加する手順です。あらかじめ、新たに sudoer となるユーザーから、利用する PC の公開鍵ファイルと希望ユーザー名を受け取っておく必要があります。

sudoer の追加

useradd コマンドで、新規ユーザーを追加します。
-m オプション: ユーザーのホームディレクトリが存在しない場合、作成する

sudo useradd -m xxx

ls コマンドで、ホームディレクトリができたことを確認します。

ls /home

usermod コマンドで、wheel グループに xxx を追加します。このコマンドを使うと、ユーザーのホームディレクトリやグループ、パスワードなどを変更できます。
wheel
:スーパーユーザー (root) 特権を得られるユーザーの属するグループの名称。
-aG:セカンダリグループに xxx を追加。

sudo usermod -aG wheel xxx

xxx が sudoer になったことを確認します。getent コマンドは、ユーザーやグループの一覧を表示します。

getent group wheel

passwd コマンドで、xxx のパスワードのロックを解除します。
-u:ロックアウトされているアカウントのロックを解除する。
-f:強行。

sudo passwd -uf xxx

パスワードアンロックの確認をします。

sudo less /etc/shadow

 

SSH 接続の設定

.ssh ディレクトリと秘密鍵の権限については、こちらを参照してください。

su コマンドで、スーパーユーザーから一般ユーザーである xxx になります。

sudo su - xxx

mkdir コマンドで、.ssh ディレクトリを作成します。

mkdir .ssh

chmod コマンドで、.ssh ディレクトリにのパーミッションとアクセス権を設定します。.ssh ディレクトリの権限については、こちらを参照してください。

chmod 700 .ssh

ディレクトリのパーミッションを確認します。以下のようになっているはずです。

drwx------ 27 xxx staff 864 12 20 10:43 .ssh

ls -la

.ssh ディレクトリに入ります。

cd .ssh

emacs などのエディタで authorized_keys ファイルを作成し、公開鍵に書き込みます。

emacs authorized_keys

chmod コマンドで、authorized_keys ファイルのパーミッションを変更します。
644: 所有者には書き込みと読み込みだけさせて、所有グループには読み込みだけさせる。

chmod 644 authorized_keys

ls コマンドで、公開鍵ファイルのパーミッションを確認します。「-rw-r--r--」となっているはずです。

ls -l

上記の設定を完了すると、新たなユーザーは以下のコマンドでログインできます。

ssh -p 23456 xxx@155.55.555.555

以上です。WI さんに伺いました。ありがとうございました (2020 年 12 月)。

 

外付け HD のマウント
2TB 以上の外付けハードディスクを認識させる

こちらを参照。2TB 以上の HDD を認識させるために、parted というユーティリティを利用する (2020 年 5 月)。

lsblk

現在利用できるブロックデバイスをツリー状に一覧表示する。

sudo parted -l

確認

sudo parted /dev/sdg

詳細は、こちらを参照。

sudo mkfs.xfs -f /dev/sdg

CentOS7 デフォルトのファイルシステムである XFS (こちらを参照) でフォーマット。

sudo mount /dev/sdg /mnt/newhome

マウント


Linux machine に常時認識させる

USB につないだ外付けのメーカーを調べる.

[root@T7600 /]# dmesg | egrep "^(scsi [0-9]*:[0-9]*:[0-9]*:[0-9]*|sd [0-9]*:[0-9]*:[0-9]*:[0-9]*)" | less
....
scsi 8:0:0:0: Direct-Access I-O DATA HDEL-UT 0008 PQ: 0 ANSI: 6
scsi 9:0:0:0: Direct-Access LaCie d2 Quadra v3C 051E PQ: 0 ANSI: 6
sd 8:0:0:0: [sdc] Very big device. Trying to use READ CAPACITY(16).
sd 8:0:0:0: [sdc] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
.....
sd 9:0:0:0: [sdd] Very big device. Trying to use READ CAPACITY(16).
sd 9:0:0:0: [sdd] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)

fstab に詳細を記入する.

[root@T7600 /]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Tue Jun 9 16:59:30 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=ed23c81d-8000-4997-af1a-8fba78df2423 / ext4 defaults 1 1
UUID=fc8b074a-8982-4f97-bd07-115ba559851f /boot ext2 defaults 1 2
UUID=ac162ab3-8c8f-4e2f-8ada-84dfba8b1dff swap swap defaults 0 0
UUID=c21e02cd-cd44-4b2b-82e7-f6568a5a97e8 /mnt/lacie ext4 noauto,exec,user,rw,nodiratime 1 2
UUID=040f6cab-8f8b-4a0c-ad8f-799bf3cdbdf5 /mnt/iodata ext4 noauto,exec,user,rw,nodiratime 1 2
UUID=fdbdd971-f6c1-42ad-8a90-321b479480df /data ext4 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0

UUID を出力する.

[root@T7600 /]# blkid
/dev/sdb3: UUID="ed23c81d-8000-4997-af1a-8fba78df2423" TYPE="ext4"
/dev/sdd: UUID="c21e02cd-cd44-4b2b-82e7-f6568a5a97e8" TYPE="ext4"
/dev/sda1: LABEL="/data" UUID="fdbdd971-f6c1-42ad-8a90-321b479480df" TYPE="ext4"
/dev/sdb1: UUID="fc8b074a-8982-4f97-bd07-115ba559851f" TYPE="ext2"
/dev/sdb2: UUID="ac162ab3-8c8f-4e2f-8ada-84dfba8b1dff" TYPE="swap"
/dev/sdc: UUID="040f6cab-8f8b-4a0c-ad8f-799bf3cdbdf5" TYPE="ext4"




Mac の外付け HDD と共有

HDD を、Mac で Mac OS 拡張 (ジャーナリング) で初期化して、Linux で読み込む、のが良いです。mac OS 拡張は HFS+ という名前のファイルシステムに相当します。HFS+ だと2TB 以上のフォーマットが可能です。さらに、一つのファイルが、4.5GB (?) 以上でも保存できます。ファイルシステムによっては、ファイルサイズが大きすぎると、保存できない場合があります (2020 年 6 月)。

すぐには認識されない:
Buffalo の外付け HD を USB でつなげたところ,GUI 上に表示はされるのですがダブルクリックすると,マウントできませんでした.

Unable to mount location
Error mounting: mount: unknown filesystem type 'hfsplus'

この外付け HD は Mac でフォーマットしていたため問題が生じたようです.そこで、 Mac で format した HD を Linux で認識させます。

Mac でハードディスクを初期化:
こちらにを参考にしました。ありがとうございました (2020 年 5 月)。

Mac > ディスクユーティリティ > Mac OS 拡張で初期化。

mac OS 拡張は HFS+ という名前のファイルシステムに相当します。Mac にはジャーナリングという信頼性を高める仕組みが備わっている。ジャーナリングがあると、Linux から読み書きができない。そこで、ジャーナリングをオフにする。まず、df コマンドで、Macで認識されているディスク名を確認する。ターミナルに以下を入力:

(base) [inouejun:Volumes]$ df -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
....
/dev/disk2s2 5.5Ti 1.3Gi 5.5Ti 1% 78 4294967201 0% /Volumes/2
(base) [inouejun:Volumes]$

そして、ジャーナリングをオフにする。ターミナルから入力:

(base) [inouejun:Volumes]$ diskutil disableJournal /dev/disk2s2
Journaling has been disabled for volume 2 on disk2s2

その後、パーミッションを変更:

chmod 777 /Volumes/2

Linux で読み込み
外付け HD を Mac から取り外して、Linux machine に繋いでマウントすれば良いです (QuiitaCeommunity ENTerprise Operating System を参照しました)。RHEL 系の CentOS で HFS+ をマウントするには、kmod-hfsplus をインストールする必要があります。

# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
# yum install kmod-hfsplus

HFS+ パーティションをマウントします。partedでパーティションを確認。

# parted -l

その後、マウントします。

# mount -t hfsplus -o ro /dev/sdb2 /media/hfsHD
(# mount /dev/sdb2 /media/hfsHD でもマウントできました [CentOS7])



CentOS 7 のネットワーク設定

CentOS 7 でネットワーク設定を行う

 

Ubuntu 16.04 のネットワーク設定

The network manager in Ubuntu 16.04 is broken. To fix it, you'll need to manually edit a few config files. Please follow the steps below to see if you are able to connect to the network.

1. cd /etc/NetworkManager/system-connections/

2. sudo vim (name of wired connection usually "wired connection 1")
tip: hit tab to flesh out filename as the filename spaces need to be escaped.

Look for this stanza and ensure it is the same (have the user add credentials):

[802-1x]
altsubject-matches=
ca-cert=/etc/ssl/certs/ca-certificates.crt
eap=peap;
identity=TIDA_USERNAME
password=TIDA_PASSWORD
phase2-altsubject-matches=
phase2-auth=mschapv2

3. Reboot or restart both network manager and the network stack.
sudo service networking restart
sudo service network-manager restart

4. In the GUI (upper right hand side) enable the connection.
- It should connect in 15-30 seconds.


CentOS7 に Python3 をインストール

以下を参照しました (2020 年 5 月)。
https://usado.jp/spdsk/2017/11/16/post-2672/

yum でインストールできれば良いのですが、yum インストールで必要な IUS リポジトリが yum からインストールできません (こちらなど)。そこで、ソースコードから Python3 をインストールしました。


ベーシック認証設定方法

あるディレクトリ内部にある html ファイルをブラウザで表示する際に、ユーザー名とパスワードを聞かれるように設定する方法です。

apacheベーシック認証設定方法
http://library.denet.ad.jp/2014/06/apache-1.html

CentOS6.3 で書かれていますが、CentOS7.5 でもできました。httpd.conf に書き込むやり方が簡単でした。

1. パスワードを作成し、ファイルに保存。

htpasswd -c /etc/httpd/conf/.htpasswd htuser

2. httpd.conf ファイルの最後に以下のコメントを記入。

<Directory "/var/www/html/">
AuthType Basic
AuthName "Please Enter ID and pass"
AuthUserFile /etc/httpd/conf/.htpasswd
Require valid-user
</Directory>

 

Firewall

CentOS7 で SSH のポートー番号を変更する

SSH のポート番号を変更

ネコでもわかるシリーズ 2, 7,

ファイアウォール iptables を簡単解説 (さくらのナレッジ)