20201212のLinuxに関する記事は13件です。

LPIC1 合格しました。

【LPIC1 合格しました。】

過去の記事の最後で「【今年、残り3ヶ月の目標】 AWS認定クラウドプラクティショナー、LPIC1の資格を取得する!!」と目標を立てていました。
クラウドプラクティショナーに続き、LPIC1にも合格することができました。良かったです。

下記にて、LPIC1の試験について書いていきたいと思います。

約1ヶ月で合格を目指すには。

101、102の試験勉強ともに2週間で自分なりに計画立てましょう。
土日、通勤時間、平日の夜など空き時間を見つけてPing-tに取り組みましょう。

・用意するもの

確実に1発合格するためには、2つの教材を用意した方が良いです。

Ping-t
Linux教科書 LPIC レベル1 スピードマスター問題集 Version5.0対応

この2つです。

Ping-tについては、101試験対策は無料で使うことが出来ます。
101の試験合格後に102試験対策のために1ヶ月の有料プラン(2,400円)を購入しましょう。

スピードマスター問題集については、kindle版が少し安いです。
メルカリなどで購入しても良いと思います。

・私が実施した学習手順

1、LPIのサイトで試験範囲を一通り確認する。(下記のURLから確認できます。)

LPIC-1の試験勉強を始めるにあたり、最初に試験の概要などを確認することは大事です。

2、スピードマスター問題集を1週する。

難易度はやや高めですので、軽く1周解きましょう。
解説も確認しながら進めましょう。
Ping-tより先に問題集を実施することで、実際の試験に近いPing-tの問題に気楽に取り組めると思います。

3、Ping-tの問題を1周解いてみる。

分野別でたくさんの問題があります。
最初は結構間違えると思いますが、やっていくうちになんとなく覚えてきます。
決して難しい試験ではないのですし、大丈夫。

4、Ping-tの模擬試験で60%ぐらい解けるまで受け続ける。

3で解いた問題がランダムで60問の模擬試験として出題されます。
60%ぐらい解けるまで受け続けます。

※最終的には、常に85%を目指します。

5、スピードマスター問題集の模擬試験を受ける。

この模擬試験は、難しい問題が多いので6,7割解ければ十分です。
実際の試験にもここからよく出題されるのでしっかり覚えましょう。

※また、問題集の星3は確実に覚えましょう。
星1は捨てても大丈夫です。笑

6、Ping-tのコマンド問題に取り組む

101の試験においては、コマンド問題の割合は低いので最悪飛ばしても大丈夫です。
心配であれば、ランダム形式で10問ずつぐらい取り組んでみましょう。

102の試験においては、コマンド問題が101より出るので飛ばさずに解きましょう。
1周ひとまず解いた後にランダム形式でより実践に近い形で問題を解きます。
6割ぐらい解けるようになれば実際の試験でも対応できると思います。

※試験では、Ping-tで出題されるような長いコマンドは出題されないと思って良いと思います。
コマンドのみ、オプションのみ、LPIの試験範囲に記載されているファイル名などの出題が多いと思います。

7、最終仕上げ。Ping-tの模擬試験を3回連続で85%以上取る。

最後は、1〜6の総まとめとして模擬試験を受けます。
連続で85%程理解できれば、後は問題集の模擬試験や星3を再度確認して試験に臨みましょう!

【おすすめ】 LPIの試験範囲を確認

以下のLPIのサイトで試験範囲を最低でも1回は目を通すことをおすすめします。

総重量に関しては、それほど気にしなくていいと思います。
それ以下の説明、主な知識分野、使用されるファイル、用語、ユーティリティのリストには目を通しておくと良いと思います。

自分の経験の範囲ですが、コマンド問題がこのリストの中からよく出ていたと思います。

101 試験範囲| Linux Professional Institute
102 試験範囲| Linux Professional Institute

image.png

LPICの試験範囲についての記事

下記は、私がLPIC学習中に投稿した記事です。
私が個人的に覚えておいた方が良さそうかなと思ったところです。
LPIC1に受験される方のお役に少しはなれるかなと思っています。

101

Linux ディレクトリ階層
Linux システムアーキテクチャ【ランレベル
Linux シンボリックとハードリンクの特徴
Linux シェル変数、環境変数
Linux 主なパッケージ管理システム
UNIX ファイルディスクリプタ
Linux パーミッション
Linux プロセス
Linux PATH環境変数

102

TCP/IP その1
Linux 標準シェル(bash)の主な環境設定ファイル
Linux 特殊なシェル変数
Linux シェルスクリプト
Linux ウェルノウンポート
TCP/IP その2
Linux /etc/passwd, /etc/group 【重要】
Linux netstat
Linux ネットワークの設定ファイル
Linux nmcli

おまけ

約1ヶ月程でLPIC1を取得することができました。
平日は通常業務がありましたが、土日や通勤時間を利用してなんとか合格できました。

image.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Dromiを使いProxy下のAndroid端末でLINEを使う

Dromiとは

