20200626のLinuxに関する記事は8件です。

Windows Subsystem for Linuxが表示されない

WSLついて

WSL(Windows Subsystem for Linux)とは、Linuxのバイナリ実行ファイルをWindows 10およびWindows Server上でネイティブ実行するための互換レイヤーのこと。
Windows上でLinux環境を利用するために、「Windows Subsystem for Linux」を有効化する必要がある。

事象

Windowsの機能を表示し、Wから始まる項目を探してみても「Windows Subsystem for Linux」が見つからない・・・・

image.png

原因を調べたら、32bitだと表示されないとのこと。
自分のPCは64bitのため、関係なし。

原因

Windows10のバージョンが2004のため、どうやら名称が翻訳されたらしい。
「Linux用Windowsサブシステム」を有効化することで解決した!

image.png

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

Linux(ubuntu)を知らない人がWindows上でLinuxコマンドを実行する方法【Rとpythonの動作確認まで】

この記事の目的

  • Windowsユーザー向けだよ(Win10):smile:
  • Linux(ubuntu)とかわからなくても大丈夫だよ:smile:
  • とりあえず動かせるところまで紹介するよ:smile:

記事を書くまでの経緯

新しいライブラリが出た時にgithub見に行ったらチュートリアルに

image.png
画像元:StarGAN-Voice-Conversion

sudo,~.sh,wget
とかlinux系のコマンドが出てきて今までは
「Linux環境:innocent:...VirtualBoxたてるか:innocent:...でも重いから嫌い:innocent:...ぐぬぬ:innocent:...」
ってなってたんですが、
windowsでも簡単に試したいと思って調べてたら、
windowsでもubuntuが動かせるみたいなので紹介。

step-1 Windows Subsystem for Linux(WSL)の有効化

win10では標準の機能としてLinux環境をwindows上で実行することができます。
使ってみた感じHyper-VやVirtualBoxよりも使いやすいので使いやすさを味わってみてほしい:relaxed:

01.png

02.PNG

※Windows Subsystem for Linuxにチェックを付ける

step-2 Ubuntuをダウンロード

今回は18.04LTSを使いますが、各自のやりたいことによって選んでください。
2020/06/26時点では20.04までダウンロードできる。

03.png

04.png

インストールした後起動し、IDとpassを設定
passはデフォルトでは表示もされなければ、打ち込んでも*記号が出てきたりもしないので打ち間違いのないように。

step-3 Ubuntuコマンドを打ち込む(アップデートとRの追加)

バージョン確認

cat /etc/lsb-release

05.PNG

アップデート

sudo apt update

Rのダウンロード先を追加

echo 'deb https://cran.rstudio.com/bin/linux/ubuntu bionic-cran35/' | sudo tee -a /etc/apt/sources.list

エディタで追加されていることの確認

sudo nano /etc/apt/sources.list

06.PNG

「Ctrl + X」でnanoを抜ける

key追加

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9

コマンドに問題なければ

gpg: Total number processed: 1
gpg:               imported: 1

が返ってくると思う

最後に

sudo apt install r-base
sudo apt update

step-4 pythonとRが起動できるかだけ確認する

pythonはデフォルトのままでpython3と打ち込むと開く
Rもpythonも抜けるときは「Ctrl + Z」

07.PNG

RやPython側から「パッケージが入ってない」と言われたら上記のように起動した後
install.packagesなりpip installなりを実行する。

以上

これで今後Linux環境が必要な時に試せる
やったぜ

メモ:フォルダ移動が面倒な時

フォルダを移動するときに
cmdと同じく
cd ~~~~
で移ってもいいけど、使いたいフォルダのアドレスに「bash」と打ち込めばらくちん

des.gif

参考記事

Windows Subsystem for Linux (WSL1) をインストールしてみよう!
【WSL入門】第1回 Windows 10標準Linux環境WSLを始めよう
最新のRをUbuntuにインストール

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

【AWS EC2】Amazon Linux2でやっておきたい設定

概要

EC2を起動したらまずはやっておきたい設定周り

環境

  • AWS EC2
    • OS: Amazon Linux 2
    • AMI ID: amzn2-ami-hvm-2.0.20200520.1-x86_64-gp2
    • セキュリティグループ: SSH 22 を開けておく

