20201123のLinuxに関する記事は9件です。

LinuxでSuperColliderの音を他のアプリのマイク入力として渡す

リモートセッションでSuperCollider(以下SC)の音をブラウザに渡したい時など、SCの出力を他のアプリの入力として渡したい時の設定方法
最終的にこうする。
qjackctl.png

この図はqjackctlで表示できるグラフ。SCの出力をPulseAudio JACK Sourceに接続しているところがポイント

PulseAudioはLinuxのaudioサーバーで、ブラウザなどの最近のアプリはだいたいこれを使って音を鳴らしている。SCのようなリアルタイム性が要求されるアプリはPulseAudioではなく、JACK/ALSAを使っている。

PulseAudioのjackモジュールを使うと、jack上でPulseAudioの入出力を扱えるようになる。あとqjackctl(jackの設定用GUI)とpavucontrol(pulseaudioの設定用GUI)も入れておくと便利
arch linuxの場合は下記のコマンドで各種アプリ/モジュールをインストールできる

> sudo pacman -S pulseaudio-jack qjackctl pavucontrol

重要なポイントとして、jackを起動するタイミングでPulseAudioは停止していなければならない。pulseaudio -kで停止させる。
※ PulseAudioを使うアプリがあると、勝手にPulseAudioを起動してしまうので注意

> pulseaudio --check -v
I: [pulseaudio] main.c: Daemon running as PID 2959
> pulseaudio -k
> pulseaudio --check -v
I: [pulseaudio] main.c: Daemon not running

PulseAudioの停止を確認したら、下記の手順で設定する。

  1. qjackctlの「開始」ボタンを押して、jackを起動する

  2. PulseAudioのjackモジュールをロードする

    > pactl load-module module-jack-sink channels=2
    > pactl load-module module-jack-source
    
  3. SuperColliderを起動する

  4. PulseAudioを使うアプリを起動して、マイク入力を使う状態にする
    pavucontrolの「録音」タブから起動したアプリがJack sourceと接続されていることを確認できる
    pavucontrol.png

  5. qjackctlの「グラフ」でこのページの最初の図のようにPulseAudio JACK Sourceに接続する

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

Linuxでnologinユーザーをログインできるようにする方法

Linuxでnologinユーザーをログイン出来るようにしたり、ログインユーザーをnologinユーザーに変更する検証をしたのでまとめました。

検証環境

  • AWS
  • Ubuntu20.04

検証内容

1.デフォルトだとwww-dataユーザーがnologinの設定になっているので、このユーザーで検証する

$ cat /etc/passwd | grep www-data
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

2./var/www ディレクトリが存在していないので作成する

$ sudo mkdir -p /var/www
$ sudo chown www-data:www-data /var/www
$ ls -alF /var/www
total 8
drwxr-xr-x  2 www-data www-data 4096 Nov  7 05:34 ./
drwxr-xr-x 14 root     root     4096 Nov  7 05:34 ../

3.設定変更しないで、nologinユーザーにログインする

$ sudo su - www-data --shell=/bin/bash

4.デフォルトで作成されている www-data ユーザーをログインできるよう設定する

### ログインできないことを確認
$ sudo su - www-data
This account is currently not available.

### ログインできるように設定
$ sudo usermod -s /bin/bash www-data
$ cat /etc/passwd | grep www-data
www-data:x:33:33:www-data:/var/www:/bin/bash

5.ログインユーザーからnologinユーザーに設定変更

### ログインできないように設定
$ sudo usermod -s /usr/sbin/nologin www-data
$  cat /etc/passwd | grep www-data
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

### ログインできないことを確認
$ sudo su - www-data
This account is currently not available.

参考

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

【備忘録】役に立つlinuxコマンド集

はじめに

linuxコマンド忘れてしまうので、個人用のメモとして残しております。。

コマンド集

#ディスク容量の確認
df -h
#commandの使い方確認
man (command)
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【備忘録】ubuntuにてdockerインストールからJupyterLab起動までの流れ

はじめに

VPSサーバのubuntu内にdokcerをインストールして、jupyterlabの起動までを行います