HTTP, Socks ProxyをVPNとして接続するアプリです。
https://play.google.com/store/apps/details?id=org.sandrob.drony&hl=ja&gl=US

環境

  • 認証付きProxy必須環境
  • 22番ポートはProxyなしで通信可能
  • AzureにSquidでHTTP proxyを構築済み

叩くコマンド

# 外のProxyサーバで行う
/etc/ssh/sshd_configの
GatewayPorts
をyesにする

# APにするPCで行う
ssh -gNfL 0.0.0.0:8888:localhost:8080 username@ipadress
sudo create_ap [無線LANデバイス名] [共有元デバイス名] --no-dnsmasq -d --ieee80211n --redirect-to-localhost [SSID] [パスワード] &
ip a (ap0のIPアドレスを確認する)

主な流れ

  1. ssh -gNfL 0.0.0.0:8888:localhost:8080 username@ipadressで0.0.0.0へAzureのHTTP proxyを持ってくる
  2. create_apを活用して無線APを建てる
  3. スマホでWi-Fiに接続する  このとき,Proxyにはスマホ側のデフォルトゲートウェイをアドレスに設定します。
  4. Deoniで先程と同様にProxyの設定をする

create_apについて

実行してできる仮想ネットワークデバイスのIPアドレスは固定になります。
それがスマホ側のデフォルトゲートウェイになります。

Deoniの設定

google, ブラウザ, Twitterなど元からHTTP proxyに対応しているアプリはDirect設定にすると正常に通信可能です。
LINE, Discord, InstagramなどHTTP proxyに非対応のアプリはVPN経由で通信しようとし,結果的にProxyを通せます。

犠牲にしたもの

VPNに繋がってしまう関係でKDE Connectが死にました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Dronyを使いProxy下のAndroid端末でLINEを使う

Dronyとは

HTTP, Socks ProxyをVPNとして接続するアプリです。
https://play.google.com/store/apps/details?id=org.sandrob.drony&hl=ja&gl=US

環境

  • 認証付きProxy必須環境
  • 22番ポートはProxyなしで通信可能
  • AzureにSquidでHTTP proxyを構築済み

叩くコマンド

# 外のProxyサーバで行う
/etc/ssh/sshd_configの
GatewayPorts
をyesにする

# APにするPCで行う
ssh -gNfL 0.0.0.0:8888:localhost:8080 username@ipadress
sudo create_ap [無線LANデバイス名] [共有元デバイス名] --no-dnsmasq -d --ieee80211n --redirect-to-localhost [SSID] [パスワード] &
ip a (ap0のIPアドレスを確認する)

主な流れ

  1. ssh -gNfL 0.0.0.0:8888:localhost:8080 username@ipadressで0.0.0.0へAzureのHTTP proxyを持ってくる
  2. create_apを活用して無線APを建てる
  3. スマホでWi-Fiに接続する  このとき,Proxyにはスマホ側のデフォルトゲートウェイをアドレスに設定します。
  4. Deoniで先程と同様にProxyの設定をする

create_apについて

実行してできる仮想ネットワークデバイスのIPアドレスは固定になります。
それがスマホ側のデフォルトゲートウェイになります。

Dronyの設定

google, ブラウザ, Twitterなど元からHTTP proxyに対応しているアプリはDirect設定にすると正常に通信可能です。
LINE, Discord, InstagramなどHTTP proxyに非対応のアプリはVPN経由で通信しようとし,結果的にProxyを通せます。

犠牲にしたもの

VPNに繋がってしまう関係でKDE Connectが死にました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linuxとは

Linuxとは

Linuxは、Mac OS、Windowsなどと同じOSの一種です。
リーナス・トーバルズ氏によって開発され、1991年に最初のバージョンが公開されました。

1.OS(オペレーティングシステム)
コンピューターのすべてのハードウェアを管理しているソフトウェアで、コンピュータを使う際の土台になるもの。
ハードウェア:目に見えるもの全般(ディスプレイ、キーボード、マウス、プリンターなど)で、物理的なものであるもの。
ソフトウェア:目に見えないもの(Windows、アプリなど)。

主な特徴

フリー(無料)かつオープンソース

Linuxカーネル以外に様々なディストリビューション(頒布携帯)が存在する

1.Linuxカーネル
リーナス・トーバルズ氏によって開発され、無料で誰でも自由に配布できることから、様々な企業・団体がLinuxカーネルを基本にして、独自のLinuxディストリビューションを再配布している。

2.Linuxディストリビューション
Linuxのアプリケーションやライブラリをひとまとめにして、PCにインストールすれば使える状態にした配布物。
(ライブラリ:汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたもので、他のプログラムに何らかの機能を提供するコードの集まり。)

リポジトリを提供
ソフトウェアパッケージの集合体をインターネット上に提供する。

1.リポジトリ
仕様、デザイン、ソースコード、テスト情報、インシデント情報など、システム開発プロジェクトに関連するデータの一元的な貯蔵庫。