1. サーバーの時刻をJSTにする

  • デフォルトはUTCになっている
  • timezoneをAsia/Tokyoに変更してJSTにしておく
  • timezoneを変更したらcrondも再起動しておく
$ timedatectl status
      Local time: Fri 2020-06-26 06:10:18 UTC
  Universal time: Fri 2020-06-26 06:10:18 UTC
        RTC time: Fri 2020-06-26 06:10:18
       Time zone: n/a (UTC, +0000)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
$ sudo timedatectl set-timezone Asia/Tokyo
$ timedatectl status
      Local time: Fri 2020-06-26 15:50:10 JST
  Universal time: Fri 2020-06-26 06:50:10 UTC
        RTC time: Fri 2020-06-26 06:50:09
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
$ sudo systemctl restart crond
$ date
Fri Jun 26 16:03:47 JST 2020

2. プロンプトの変更

  • デフォルトだと情報が少ないので変更する
    • 変更前:[ec2-user@ip-XX-XX-XX-XX ~]$
    • 変更後:[16:17:47 ec2-user@ip-XX-XX-XX-XX ~]$
  • .bashrcexport PS1を追記する
    • 全体に反映したい場合は/etc/bashrc$PS1を編集する
  • sourceコマンドで反映するのをお忘れなく
$ vi .bashrc

# User specific aliases and functions
export PS1='\[\033[37m\][\t \[\033[36m\]\u\[\033[37m\]@\h \[\033[32m\]\W\[\033[37m\]]$ '

$ source .bashrc

3. ロケールの変更

  • やらなくても良いが、日本語環境にしたいのであればやる
$ localectl status
   System Locale: LANG=en_US.UTF-8
       VC Keymap: n/a
      X11 Layout: n/a
$ sudo localectl set-locale LANG=ja_JP.UTF-8
$ sudo localectl set-keymap jp106
$ localectl status
   System Locale: LANG=ja_JP.UTF-8
       VC Keymap: jp106
      X11 Layout: jp
       X11 Model: jp106
     X11 Options: terminate:ctrl_alt_bksp

4. よく使うものをインストール

以外と何も入ってないので、使うものはインストールする。

git

$ sudo yum install -y git
$ git -version
git version 2.23.3

参考

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

LPIC-1(レベル1)受験記録

概要

先日、LPIC-1を受験し合格しましたので、記録を残します。
この記録が、これからを受験される方にとっての目安や参考になればと思います。

受験資格

LPIC-1(レベル1)

結果(点数)

  • 101 : 受験1回目で不合格(480点)。2回目で合格(620点)。
  • 102 : 一発合格(680点)。

(合格ラインはおそらく500点)

プロフィール(学習前)

エンジニアとして就業して約4ヶ月。Linuxコマンドはたまに使う程度で、コマンドがなぜ動くのかわかっていない。

学習時間(おおよそ)

勉強開始〜合格までで2ヶ月弱。
- 101 : 40時間(1回目まで) + 40時間(2回目まで)
- 102 : 40時間

学習教材

  • Linux教科書 LPICレベル1 (あずき本)
  • Linux教科書 LPICレベル1 スピードマスター問題集 (白本)
  • ping-t : 102用の有料版サービスも利用(101用は無料)

私のオススメは、下記手順です。
1. ping-tで全問を金メダルにする。(問題を解く際は、「答えの確認」よりも「解説を読むこと」が重要)
2. あずき本を読み、全体像をつかむ。(問題を解くだけでは断片的な知識であるため)
3. 白本の問題を解く。
4. 白本の模擬試験問題を解く。
5. (余裕があれば)ping-tの模擬試験問題を解く。

おそらく、1.のステップで0.5〜1ヶ月ぐらいかかるので、時間はいくらあっても足りません。
焦らずに集中して取り組み、進捗具合によっては臨機応変に手順や計画を見直したほうが良いと思います。

あずき本は、無くてもなんとかなるかと思いますが、あったほうが良いです。(当然ですが)

所感

  • 時間が許すなら、3ヶ月程度の学習期間を設けたほうが良いです。
    • 試験に合格するためだけでなく、Linuxの理解を深めるため。
    • Linuxの知識は基本であるため、他の技術を学ぶ際に理解しやすくなる(と思います)。
  • 101で1度不合格になった時はかなり落ち込みましたが、追い込まれたことで逆に火が付きました。(悔しさをバネに ってやつです。)
  • 資格を取るという目標があるため学習に熱が入り、結果として深い理解ができました。
  • Linuxの理解、熱心に学習した経験 の2つの側面から、非常に良い経験になったと思います。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linuxのリダイレクト vol.1

