udevルールの削除

udev ルールとは?
>OSがRed Hat Enterprise Linux 6の場合,サーバ対応の環境設定のscsi_deviceオペランドまたはdmmp_deviceオペランドに指定した共有ディスクのデバイスファイルのオーナー,グループ,およびパーミッションを設定するときは,udevルールファイルで設定

共有ディスクのパーミッションか。

ln -fs /dev/null /etc/udev/rules.d/70-persistent-net.rules

ネットワーク個別設定の削除
[root@localhost git-2.19.1]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-enp0s3 ifdown-ippp ifdown-routes ifup ifup-ipv6 ifup-ppp ifup-tunnel
ifcfg-lo ifdown-ipv6 ifdown-sit ifup-aliases ifup-isdn ifup-routes ifup-wireless
ifdown ifdown-isdn ifdown-Team ifup-bnep ifup-plip ifup-sit init.ipv6-global
ifdown-bnep ifdown-post ifdown-TeamPort ifup-eth ifup-plusb ifup-Team network-functions
ifdown-eth ifdown-ppp ifdown-tunnel ifup-ippp ifup-post ifup-TeamPort network-functions-ipv6

でたーーーーーーーーー ネットワーク。DMMで完膚なきまでやられたからなー

ifcfg-enp0s3をみると、UUIDはあるが、HWADDRはないぞ。

HWADDR=****
UUID=****

box作成の最適化

yum clean all

次にフラグメーションを解消する

dd if=/dev/zero of=/EMPTY bs=1M

[root@localhost network-scripts]# dd if=/dev/zero of=/EMPTY bs=1M
dd: error writing ‘/EMPTY’: No space left on device
4442+0 records in
4441+0 records out
4657184768 bytes (4.7 GB) copied, 15.4136 s, 302 MB/s

いよいよ
boxの作成
boxを作成する。コマンドは以下の通り。これで本当に出来るんか?半信半疑

vagrant package --base CentOS7 --output centOS7

ん、なんかできてるっぽい?
>vagrant package –base CentOS7 –output centOS7
==> CentOS7: Clearing any previously set forwarded ports…
==> CentOS7: Exporting VM…
==> CentOS7: Compressing package to: C:/Users/narishige/MyVagrant/centos7/centOS7

これマジ?
2018/10/27 15:04 882,256,211 centOS7

VirtualBox_Guest_Additionsのインストール

Guest Additions CD イメージの挿入は設定済み
デバイスから操作すると、

[root@localhost ~]# mkdir /media/cdrom
[root@localhost ~]# mount -r /dev/cdrom /media/cdrom
[root@localhost ~]# ls-l /media/cdrom
-bash: ls-l: command not found
[root@localhost ~]# ls -l /media/cdrom
total 51462
dr-xr-xr-x 2 root root     2048 Jul 27  2017 32Bit
dr-xr-xr-x 2 root root     2048 Jul 27  2017 64Bit
-r-xr-xr-x 1 root root      647 Aug 17  2016 AUTORUN.INF
-r-xr-xr-x 1 root root     6381 Jul 27  2017 autorun.sh
dr-xr-xr-x 2 root root     2048 Jul 27  2017 cert
dr-xr-xr-x 2 root root     4096 Jul 27  2017 OS2
-r-xr-xr-x 1 root root     4824 Jul 27  2017 runasroot.sh
-r-xr-xr-x 1 root root  8160718 Jul 27  2017 VBoxLinuxAdditions.run
-r-xr-xr-x 1 root root 17789440 Jul 27  2017 VBoxSolarisAdditions.pkg
-r-xr-xr-x 1 root root 16407888 Jul 27  2017 VBoxWindowsAdditions-amd64.exe
-r-xr-xr-x 1 root root   268496 Jul 27  2017 VBoxWindowsAdditions.exe
-r-xr-xr-x 1 root root 10046608 Jul 27  2017 VBoxWindowsAdditions-x86.exe

あれ、なんだこれ。
lsコマンドの-lはリストを縦に表示

/media/は
>一時的なマウント用のディレクトリ。マウントとは接続された装置をOSに認識させて使うといった意味になります。このディレクトリは一時的なマウント用なので、例えば「USBメモリを接続した」とかした場合にここにファイルのような扱いでそのデバイスが置かれます。/mediaとの違いは「一時的な」という部分になりますね。