前提

今回はAWSのlightsailを用いてubuntu環境を用意しました 
https://qiita.com/s-inoue-git/items/1bcf1a28ed73090c3d86

目次

  1. dockerインストール
  2. Dockerfileの転送
  3. containerの起動

1. dockerのインストール

sudo apt-get update
#sudo apt-get install docker.io #古いバージョンがインストールされてしまう
sudo apt-get install docker-ce
docker --version
#Docker version 19.03.8, build afacb8b7f0

バージョン情報が確認できればインストールの成功です!
※docker.ioとdocker-ceの違い
https://qiita.com/nnagashima/items/79887825ce9d7c8b24ab

dockerコマンドのたびにsudoを入力するのが面倒なため、ユーザ(ubuntu)をdocker groupのなかに加えます

sudo gpasswd -a ubuntu docker
#Adding user ubuntu to group docker
exit
#ログアウトしないとグループの追加が反映されません

2. Dockerfileの転送

#sftp接続
sftp -i ~/.ssh/Lightsail_ubuntu_20201123.pem ubuntu@3.112.200.82
sftp> put Dockerfile

今回は以下チュートリアルで作成したDockerfileを転送しました
https://qiita.com/s-inoue-git/items/2b5c65a1f11a1ba4a38e

3. containerの起動

docker runのコマンドを実行

docker run -v $(pwd)/volume:/home/work -p 8888:8888 --name anaconda-env -it anaconda-img

あとは、ファイヤウオールの設定を変更して、どこからでもアクセスできるようにすれば、「パブリックIP:ポート番号」でアクセスできるようになります
今回は学習用なのでセキュリティー設定ガバガバです。。。
image.png

jupyter-labにアクセスできれば完了です!
image.png

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

【Linux】echoコマンドの使用方法

はじめ

Linuxコマンドの一つのechoコマンドについて、自分がよく使用している方法をアウトプットします。
※全ての使用方法は網羅できておりませんので、ご了承下さい。

echoコマンドとは?

このようなことができるコマンドになります。

  • 画面に文字列の表示
  • コマンドの実行結果の表示
  • 文字列をファイルに出力
  • 文字列をファイルに追記

echoコマンドの使用方法(例)

文字列の表示

指定の文字列を表示します。

コマンド
echo "文字列"

コマンド実行例

実行例
[root@tspweb01 test]# echo aaaaa
aaaaa

コマンドの実行結果の表示

コマンドの実行結果を表示します。

コマンド
echo $?
  • コマンドの実行結果
実行結果 内容
0 True(コマンドの実行が成功)
1 False(コマンドの実行が失敗)
127 コマンドが見つからない

コマンド実行例

  • True(成功)
実行例(True)
[root@tspweb01 test]# true
[root@tspweb01 test]# echo $?
0
  • False(失敗)
実行例(False)
[root@tspweb01 test]# false
[root@tspweb01 test]# echo $?
1
  • コマンドが見つからない
実行例(コマンドが見つからない)
[root@tspweb01 test]# wh
-bash: wh: コマンドが見つかりません
[root@tspweb01 test]# echo $?
127
[root@tspweb01 test]#

文字列をファイルに出力

指定の文字列をファイルに出力します。

コマンド
echo "文字列" > ファイル名

コマンド実行例

実行例
[root@tspweb01 test]# echo "testtest" > test.txt
[root@tspweb01 test]# cat test.txt
testtest
[root@tspweb01 test]#

文字列をファイルに追記

指定の文字列をファイルに追記します。

コマンド
echo "文字列" >> ファイル名

コマンド実行例

[root@tspweb01 test]# cat test.txt
testtest
[root@tspweb01 test]# echo "testtest" >> test.txt
[root@tspweb01 test]#
[root@tspweb01 test]# cat test.txt
testtest
testtest
[root@tspweb01 test]#

注意

実作業の際には、>>>を間違えないようにお気をつけ下さい。
(意味が全然違います。)

  • > : ファイル全体の上書き
  • >> : ファイルの最終行に1文を追記