今日はリダイレクトについて。

リダイレクトとは

出力の向かう先を変更すること、つまりあるページに移行したときに、強制的に別ページに飛ぶことである。
Linuxでは、向かう先を変更するとは、標準入力、標準出力、標準エラー出力のこと。

このコマンド例上では、以下の通りである。
・標準入力:echo Hello_World
・標準出力:Hello_World
・標準エラー:-bash: ech: コマンドが見つかりません

コマンド例
[root@taki ~]# echo Hello_World
Hello_World
[root@taki ~]# ech Hello_World
-bash: ech: コマンドが見つかりません

リダイレクトの使用方法

・標準出力をファイルへ出力する
→画面に出力される文字列をファイルへ保存できる
→コマンドラインでは画面は文字列で大量に埋め尽くされる。何もしなければ、結果が上へ画面外へどんどん流れていってしまう。結果を確認しようと思っても確認できないという状況が発生する。
→リダイレクト使いファイルに結果を保存閲覧する

標準入力、標準出力、標準エラー

Linuxではデフォルトで以下のように割り振られている。
・標準入力→0
・標準出力に→1
・標準エラー出力→2

実際にやってみよう
  1. 標準出力 ※1は省略可能

① 標準出力
[root@taki ~]# echo Hello_world
Hello_world

② Hello_WorldをTest_Hello_World.txtに出力している
[root@taki ~]# echo Hello_World > Test_Hello_World.txt
[root@taki ~]#

③ ②の確認
[root@taki ~]# cat Test_Hello_World.txt
Hello_World

④ Hello_WorldをTest_Hello_World.txtに出力している
[root@taki ~]# echo Hello_World > Test_Hello_World.txt
[root@taki ~]#

⑤ Close_WorldをTest_Hello_World.txtに出力している
[root@taki ~]# echo Close_World >> Test_Hello_World.txt

⑥ ⑤の確認
[root@taki ~]# cat Test_Hello_World.txt
Hello_World
Close_World

以上よりわかることは、

記号 説明
> 標準出力の出力先を指定
>> 標準出力の出力先を指定し、標準入力出力先に追記

参考文献

https://eng-entrance.com/linux-redirect

長くなったから今日はこの辺で。表を加えることが出来た。表の前には1行空欄を。

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

Linuxのリダイレクト

今日はリダイレクトについて。

リダイレクトとは

出力の向かう先を変更すること、つまりあるページに移行したときに、強制的に別ページに飛ぶことである。
Linuxでは、向かう先を変更するとは、標準入力、標準出力、標準エラー出力のこと。

このコマンド例上では、以下の通りである。
・標準入力:echo Hello_World
・標準出力:Hello_World
・標準エラー:-bash: ech: コマンドが見つかりません

コマンド例
[root@taki ~]# echo Hello_World
Hello_World
[root@taki ~]# ech Hello_World
-bash: ech: コマンドが見つかりません

リダイレクトの使用方法

・標準出力をファイルへ出力する
→画面に出力される文字列をファイルへ保存できる
→コマンドラインでは画面は文字列で大量に埋め尽くされる。何もしなければ、結果が上へ画面外へどんどん流れていってしまう。結果を確認しようと思っても確認できないという状況が発生する。
→リダイレクト使いファイルに結果を保存閲覧する

標準入力、標準出力、標準エラー

Linuxではデフォルトで以下のように割り振られている。
・標準入力→0
・標準出力に→1
・標準エラー出力→2

実際にやってみよう
  1. 標準出力 ※1は省略可能

① 標準出力
[root@taki ~]# echo Hello_world
Hello_world

② Hello_WorldをTest_Hello_World.txtに出力している
[root@taki ~]# echo Hello_World > Test_Hello_World.txt
[root@taki ~]#

③ ②の確認
[root@taki ~]# cat Test_Hello_World.txt
Hello_World

④ Hello_WorldをTest_Hello_World.txtに出力している
[root@taki ~]# echo Hello_World > Test_Hello_World.txt
[root@taki ~]#

⑤ Close_WorldをTest_Hello_World.txtに出力している
[root@taki ~]# echo Close_World >> Test_Hello_World.txt

