Linux/CentOS/Ubuntu コマンド/設定ファイル 備忘録

Linux/CentOS/Ubuntu でのたまにしか使わないコマンドの備忘録。

## ユーザー管理
```bash
#ユーザー名([user])の追加：
adduser [user]
#ユーザー名([user])のパスワード初期設定： 
passwd [user]
```

## 設定もろもろ

```bash
# CentOS のバージョンの確認。
more /etc/redhat-release
less /etc/os-release
#eth0の確認
ethtool eth0
# メモリの確認
free -h
# コアの情報
/proc/cpuinfo
# ネットワークの情報
route -n
# serviceの起動/再起動
service デーモン名 start/restart
# CentOS7以降推奨のコマンド
systemctl start デーモン名 #サービス起動
systemctl restart デーモン名 #サービス再起動
systemctl enable デーモン名 #自動起動設定
systemctl status デーモン名 #状況を表示
netstat -antup | less
chkconfig --list #サー
chkconfig --add サービス名 #サービスを追加
chkconfig --del サービス名 #サービスを削除
```

## Path関係

```bash
# その設定でリンクできるライブラリの一覧
ldconfig -p
# 実行ファイル"./a.out"が参照している共有ライブラリの一覧とその状況
ldd ./a.out
# Macの場合のldd
otool -L ./a.out
```
[Mac版lddコマンドは otool -L - Qiita](https://qiita.com/doranekohc/items/243d5c50960c129ebe44)
## 環境変数

`SSH_CONNECTION`

## パッケージ管理

```bash
# yumでインストールしたアプリの表示
yum list installed
```

## その他

```bash
# アプリケーションの参照している共有ライブラリの情報が見れる
ldd /PATH/of/application
# tarでgzipで /PATH/of/dest 以下を  /PATH/of/file.tar.gz にtarでアーカイブ 
# 但し /PATH/of/dest/exclude 以下を除く
tar -cvzf /PATH/of/file.tar.gz --exclude /PATH/of/dest/exclude /PATH/of/dest
# CentOSのバージョンの確認
cat /etc/redhat-release
# リダイレクトをファイルの末尾に追記(既存の内容を上書きしない)
cat some_file >> another_file
# 端末で入力するコマンドとその出力をファイルに記録
script script_log.log
# 時計を表示
date
# ネットワーク内のホストのリストを簡便に確認する
arp -a
# IPMIのアドレス情報を確認
ipmitool lan print
```

### xterm
```bash
#大きいフォントサイズのxterm
xterm -fn 10x20
#フォントも変える: Hackフォントでフォントサイズを10に指定
xterm -fa 'Hack' -fs 10
```

Hackフォントがインストールされていない場合は
`wget https://github.com/source-foundry/Hack/releases/download/v3.003/Hack-v3.003-ttf.zip`でとってきたファイルを展開して、`~/.local/share/fonts/`(存在していなければmkdir)に置く。
`fc-list |less`で置いたフォントが認識されていれば、成功。
Ref: [CentOSにfree fontを導入 - はかせになりたい](https://sonotaropp.hatenablog.com/entry/2019/07/23/160049)

Ubuntuの場合は`sudo apt install fonts-hack*`でインストール完了。インストールされたフォントを調べるには`fc-list`こまんど。

### ssh
```bash
#hostA経由でhostBに入りたいとき
ssh -XC hoge@hostA -t ssh -XC hogehoge@hostB
#hostA経由でhostBに入ってjupyter notebookを立ち上げてその8888をlocalhostの8888に持ってきたい時のコマンド
ssh -XC hoge@hostA -L 8888:hostB:8888 -t ssh -XC hogehoge@hostB
```

### sshfs
```bash
# hostAの/home/hoge/dirをローカルの/home/hogehoge/ldirに read onlyでマウント
sshfs hoge@hostA:/home/hoge/dir /home/hogehoge/ldir -o ro
# ローカルの/home/hogehoge/ldirにマウントされているリモートのディレクトリをアンマウント
fusermount -u /home/hogehoge/ldir
```

# 設定ファイル群
## `/etc/*`
```bash
cat /etc/chrony.conf
cat /etc/environment
cat /etc/exports # NFSの設定
cat /etc/fstab # ディスクのマウント情報
cat /etc/group
cat /etc/gshadow
cat /etc/hostname # ホスト名
cat /etc/hosts #登録しているホスト群の情報
cat /etc/netconfig
cat /etc/netplan/01-netcfg.yaml #ネットワーク設定 (Ubuntu)
cat /etc/networks
cat /etc/os-release
cat /etc/passwd
cat /etc/pbs.conf #OpenPBSの設定ファイル
cat /etc/redhat-release # CentOSのバージョンの確認
cat /etc/shadow
cat /etc/subgid
cat /etc/subuid
cat /etc/system-release 
cat /etc/sysconfig/network-scripts/ifcfg-eth0 # eth0の情報(CentOS)
cat /ets/sysconfig/network # NISドメイン等の情報
cat /etc/yp.conf
cat /ect/ypserv.conf
```

# トラブルシューティング
## `yum install epel-release`でEPELリポジトリがインストールできない
コマンドを実行しても、謎の「何もしない」みたいなレスポンスが返ってくるときは、EPELが入っているけど、有効になっていないというケースがある。

```bash
yum repolist all | grep -i epel
```
で、「diable」とか「無効」になっていることがある。その場合は

```bash
yum-config-manager --enable epel
```
で有効にしてから、冒頭のコマンドを叩けば、EPELリポジトリが追加できる。

参考にしたサイト: [あらためてEPELリポジトリの使い方をまとめてみた - Qiita](https://qiita.com/yamada-hakase/items/fdf9c276b9cae51b3633#3-epel%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B)

## NICが二つの筐体で、両方にケーブルを指すと期待通りに動作しない

もしかして、片方のNICで"never use this network for default route"にチェックを入れてないからかも。

参考にしたサイト: [【nmtui】CentOS8のネットワーク初期設定～VMwarePlayer/VirtualBox～ | SEの道標](https://milestone-of-se.nesuke.com/sv-basic/linux-basic/nmtui/)
[linuxでNIC 2枚挿し以上の場合のデフォルトゲートウェイ | Mad Grandfather Company](https://www.kaeru3.com/?p=85)