重要なファイルの作業を実施する際は、必ずcpコマンドにてバックアップを取得しましょう。

まとめ

echoコマンドでは、このようなことができます。

  • 画面に文字列の表示
  • コマンドの実行結果の表示
  • 文字列をファイルに出力
  • 文字列をファイルに追記

bashスクリプトに応用してみては、如何でしょうか?

参考

echoコマンドの詳細まとめました【Linuxコマンド集】
意外と便利なコマンドtrue/false

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

【備忘録】AWS LightSailでterminalからssh接続

はじめに

AWS LightSailでデータサイエンス環境構築の練習の備忘録です

目次

  1. LightSailでインスタンスを作成
  2. shh接続

1. AWSのlightsailでインスタンスを作成する

https://lightsail.aws.amazon.com
image.png

2. ssh接続

アカウントページからプライベートキーをダウンロードする
image.png
アカウントページ
image.png

プライベートキーと設定ファイルを「~/.shh」ディレクトリに格納する

cd ~/.ssh
ls
Lightsail_ubuntu_20201123.pem   config
#Lightsail_ubuntu_20201123.pem・・・プライベートキー
#config・・・設定ファイル
~/.ssh/config
host lightsail_ubuntu
    HostName 3.112.200.82
    Port 22
    User ubuntu
    IdentityFile ~/.ssh/Lightsail_ubuntu_20201123.pem

ssh接続

ssh lightsail_ubuntu

もしくは、configファイルを設定せずにプライベートキーのオプションをつける方法もあります

ssh -i Lightsail_ubuntu_20201123.pem ubuntu@3.112.200.82

これで接続完了です!

参考

・Amazon Lightsailのサーバにssh接続する
https://nana4-story.com/ssh-amazon-lightsail

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

nf_tablesのnftコマンドメモ (CentOS8)

設定の削除
# nft flush ruleset
tableの作成
# nft create table mytable1
# nft list ruleset ip ##確認
chainの作成
# nft add chain ip mytable1 mychain1 { type filter hook input priority 0 \; }
# nft -a list chain ip mytable1 mychain1 ##確認
sshの許可
# nft add rule mytable1 mychain1 tcp dport 22 accept
ルールを追加するたびに確認
# nft -a list chain ip mytable1 mychain1
ssh以外の拒否
# nft add rule mytable1 mychain1 drop
戻りの通信は通す
# nft add rule mytable1 mychain1 handle 2 ct state related,established accept
icmp許可
# nft add rule mytable1 mychain1 handle 6 icmp type { echo-request, echo-reply } accept
8080許可
# nft add rule mytable1 mychain1 handle 2 tcp dport 8080 ip saddr 192.168.11.0/24 accept
10050許可
# nft add rule mytable1 mychain1 handle 10 tcp dport 10050 ip saddr 192.168.11.0/24 accept
設定書き出し
# nft list ruleset > ruleset.conf
設定読み込み
# nft -c ruleset.conf ## チェック
# nft -f ruleset.conf
削除
## table削除
# nft delete table mytable1

## chain削除
# nft delete chain mytable1 mychain1

## chain内のルールはhandleを指定して削除する
# nft delete rule myrule1 mychain1 handle 11
有効化
# systemctl enable nftables.service
# systemctl start nftables.service
# nft list ruleset > /etc/sysconfig/nftables.conf ##CentOS,RHELの場合
# サーバ再起動して設定が読み込まれているかチェック。

参考にしたサイト

https://knowledge.sakura.ad.jp/22636/
https://mimumimu.net/blog/2019/12/07/iptables-%E3%81%8B%E3%82%89-nftables-%E3%81%AB%E3%82%B5%E3%82%AF%E3%83%83%E3%81%A8%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%82%8B/

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

Linuxの超入門

概要

ここでは、Linuxの基本的な知識とコマンドを復習がてら書き留めておきます。

カーネルとは

CPUやメモリ、キーボード、ディスクといったハードウェアとコミュニケーションを取ることが出来る唯一のソフトウェア。

シェルとは