/dev
>主に記憶デバイスとかを入れておくディレクトリ。UNIXでは「デバイスをファイルのような扱いにして操作する」って設計になっているのでデバイスを追加とかするとここにファイルのような扱いでデバイスが置かれます。

mountコマンド
「mount」は、HDDやUSBメモリ、DVD-ROMなどのフォーマット済みの領域(ファイルシステム)を指定したディレクトリ(マウントポイント)と一時的に結び付けてアクセスできるようにするコマンド

うお、マニアックになってきた。
mount -r は読み取り専用

shコマンド シェルの起動

[root@localhost ~]# sh /media/cdrom/VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 5.1.26 Guest Additions for Linux...........
VirtualBox Guest Additions installer
Copying additional installer modules ...
Installing additional modules ...
vboxadd.sh: Starting the VirtualBox Guest Additions.
Failed to set up service vboxadd, please check the log file
/var/log/VBoxGuestAdditions.log for details.

[root@localhost ~]# cat /var/log/VBoxGuestAdditions.log

vboxadd.sh: failed: Look at /var/log/vboxadd-install.log to find out what went wrong.
chcon: can’t apply partial context to unlabeled file ‘/usr/lib64/VBoxGuestAdditions/mount.vboxsf’
vboxadd.sh: failed: Look at /var/log/vboxadd-install.log to find out what went wrong.
vboxadd.sh: failed: modprobe vboxguest failed.

[root@localhost ~]# umount /media/cdrom
[root@localhost ~]# ls -l /media/cdrom
total 0

centos7のiptables無効化(firewalld)

[root@localhost ~]# service iptables stop
Redirecting to /bin/systemctl stop iptables.service
Failed to stop iptables.service: Unit iptables.service not loaded.
[root@localhost ~]# service iptables status
Redirecting to /bin/systemctl status iptables.service
Unit iptables.service could not be found.

なに?
あ、centos7では「iptables」から「firewalld」に変更されている。

[root@localhost ~]# systemctl is-enabled firewalld
enabled

enabledになってます。
firewalldを無効化にします。

systemctl stop firewalld