セキュリティーが強くメンテナンスしやすい
コマンドで簡単にカーネル(OSの中核部分に位置するソフトウェア)の操作が可能なため、OSやネットワークの設定がしやすくなっています。
その為、比較的大規模な開発などでLinuxはよく使われます。

参考元はこちら
https://www.sejuku.net/blog/4948)
https://eng-entrance.com/you_can_do_linux)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

opkgの管理

opkgについて

opkgはLinux向け軽量パッケージ管理システムです。
ipkgからのforkで、パッケージデータの拡張子は.ipkです。

課題が発生するパターン

管理が結構原始的で、
野良パッケージデータをインストールした場合等、
ディストリビューション標準外のバージョンより新しいパッケージをinstallした場合、
removeしたとしても履歴にバージョン情報が残ってしまい、
元のバージョンをinstallしようとしても、
インストールした事の有るバージョンより低いバージョンの為、跳ねられてしまいます。
--force-reinstall を指定しても無駄でした。
色々と試しにinstallしてみる派だと、とても困ります。

解決法

結論としては、例としてLEDE 17.01 のパスで表現すると、
/overlay/upper/usr/lib/opkg/status
の中で該当するパッケージ情報を削除することで、
installした事の有るバージョンの履歴情報を消す事ができ、
一度もinstallした事がない状態に戻す事が出来ます。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

v4l2loopbackをDKMSでビルド

OBSの出力をヴァーチャルカメラとするには、v4l2sinkを使う必要があります。
v4l2sinkを使うには、v4l2loopbackをカーネルに組み込む必要があります。

ubuntuのaptでインストールできるモジュールは古いようで、使えないので
ソースからビルドする必要があります。
ビルドしてカーネルに組み込みますが、カーネルのアップデートが行われるともう一度
同じ作業をしなくてはいけません。
(OBS→ZOOMという案件があって、当日カーネルのアップデートしてしまってヴァーチャルカメラが使えないと焦ることがありました
なんとか気がついて再度ビルド&インストールで事なきを得ましたが、、)

そのような手間を省くためDKMSでビルドしたいと思っていたら、v4l2loopbackのgitにやり方書いてありました

mkdir -p ~/src/
cd ~/src/
version=0.12.5
# download and extract the tarball
curl -L https://github.com/umlaeute/v4l2loopback/archive/v${version}.tar.gz | tar xvz
# build and install the DKMS-module (requires superuser privileges)
dkms add -m v4l2loopback -v ${version}
dkms build -m v4l2loopback -v ${version}
dkms install -m v4l2loopback -v ${version}

※ダウンロード→展開したフォルダを/usr/srcに移動してからdkmsのコマンドを始める必要があります

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

CentOSで日付・曜日・時間を指定して定期実行したいんだよなあ

前の記事

CentOSで定期(繰り返し)実行したいさー

この記事ではシェルスクリプト作成、systemd作成、timer作成を1回やったことあるから大体要領分かるよ、な人向けです。
やったことねえ!やったけど忘れた!な人(自分も含めて)は上記のリンクをクリック!

毎日特定の時間に実行

シェルスクリプト。
テキストにただ書き込むだけの簡単なやつ。
(権限付与を忘れずに…)

/cocoa.sh
#!/usr/bin/bash
echo `date` oneetyannnimakasenasa-i >> /chino.txt

シェルスクリプトをキックするやつ。

/etc/systemd/system/cocoa.service
[Unit]
Description=cocoa

[Service]
Type=simple
ExecStart=/cocoa.sh

[Install]
WantedBy=multi-user.target

ここからが本題!
シェルスクリプトをキックするやつを起こすタイマー。

/etc/systemd/system/cocoa.timer
[Unit]
Description=cocoa

[Timer]
Unit=cocoa.service
OnCalendar=*-*-* 9:55:00

[Install]
WantedBy=multi-user.target

タイマー起動!

コマンド
systemctl enable cocoa.service
systemctl enable cocoa.timer
systemctl start cocoa.timer

さて9:55を過ぎた後にchino.txtを開くと…
image.png
ちゃんと書き込まれてますです。

OnCalendarってどんなふうに設定するん?

一番細かい指定方法を見るのが分かりやすいと思います。
毎月1日~4日の月 or 火曜12:00に起動 という指定です

OnCalendar=Mon,Tue *-*-01..04 12:00:00
  • Mon,Tue = 月曜と火曜
  • *-*- = 年と月は指定しないよ(ワイルドカード)
  • 01..04 = 1日~4日( .. で範囲指定ができる)

OnCalendarは複数指定できる

毎月1日~4日の月 or 火曜に起動
ただし、 月曜は12:00に起動、火曜は13:00に起動 という指定です。

OnCalendar=Mon *-*-01..04 12:00:00
OnCalendar=Tue *-*-01..04 13:00:00

指定したタイミングに丁度電源落ちていて実行できなかった時

下記のように Persistent=true を記載しておくと OS起動時に実行漏れしてたやつは即実行 してくれます。

OnCalendar=Mon *-*-01..04 12:00:00
Persistent=true