カーネルに直接つながっているチャットインターフェースのようなもの。
シェル言語を通して、カーネルでコマンドを実行出来る。
ざっくりいうとこんな感じだ。
人間 <=> シェル <=> カーネル

シェル言語の種類は、sh tcsh bash zshなどがある。

STDINとSTDOUT

LINUX環境でSTDINはインプット、STDOUTはアウトプットを制御するための装置です。
この装置をターミナルにつなげることで、キーボードを使って入力や出力を使うことが出来るようになる。

このように、インプット・アウトプットをつなげるようにすることをttyをアタッチするという。

シェルコマンド(基礎)

  • ディレクトリー操作系
# ディレクトリ情報の表示(list)
ls [dir]
# ディレクトリの移動(change dir)
cd [dir]
# 現在のディレクトリを表示(print working dir)
pwd
# ディレクトリの作成(make dir)
mkdir [folder name]
  • ファイル操作系
# ファイルの作成
touch
# ファイルに付け足し
echo >> [file name]
# ファイルのコンテンツ表示(concatenate)
cat test_file
  • タスクマネージャー系
# プロセスの表示(process status)
ps
# プロセスをバックグラウンドで起動(&)
sleep 60 &
# プロセスをフォアグラウンドに戻す(foreground)
fg
  • ヘルプ系
# コマンドのヘルプ(help) 
ps --help
# コマンドの保存先を表示(whitch)
whitch ps
# コマンドのマニュアルを表示(manual)
man ps
  • サーチ系
# ファイルやフォルダーを探す(find)
find / -type d -name test
# 文字を検索
grep "aaa" test.txt -n

# フォルダー名を探し、その中のファイルを文字検索
find / -type d -name test | xargs grep -r aaa
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

BlueZのマスター名を変えたい話

LinuxでBluetoothの名前を変えたい

コロナ禍で初の自作PCを組んだのですが、皆さんはホスト名ってどうしていますか?メーカー製なら決まった名前、Windowsだとデフォルトでランダムな英数字、Fedora、openSUSEだとlocalhostだったり、Ubuntu系はインストール時に自分で決めたりetc..。ラップトップ、デスクトップとLinuxを複数動かして名前が被っても面倒なので変えたい、と思ったら引っかかったのでメモ。

今回の環境

  • 自作PC
  • openSUSE Tumbleweed
  • GNOME desktop

ホスト名と分かれている..らしい

Screenshot from 2020-11-23 08-19-28.png

YaSTツールでホスト名を変えて、ターミナル上で変更を確認したのですがBluetoothの設定画面を覗いても変わっていなかったので、一緒に変えてくれるわけではないようでした。
そこでhciconfigを開こうとしたら、無くなっていたんですね。

hcitoolやhciconfigはBlueZに同梱されず

参照:https://wiki.archlinux.jp/index.php/Bluetooth#.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB
ラズパイだと使ってた気がしたけど、バージョンが古かったのか..?

なら代替品は?

非推奨なら入れて使う気にもならないしということでBlueZ自体に変わりがあるだろうと、helpを見ると

    [bluetooth]# help
    Menu main:
    Available commands:
    -------------------
    advertise                                         Advertise Options Submenu
    scan                                              Scan Options Submenu
    gatt                                              Generic Attribute Submenu
    list                                              List available controllers
    show [ctrl]                                       Controller information
    select <ctrl>                                     Select default controller
    devices                                           List available devices
    paired-devices                                    List paired devices
    system-alias <name>                               Set controller alias
    reset-alias                                       Reset controller alias
    power <on/off>                                    Set controller power
    pairable <on/off>                                 Set controller pairable mode
    discoverable <on/off>                             Set controller discoverable mode
    discoverable-timeout [value]                      Set discoverable timeout
    agent <on/off/capability>                         Enable/disable agent with given       capability
    default-agent                                     Set agent as the default one
    advertise <on/off/type>                           Enable/disable advertising with       given type
    set-alias <alias>                                 Set device alias
    (以下省略)

それらしきを発見ということで、さっそく

[bluetooth]# system-alias hogehoge

Screenshot from 2020-11-23 09-05-52.png
識別名称もちゃんと変わってくれましたね

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