[root@localhost ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Sat 2018-10-27 12:18:33 JST; 9s ago
     Docs: man:firewalld(1)
  Process: 623 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
 Main PID: 623 (code=exited, status=0/SUCCESS)

Oct 27 12:01:06 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
Oct 27 12:01:09 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
Oct 27 12:18:33 localhost.localdomain systemd[1]: Stopping firewalld - dynamic firewall daemon...
Oct 27 12:18:33 localhost.localdomain systemd[1]: Stopped firewalld - dynamic firewall daemon.

activeがinactive(dead)で無効化されているのでOK
続いて自動起動

[root@localhost ~]# systemctl is-enabled firewalld
enabled

firewalldの自動起動を無効化

[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# systemctl is-enabled firewalld
disabled

しゃああああああああああああああああああ

iptablesの無効化

iptablesとは一般的なLinuxに搭載されているパケットフィルタ
パケットとは、ネットワーク上を流れるデータの事。パケットフィルタとは、このパケットを選別して、通すものと通さないものを分けるということを意味
iptablesは商用製品に匹敵する、とても高機能かつ高性能なパケットフィルタ
サーバ自身を守ることはもちろん、パケット転送などにも対応しているため、ネットワークアダプタを二つ搭載したマシンの上で動作させパケット転送制御を行うことで、ネットワーク型ファイアウォールとしても使用可能

現在設定されているポリシー
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all — anywhere anywhere ctstate RELATED,EST ABLISHED
ACCEPT all — anywhere anywhere
INPUT_direct all — anywhere anywhere
INPUT_ZONES_SOURCE all — anywhere anywhere
INPUT_ZONES all — anywhere anywhere
DROP all — anywhere anywhere ctstate INVALID
REJECT all — anywhere anywhere reject-with icmp-ho st-prohibited

Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all — anywhere anywhere ctstate RELATED,EST ABLISHED
ACCEPT all — anywhere anywhere
FORWARD_direct all — anywhere anywhere
FORWARD_IN_ZONES_SOURCE all — anywhere anywhere
FORWARD_IN_ZONES all — anywhere anywhere
FORWARD_OUT_ZONES_SOURCE all — anywhere anywhere
FORWARD_OUT_ZONES all — anywhere anywhere
DROP all — anywhere anywhere ctstate INVALID
REJECT all — anywhere anywhere reject-with icmp-ho st-prohibited

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
OUTPUT_direct all — anywhere anywhere

Chain FORWARD_IN_ZONES (1 references)
target prot opt source destination
FWDI_public all — anywhere anywhere [goto]
FWDI_public all — anywhere anywhere [goto]

Chain FORWARD_IN_ZONES_SOURCE (1 references)
target prot opt source destination

Chain FORWARD_OUT_ZONES (1 references)
target prot opt source destination
FWDO_public all — anywhere anywhere [goto]
FWDO_public all — anywhere anywhere [goto]

Chain FORWARD_OUT_ZONES_SOURCE (1 references)
target prot opt source destination

Chain FORWARD_direct (1 references)
target prot opt source destination

Chain FWDI_public (2 references)
target prot opt source destination
FWDI_public_log all — anywhere anywhere
FWDI_public_deny all — anywhere anywhere
FWDI_public_allow all — anywhere anywhere
ACCEPT icmp — anywhere anywhere

Chain FWDI_public_allow (1 references)
target prot opt source destination

Chain FWDI_public_deny (1 references)
target prot opt source destination

Chain FWDI_public_log (1 references)
target prot opt source destination

Chain FWDO_public (2 references)
target prot opt source destination
FWDO_public_log all — anywhere anywhere
FWDO_public_deny all — anywhere anywhere
FWDO_public_allow all — anywhere anywhere

Chain FWDO_public_allow (1 references)
target prot opt source destination

Chain FWDO_public_deny (1 references)
target prot opt source destination

Chain FWDO_public_log (1 references)
target prot opt source destination

Chain INPUT_ZONES (1 references)
target prot opt source destination
IN_public all — anywhere anywhere [goto]
IN_public all — anywhere anywhere [goto]

Chain INPUT_ZONES_SOURCE (1 references)
target prot opt source destination

Chain INPUT_direct (1 references)
target prot opt source destination

Chain IN_public (2 references)
target prot opt source destination
IN_public_log all — anywhere anywhere
IN_public_deny all — anywhere anywhere
IN_public_allow all — anywhere anywhere
ACCEPT icmp — anywhere anywhere

Chain IN_public_allow (1 references)
target prot opt source destination
ACCEPT tcp — anywhere anywhere tcp dpt:ssh ctstate NEW

Chain IN_public_deny (1 references)
target prot opt source destination

Chain IN_public_log (1 references)
target prot opt source destination

Chain OUTPUT_direct (1 references)
target prot opt source destination

chain forward, chain inputなどがある

Chain INPUT (policy DROP)
Chain FORWARD (policy DROP)
Chain OUTPUT (policy ACCEPT)

ルーティングして、input, forward, outputしてアプリケーションに接続している。
あああああああああ、これやべーやつだ。

selinuxの無効化

selinuxとは
セキュリティ関連のLinuxカーネル制御機能。Linuxディストリビューションではなく、強制アクセス制御機能を加えるモジュール。
Security-Enhanced-Linuxの略称
SELinuxを利用すると細かいアクセス制御が可能になる。例えば、サービス毎に最小限の権限を与え管理することなどが可能になる
root権限ですら制限をかけることも可能

なるほど、awsのAMIみたいなもんか。

[vagrant@localhost ~]$ getenforce
Enforcing

詳細を見てみる
[root@localhost ~]# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31

statusがenabledになってますね。これを変更していきます。

vi /etc/sysconfig/selinux

SELINUX=disabled

[root@localhost ~]# getenforce
Disabled

rsync

rsync は、UNIXシステムにおいて、差分符号化を使ってデータ転送量を最小化し、遠隔地間のファイルやディレクトリの同期を行う

digコマンド

-「dig」コマンドはDNSサーバに問い合わせることで、ドメイン名からIPアドレスを調べるコマンド
– nslookupコマンドやhostsコマンドとよく似た機能

[vagrant@localhost app]$ dig www.google.co.jp
-bash: dig: コマンドが見つかりません

あれ? もう死にそうだー

centosの時刻を合わせる

[vagrant@localhost python]$ date
2018年 7月 28日 土曜日 22:37:15 JST

そんなあほな。
[vagrant@localhost python]$ sudo yum -y install ntp
[vagrant@localhost python]$ sudo ntpdate ntp.nict.jp
29 Jul 07:45:47 ntpdate[4594]: step time server 133.243.238.244 offset 32583.641597 sec
[vagrant@localhost python]$ date
2018年 7月 29日 日曜日 07:46:03 JST

.bashrc

bashrcとは

bashは「シェルの種類のひとつで、shをパワーアップしたシェル」。
(ログインした後に画面上から)bashを起動したときに読み込まれる設定ファイル
シェルはsh、bash、csh、ksh、tcsh、zshなど

vi ~/.bashrc

# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions

ログイン時に「.bashrc」は読み込まれません。
ログイン時には「.bash_profile」というファイルが読み込まれます。

 .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
source ~/.bashrc

source ~/.bashrcとすると、.bashrcを読み込む。もちろん、source ~/.bash_profileで、bash_profileを読み込む

centosでgrepする

まず、vagrantにログインして、適当にディレクトリを作ります。

[vagrant@localhost ~]$ mkdir grep
[vagrant@localhost ~]$ cd grep
[vagrant@localhost grep]$ git version
git version 2.2.1

git hubから適当に機械学習のコードをgit cloneしてきます。

[vagrant@localhost grep]$ git clone https://github.com/nyk510/machine-learning.git
Cloning into 'machine-learning'...
remote: Counting objects: 112, done.
Receiving objects: 100% (112/112), 2.49 MiB | 673.00 KiB/s, done.
remote: Total 112 (delta 0), reused 0 (delta 0), pack-reused 112
Resolving deltas: 100% (55/55), done.
[vagrant@localhost grep]$ ls
machine-learning
[vagrant@localhost machine-learning]$ ls
black_scholes.py  figures  gibbs_sampling.py  prml  readme.md  requirements.txt

では、適当にblack_scholes.pyでSIGMAが使われている箇所を抜き出しています。

[vagrant@localhost machine-learning]$ grep SIGMA black_scholes.py
SIGMA = 0.30
d = -(np.math.log(S_0 / K) + ((r - SIGMA * SIGMA / 2.) * T)) / (SIGMA * np.power(T, 0.5))
V_c = S_0 * stats.norm.cdf(-d + SIGMA * np.power(T, .5)) - K * np.exp(-r * T) * stats.norm.cdf(-d)
V_p = K * np.exp(-r * (T - t)) * stats.norm.cdf(d) - S_0 * stats.norm.cdf(d - SIGMA * np.power(T - t, 0.5))
    s_j_t = S_0 * np.exp((r - SIGMA * SIGMA / 2.) * T + SIGMA * rand_n * np.power(T, 0.5))
    s_j_t = S_0 * np.exp((r - SIGMA * SIGMA / 2.) * T + SIGMA * rand_n * np.power(T, 0.5))

行番号をつけたい時は grepに -nをつける

[vagrant@localhost machine-learning]$ grep -n SIGMA black_scholes.py
18:SIGMA = 0.30
22:d = -(np.math.log(S_0 / K) + ((r - SIGMA * SIGMA / 2.) * T)) / (SIGMA * np.po      wer(T, 0.5))
23:V_c = S_0 * stats.norm.cdf(-d + SIGMA * np.power(T, .5)) - K * np.exp(-r * T)       * stats.norm.cdf(-d)
24:V_p = K * np.exp(-r * (T - t)) * stats.norm.cdf(d) - S_0 * stats.norm.cdf(d -       SIGMA * np.power(T - t, 0.5))
29:    s_j_t = S_0 * np.exp((r - SIGMA * SIGMA / 2.) * T + SIGMA * rand_n * np.p      ower(T, 0.5))
35:    s_j_t = S_0 * np.exp((r - SIGMA * SIGMA / 2.) * T + SIGMA * rand_n * np.p      ower(T, 0.5))

ファイル名のみ

[vagrant@localhost machine-learning]$ grep -l SIGMA *
black_scholes.py
grep: figures: ディレクトリです
grep: prml: ディレクトリです

ファイル名と行番号は”-rn”

[vagrant@localhost machine-learning]$ grep -rn import *.py
black_scholes.py:9:import numpy as np
black_scholes.py:10:import matplotlib.pyplot as plt
black_scholes.py:11:import scipy.stats as stats
gibbs_sampling.py:7:import numpy as np
gibbs_sampling.py:8:import matplotlib.pyplot as plt
gibbs_sampling.py:9:import scipy.stats as stats

あーこれこれ、やりたかったの。