⑥ ⑤の確認
[root@taki ~]# cat Test_Hello_World.txt
Hello_World
Close_World

以上よりわかることは、

記号 説明
> 標準出力の出力先を指定
>> 標準出力の出力先を指定し、標準入力出力先に追記

参考文献

https://eng-entrance.com/linux-redirect

長くなったから今日はこの辺で。表を加えることが出来た。表の前には1行空欄を。

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

【centos8】logrotateが上手く起動しない

はじめに

これまでcentos6でlogrotateは使っていたが、centos8で実装した際に躓いた点があったのでメモしました。

➀課題

centos8で実装した際はファイルはrotateされるが、データがrotateされない。

➁大まかなlogrotateが回る流れ。

(例)
➀/etc/cron.dailyの中のlogrotateファイルが毎分起動(/etc/logrotate.confを呼び出す)

➁/etc/logrotate.conf設定ファイルが読まれる(dailyで/etc/logrotate.dディレクトリの中のファイルを実行)

/etc/logrotate.dの中にsyslogファイルあり。syslogの中にrotateされたいファイルのパスを記述。

指定したファイルのrotateが実行される。

➂解決策

centos8では/etc/logrotate.dのディレクトリの中に、centos6にはなかったsyslog.rpmnewファイルが存在している。
logrotate.dのディレクトリの中でsyslog、syslog.rpmnewの2つのファイルで内容が重複していると上手くrotateされない。内容を重複しないようにすることが必要。

➃修正したら再起動と自動起動

 systemctl restart rsyslog.service
systemctl enable rsyslog.service

⑤接続確認

-fオプションで強制rotateして上手くrotateしているか確認。

logrotate -f /etc/logrotate.conf

データが上手くrotateされていれば完了。

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

(初心者) コアとかスレッドとかってなんだ

発端

ジョブとか,タスクとか,コアとか,スレッドとか,なんとなく使ってるけど,お互いの関係はあんまり正確にわかってないなぁということで.

いくら計算機が専門ではないとはいえ,さすがに情報学を学ぶ者としてどうなんだとなったので簡単にまとめてみた.

結論

  • スレッド,プロセス,ジョブ,タスク概念でプログラムそのものの構成要素
    • プロセスはプログラムの実行単位,つまりプログラムの一番大きなひとかたまり
    • スレッド⊂プロセス
    • ジョブ,タスクはわりと曖昧らしい
  • プロセッサ,コア,CPU物理的に存在するPCの構成要素
    • プロセッサ=CPU
    • コア⊂CPU

詳しく

プロセスとスレッド

これが一番わかりやすい.1つのプロセスの中に1つ以上のスレッドが作られる.

プロセスが親でスレッドが子.

ジョブとタスク

使われ方は環境などによって変わり,わりと曖昧であることが多いらしい.よかった.適当に使っていたが,あながち間違いじゃなかった.

一応Linux系だと,
- ジョブは複数のプロセスをまとめたもの
- タスクはプロセスやスレッドの総称

らしい.

プロセッサとコアとCPU

CPU(=プロセッサ) の中に,実際に処理を行う部品(コア) があるという構図.

実際にはコアがCPUとして認識されてプロセスやスレッドを割り当てる.

【疑問】6コア12スレッドのCPUは1コアあたり2スレッドなのか?

正直この辺がよく分からなくて調べた.答はNo.

コアはあくまでもプロセスやスレッドを処理する場所なので,コアにどのスレッドを割り当てるのかはプロセスやスレッドができてからの話.

なので,まず並列に走らせることができるスレッドの上限が12で,それを割り当てるコアが6個あるというのが正しそう.

つまり.スレッドの上限が12の場合,必然的にプロセスの上限は12ということになりそう.

例えば,3つのプロセスで12スレッド全部使う場合,こんな感じの割り当て方が考えられると思う.

プロセス名 スレッド数 例1 スレッド数 例2
A 4 6
B 4 4
C 4 2

Reference

  1. 【図解】CPUのコアとスレッドとプロセスの違い・関係性、同時マルチスレッディング、コンテキストスイッチについて
  2. プロセス、スレッド、ファイバ、タスク、ジョブ、違いを整理してみよう
  3. プロセスとスレッドの違い - ついでにタスクとジョブ -
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む