仮にちょっと長い間電源が落ちてるなどして、いろんなバッチ処理が溜まっていると、OS起動と同時にそいつらが一斉に走り始めちゃいます。
その辺の考慮漏れに注意です。

蛇足

今回もDocker上のCentOS8で検証しました。

『毎日〇時に再起動してるから起動後〇時間後の指定でいいや』 だと、イレギュラーな再起動をした時に想定外なタイミングで実行されちゃいます。
イレギュラーな作業をしてる時って他のことって頭から抜けちゃってるんだよね(´・ω・`)
なので、相対的な指定ではなく、時間を決め打ちした指定の方が良いかと思います。

参考サイトさん

https://wiki.archlinux.jp/index.php/Systemd/タイマー

バージョン

Windows10 Pro バージョン1909 OSビルド19042.685
Docker Desktop:3.0.0(50684) Engine:20.10.10 Compose:1.27.4
CentOS Linux release 8.2.2004 (Core)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

さよなら CentOS、こんにちは Rocky Linux?

CentOS 8 が 2021-12-31 でサポート終了 となります。
従来 2029年までとされていたのですが、期間が大きく短縮されました。

注意: 本記事には、上記が発表された 2020-12-09 からの新情報は今の所ありません。また詳細を知りたい方は、以下の解説記事がわかりやすいです(本記事でも参考にさせていただいています)。
https://zenn.dev/koduki/articles/26eb2df8109a39

本記事ではディストリビューション選択時の注意点や移行先について考えてみたいと思います。

影響と注意点

特別な事情がない限り、CentOS 8 を積極的に選択する理由は無くなりました。 今後は別のディストリビューションを使用しましょう。

個人視点ですが、以下のような点に注意が必要と考えられます。

  • RedHat が移行先として挙げる CentOS Stream は、現在の大部分の CentOS ユーザーが求めるものと異なるため単純に移行できない。
  • CentOS 7 と CentOS 8 は CentOS 7 の方がサポート期間が長くなった。 しかし、CentOS 7 も 2024-06-24 までのサポートなので、残り期間はあと5年はない。

CentOS Stream はなぜ代替にならないか?

CentOS ユーザーが、現在 CentOS を選択した理由は以下が多いと考えられます。

  1. RedHat Enterprise Linux(RHEL) と(ほぼ)互換であり、サブスクリプションなしで利用できる。
  2. メジャーバージョンは固定した状態で、長期的・安定的にセキュリティアップデートが提供され、サーバー用途などに使用しやすい。

しかし CentOS Stream は開発版の Fedora と、プロダクトの RHEL の中間の位置付けで、次期 RHEL 向けの新バージョンのパッケージに更新されていきます。
このため選択理由の 1, 2 とも満たさず、CentOS を利用したかった多くのユーザーは 単純には移行できない ことになります。

一方で以下のような使い方であれば、CentOS Stream への移行でもあまり問題なさそうです(とはいえ、あまり選択する必要性は無いかもしれません)。

  • 個人の学習、技術習得用途
  • ある程度の違いを理解した上で使用する開発機

では移行先をどうするか?

RHEL を契約できる場合は良いとして、CentOS と同じように利用したい場合は、現時点では事実上 Oracle Linux のみになりそうです。

必要箇所がはっきりしている場合は、コンテナ上に CentOS のイメージを用意して利用する方法はありそうです。

また今後、期待できそうなディストリビューションとして Rocky Linux が現れました。

Rocky Linux って?

Rocky Linux、聞きなれない名前ですが、今回の件を受けて CentOS のオリジナルの開発者が立ち上げた新しい RHEL クローンのディストリビューションとのこと。

Rocky は CentOS の共同創設者の Rocky McGaugh さんの名前から取られたそうです。

https://news.itsfoss.com/rocky-linux-announcement/

Rocky Linux is not a name out of the blue but derived from CentOS’s original co-founder Rocky McGaugh. Unfortunately, he is no longer with us. So, this name serves as a tribute to his work.

今週のサポート終了のアナウンス前後に立ち上げたようで、まだこれからという段階のようです。
何か進展があるかと思い issue なども眺めてみましたが、いまのところ大きな情報などはなさそうでした。

https://github.com/rocky-linux/rocky

FAQ で挙げられているのは以下のような点です。

  • CentOS の方向性(つまり今回の方針変更)が変わった
  • 以前の CentOS のように(RHEL の)ダウンストリームビルドとする(つまり後追いで互換を保つ)
  • Rocky Linux はコミュニティ手動で進めていく
  • リリース時期は今の所なし

まだまだこれからという感じですが、リリースの際には使わせていただくことも多そうです。

このプロジェクト、CentOS からのフォークで開発を始められないのは、RHEL との契約でもあるのでしょうか?

おわりに

サポート期間逆転とか、もしかして Windows 8 リスペクトでしょうか。(ちょうど 8 だし)
色々と使わせていただいていたので、個人的には残念なところですが Rocky Linux に注目してます。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

行番号の初期値を変更するnlコマンドのvオプション

nlコマンドはvオプションを指定することで、行番号の初期値を変更することができます。

vオプションの使い方

論理ページごとに初期値を変更します。デフォルトは1です。あまり特筆することはありませんが、マニュアルを参照してみましょう。

info nl (GNU coreutils)

‘-v NUMBER’
‘--starting-line-number=NUMBER’
     Set the initial line number on each logical page to NUMBER (default
     1).

busybox nl --help

    -v N        Start from N

man nl (BSD)

     -v startnum  Specify the initial value used to number logical page lines; see
                  also the description of the -p option.  The default startnum
                  value is 1.

BSD系のマニュアルではpオプション(未解説)について補足があります。

POSIX

-v startnum
Specify the initial value used to number logical page lines. The default shall be 1.

vオプションを試す

それでは実際に試してみましょう。

$ yes | head | nl -v 5
     5  y
     6  y
     7  y
     8  y
     9  y
    10  y
    11  y
    12  y
    13  y
    14  y

負の値

-vには負の値も設定することができます。

$ yes | head | nl -v -5
    -5  y
    -4  y
    -3  y
    -2  y
    -1  y
     0  y
     1  y
     2  y
     3  y
     4  y

改ページ

論理ページが複数ある場合は、ページごとにリセットされます。

coreutils
$ echo -e 'a\nb\n\:\:\nc\nd' 
a
b
\:\:
c
d
$ echo -e 'a\nb\n\:\:\nc\nd' | nl -v 5
     5  a
     6  b

     5  c
     6  d
bsd
$ echo -e 'a\nb\n\:\:\nc\nd' | nl -v 5
     5  a
     6  b
     5  c
     6  d

駅ナンバリング表示の駅番号を出力する(相互直通)

前の記事では、宇都宮線・高崎線の駅ナンバリング表示を出力しました。今回は-vを使って横浜線の駅ナンバリング表示を出力してみます。
横浜線は多くの列車が東神奈川駅を始発終着とし横浜駅まで直通しないことで有名ですが、一部列車は東神奈川駅から先、京浜東北線・根岸線大船駅まで直通します。そのため京浜東北線・根岸線と駅番号を合わせる都合から、横浜線のプリフィックス「JH」の駅番号は東神奈川駅13からスタートします。

$ cat yokohamaline
東神奈川
大口
菊名
新横浜
小机
鴨居
中山
十日市場
長津田
成瀬
町田
古淵
淵野辺
矢部
相模原
橋本
相原
八王子みなみ野
片倉
八王子
$ nl -n rz -w 2 -v 13 yokohamaline | sed 's/^/JH/'
JH13    東神奈川
JH14    大口
JH15    菊名
JH16    新横浜
JH17    小机
JH18    鴨居
JH19    中山
JH20    十日市場
JH21    長津田
JH22    成瀬
JH23    町田
JH24    古淵
JH25    淵野辺
JH26    矢部
JH27    相模原
JH28    橋本
JH29    相原
JH30    八王子みなみ野
JH31    片倉
JH32    八王子

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

CentOS Linux 8 から CentOS Stream 8 へ移行する

移行方法

公式サイトに CentOS Linux 8 から CentOS Stream 8 への移行用コマンドが載っている。

CentOS Stream

root@centos-linux# dnf install centos-release-stream

root@centos-linux# dnf swap centos-{linux,stream}-repos

root@centos-linux# dnf distro-sync

root@centos-stream# cat /etc/centos-release
CentOS Stream release 8

CentOS Linux 8.3 から CentOS Stream 8 へ移行してみる

移行前の情報を確認

OS 情報を確認。
CentOS Linux 8.3 であることを確認できる。

$ cat /etc/centos-release
CentOS Linux release 8.3.2011

$ uname -mrsv
Linux 4.18.0-240.1.1.el8_3.x86_64 #1 SMP Thu Nov 19 17:20:08 UTC 2020 x86_64

パッケージリポジトリ情報を確認。
CentOS Linux 8 のパッケージリポジトリを参照しているのが確認できる。

$ dnf repolist
repo id                                   repo の名前
appstream                                 CentOS Linux 8 - AppStream
baseos                                    CentOS Linux 8 - BaseOS
extras                                    CentOS Linux 8 - Extras

$ ls -1 /etc/yum.repos.d/
CentOS-Linux-AppStream.repo
CentOS-Linux-BaseOS.repo
CentOS-Linux-ContinuousRelease.repo
CentOS-Linux-Debuginfo.repo
CentOS-Linux-Devel.repo
CentOS-Linux-Extras.repo
CentOS-Linux-FastTrack.repo
CentOS-Linux-HighAvailability.repo
CentOS-Linux-Media.repo
CentOS-Linux-Plus.repo
CentOS-Linux-PowerTools.repo
CentOS-Linux-Sources.repo

移行作業

CentOS Stream に移行するための centos-release-stream パッケージをインストールする。

$ sudo dnf install centos-release-stream
(中略)
インストール済み:
  centos-release-stream-8.1-1.1911.0.7.el8.x86_64                                                   

完了しました!

dnf swap コマンドでパッケージのリポジトリ情報を更新する。
不要なパッケージが削除され、CentOS Stream に必要なパッケージがインストールされる。

$ sudo dnf swap centos-{linux,stream}-repos
CentOS-Stream - AppStream                                           2.5 MB/s | 6.3 MB     00:02    
CentOS-Stream - Base                                                3.4 MB/s | 2.3 MB     00:00    
CentOS-Stream - Extras                                               11 kB/s | 7.0 kB     00:00    
依存関係が解決しました。
====================================================================================================
 パッケージ                      アーキテクチャー バージョン          リポジトリー            サイズ
====================================================================================================
インストール:
 centos-stream-release           noarch           8.4-1.el8           Stream-BaseOS            21 k
     置き換え  centos-linux-release.noarch 8.3-1.2011.el8
     置き換え  centos-release-stream.x86_64 8.1-1.1911.0.7.el8
 centos-stream-repos             noarch           8-2.el8             Stream-BaseOS            19 k
削除中:
 centos-linux-repos              noarch           8-2.el8             @BaseOS                  26 k

トランザクションの概要
====================================================================================================
インストール  2 パッケージ
削除          1 パッケージ
(中略)
インストール済み:
  centos-stream-release-8.4-1.el8.noarch             centos-stream-repos-8-2.el8.noarch

削除しました:
  centos-linux-repos-8-2.el8.noarch

完了しました!

dnf distro-sync コマンドでインストール済みのパッケージを更新する。
CentOS Stream で利用可能な最新バージョンのパッケージに更新される。

今回の環境では以下のようになった。

$ sudo dnf distro-sync
CentOS Stream 8 - AppStream                                         5.1 MB/s | 6.3 MB     00:01    
CentOS Stream 8 - BaseOS                                            2.5 MB/s | 2.3 MB     00:00    
CentOS Stream 8 - Extras                                            943  B/s | 7.0 kB     00:07    
依存関係が解決しました。
(中略)
インストール      7 パッケージ
アップグレード  208 パッケージ
削除              4 パッケージ
ダウングレード    5 パッケージ
(中略)
完了しました!

移行後の情報を確認

OS 情報を確認。
CentOS Stream 8 になっているのを確認できる。

$ cat /etc/centos-release
CentOS Stream release 8

$ uname -mrsv
Linux 4.18.0-240.1.1.el8_3.x86_64 #1 SMP Thu Nov 19 17:20:08 UTC 2020 x86_64

パッケージリポジトリ情報を確認。
CentOS Stream のパッケージリポジトリを参照しているのが確認できる。

$ dnf repolist
repo id                                  repo の名前
appstream                                CentOS Stream 8 - AppStream
baseos                                   CentOS Stream 8 - BaseOS
extras                                   CentOS Stream 8 - Extras

$ ls -1 /etc/yum.repos.d/
CentOS-Stream-AppStream.repo
CentOS-Stream-BaseOS.repo
CentOS-Stream-Debuginfo.repo
CentOS-Stream-Extras.repo
CentOS-Stream-HighAvailability.repo
CentOS-Stream-Media.repo
CentOS-Stream-PowerTools.repo
CentOS-Stream-RealTime.repo

OS を再起動すると、 Linux カーネルのバージョンが更新されていることを確認できる。

$ sudo reboot
$ uname -mrsv
Linux 4.18.0-257.el8.x86_64 #1 SMP Thu Dec 3 22:16:23 UTC 2020 x86_64

参考資料

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

SQL Server 2019 Big Data Cluster

はじめに

SQL Server Big Data Cluster(BDC)は、SQL Server 2019の非常に期待されている機能です。そもそも、BDCは何ですか、また、それらの機能を最大限に活用するにはどうすればよいですか。このような疑問を持っている方もいらっしゃると思います。ここで少し深く掘り下げて説明していきます。

Reference URLs

SQL Server Big Data Clusterとは
SQL Server Big Data Cluster展開の概要
@kenakamuによるSQL Server 2019 ビッグデータクラスターを AKS で使う - azdata 既定の構成でインストール
Microsoft workshop on BDC Architecture
Masayuki Ozawa's Blog SE雑記
Big Data Clusters Overview presented by Buck Woody at SQLBits 2019
Pluralsight Course by Ben Weissman
Anthony Nocentino’s Blog
Mohammad Darab’s Blog
Bob Pusateri's Blog

SQL Server Big Data Clusterの由来

SQL Server 2017がLinuxのサポートを追加された時に、SQL ServerをSpark、HDFS、および通常はLinuxベースであるその他のビッグデータツールと統合するための基礎が築かれました。SQL Server 2019のBig Data Clusterは、これらの統合の可能性を提供し、リレーショナルデータとビッグデータの両方を簡単に組み合わせて分析できるようにします。

SQL Server Big Data Clusterとは

Big Data Clusterは、SQL Server 2019のPolyBaseの拡張機能を活用して、外部テーブルを介した様々なソースからのデータの仮想化を可能にします。外部テーブルを使用すると、ローカルSQL Serverインスタンスに物理的に配置されていないデータをあたかも存在するかのようにクエリしたり、ローカルテーブルに結合してシームレスな結果セットを生成したりすることができるようになります。それは、PolyBaseというテクノロジーを利用しています。PolyBaseに関しては、Japan SQL Server User Groupの過去の勉強会のセッションで何度も紹介したこともあります。リモートSQL Serverインスタンス、Azure SQL Database、Azure Cosmos DB、MySQL、PostgreSQL、MongoDB、Oracle、およびその他の多くのソースからのデータはすべて、PolyBase外部テーブルを介してアクセスできます。Big Data Clusterでは、SQL ServerエンジンはHDFSの組み込みサポートも備えており、これらすべてのデータセットを結合できるため、リレーショナルデータと非リレーショナルデータの両方を簡単に統合できます。
image.png

Apache Spark統合

Big Data ClusterはPolyBase外部テーブルを利用するだけではなく、Apache SparkはBig Data Clusterにも深く統合されているため、データサイエンティストやエンジニアは、スケーラブルな分散メモリ内のコンピューティングレイヤーでデータにアクセスして操作できます。つまり、データの活用では、機械学習、AI、その他の分析タスクにも使用できます。

Big Data Clusterの機能

アーキテクチャから言えば、Big Data Clusterはコンテナーのクラスター(Dockerコンテナーなど)です。これらのスケーラブルなクラスターは、SQL Server、Spark、HDFS、およびその他のサービスを実行します。Big Data Clusterのすべての側面はコンテナー内で実行され、これらのコンテナーはすべて、コンテナーオーケストレーションサービスであるKubernetesによって管理されます。Podと呼ばれるコンテナのグループは、Big Data Clusterの主要コンポーネントを構成するプールにグループ化されます。

主な機能を理解するために、下記のコンポーネント(用語)を先に説明します。

Master Instance

SQL Server Big Data Cluster Master Instanceとは
SQLクエリのメイン接続エンドポイントとして機能し、メタデータと読み取り、または書き込みユーザーデータベースをBDCに格納するSQL Server2019インスタンスです。データベースのバックアップをBDCに復元する場合、これもターゲットになります。HAの目的では、これは可用性グループにすることもできます。

Data Pool

SQL Server Big Data Cluster Data Poolとは
データセットをシャーディングできるSQL Serverインスタンスのコレクションであり、頻繁にアクセスされるデータのスケールアウトクエリ機能を可能にします。これは、そうでなければマスターインスタンスに存在する大きなテーブルを格納する場合に非常に役立ちます。また、複数の外部データソースを結合する複雑なクエリの結果をキャッシュするのに最適な場所です。
動画
image.png

Storage Pool

SQL Server Big Data Cluster Storage Poolとは
HDFS、Spark、SQLServerをホストするスケーラブルなストレージ層。列構造のテキスト(parquet)や区切りテキストなどの非構造化および半構造化データファイルをここに保存し、SQL Server外部テーブルまたはHDFSに接続できるその他のツールを介してアクセスできます。
image.png

Compute Pool

SQL Server Big Data Cluster Compute Poolとは
Data PoolまたはStorage Poolにアクセスする必要があるMaster Instanceからのクエリを分散する(worker的な役割)ことで、スケールアウト処理を可能にするSQL Server Compute Nodeのコレクション(集合体)です。Compute Poolには、エンドユーザーが直接アクセスすることはありません。
動画
image.png

Application Pool

SQL Server Big Data Cluster Application Poolとは
R、Python、SSIS、およびMLeapランタイムを使用するアプリケーションがBig Data Clusterで実行され、そのデータと計算リソースにアクセスできるようにする一連のインターフェイスです。

image.png
図からわかるように、Big Data Clusterには、クラスターとそのコンポーネントを監視および管理するためのWebサービスや、Big Data Clusterを管理するためのCLIであるazdataなど、他のいくつかのコンポーネントが含まれています。

Azure Data Studioを使ってSQL Server Big Data Clusterにアクセスする

GUIの使用を好む人にとって、Azure Data Studio(ADS)はBig Data Clusterの管理において重要な役割を果たすことができます。ADSを使用すると、SQL Serverタスクに加えて、Big Data Clusterの作成と管理、ファイルのアップロードとダウンロードなどのHDFSタスクの実行、ウィザードによる外部テーブルの作成、T-SQL、Spark、Pythonノートブックの実行などを行うことができます。確かに必須ではありませんが、Azure Data Studioは、で多くの一般的なBig Data Clusterタスクを実行するのに最適な環境です。
Azure Data Studio Download

SQL Server Big Data Clusterユースケース

小売業者のデータウェアハウスを管理することを想定してください。トランザクションデータは、店舗の場所やWebサイトから定期的に受信されます。DWH内の一部のデータは確実にリレーショナルであり、そのように保存する必要があります。但し、毎日に区切られたテキストファイルを介して配信される数百万数のトランザクションはそうではありません。つまり、毎回に保存したり、ETLしたりすると、余計なコストがかかります。
ETLプロセスを使用して、このすべてのデータをリレーショナルデータベースにロードすることもできますが、複雑さが増し、維持する別のプロセスが作成され、実行に時間もかかります。SQL Server Big Data Clusterを活用すると、トランザクションの「Big Data」をネイティブ形式で保存し、さらに処理することなく分析できるようになります。そして、他のSQLクエリと同じように、物理テーブルと仮想テーブルを結合することで、リレーショナルデータとBig Dataの両方を組み合わせることができます。最後に、Big Dataは、Spark、R、またはHDFSに保存されているデータにアクセスできるその他のアプリケーションで分析もできるようになります。

  • SQL Server Big Data Clusterはデータの入力、変換、出力、分析までの一気通貫できるSQL Server 2019ベースのプラットフォームです。

SQL Server Big Data Clusterシナリオ

SQL Server Data Clusterによって提供される柔軟性により、多くのユースケースが可能になりますが、最も一般的なシナリオは下記です。

  • リレーショナルデータや非リレーショナルデータからBig Dataの組み合わせ、または何れの組み合わせ
  • データ仮想化によるデータへの即時アクセス(リアルタイム要件)
  • 重複することなくSQL ServerとSparkの両方を介して同じデータをクエリする機能
  • Microsoft Azure内、他のパブリッククラウド、またはオンプレミスにデプロイできる一貫性のあるソリューション

SQL Server Big Data Clusterのまとめ

SQL Server Big Data Clusterはデータの入力、変換、出力、分析までの一気通貫できるSQL Server 2019ベースのプラットフォームです。
SQL Serverビッグデータクラスターは、Microsoft Data Platformへの非常に歓迎された革新的な追加であり、SQL Serverの機能を構築し、信じられないほどの柔軟性とスケーラビリティを提供します。
この度、ぜひSQL Server 2019 Big Data Clusterを利用してみたらいかがでしょうか。
SQL Serverの導入及び相談を承ります。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Linux】if文の評価式でリモートサーバの特定のファイル有無を評価する方法

はじめに

お疲れさまです。
if文の評価式でリモートサーバの特定のファイル有無を評価する方法に地味に苦戦したため、誰かの助けになるかはさておき、残すことにしました。
OSはRHEL7を想定しています。

本題

sshコマンドは以下のように実行すると、リモートサーバ上でコマンドを実行できます。

[user@host001 /tmp]$ ssh [ユーザ名]@[ホスト名] "ls -l"

そしてこの場合に出力され得る戻り値は以下の通りです。

戻り値 状況
0 sshコマンドとlsコマンドが正常終了した
1 or 2 ls -lコマンドがエラーとなった
255 sshコマンドがエラーとなった

上記の表だけでは説明不足かもしれませんが、sshコマンドが異常終了した場合は、戻り値として「255」が返ってきます。
一方でリモートで実行したコマンドが異常終了した場合は、そのコマンドの戻り値が返ってきます。

今回はこの仕様を使用して、リモートサーバの特定のファイル有無を評価します。
結論は以下の通りです。

if [ `ssh [ユーザ名]@[ホスト名] "test -e [リモートファイル名]"` -eq 0 ]; then
 処理
fi

詳細は控えますが、「test -e [ファイル名]」でファイルの存在有無を評価可能であり、ファイルが存在する場合は戻り値は「1」が返ってきます。sshでそれをリモートサーバ上で実行するだけです。
ただしこの方法だとsshコマンド自体が異常終了となった場合もファイルが存在しないのと同じ扱いになります。

sshのエラーも検知しつつこれくらいシンプルな方法があれば知りたいものです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ショートカットキーでクリップボードのWindowsパスをLinuxパスに一発変換

はじめに

Windowsユーザーのみなさん、git bashやWSLを使うことが多くなった昨今、すっかりコマンドプロンプトでDOSコマンドを打つよりLinuxコマンドを打つ方が多くなってませんか?
そこで困るのがWindowとLinuxのパスの違いですよね!

そんなあなたにオススメの便利な技を紹介します!

準備

  • 下記のbatファイルをどこかに作ってやります。
win2LinuxPath.bat
Powershell get-clipboard | "C:\Program Files\Git\usr\bin\perl" -p -e "s!\\\\!/!g;s!^(\w):!/$1!;$_=lc $_" | clip

※ Perlを使うため、Git for Windowsインストール済み前提です

  • デスクトップにショートカットを作ってショートカットキーを割り当てます。 image.png

使い方

  • エクスプローラのアドレス部分などから変換したいパスをコピーします。 image.png
  • ショートカットキー(今回はCtrl+Alt+P)を押します。
    • 一瞬黒い画面が現れます
  • どこか貼りつけると、ほらこの通りWindowsパスがLinuxパスに変換されてます! image.png

おわりに

.batファイルをちょっと修正すれば、共有サーバのパスをMacユーザでもアクセスできるように変換してチャットに貼り付ける時とかにも使えるよ!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む