FC2ブログ

Linux PC環境構築[53]:Ubuntuでscreenを使う

最近は新型コロナの影響で在宅勤務をしております。私に限らず在宅勤務の方も、職場へ出社を続けておられる方も、いろいろ苦労されているかと思います。早くこの状況を脱して欲しいですね。

自分は会社のWindowsのノートPCを持ち帰り、自宅から職場に置いているUbuntu PCに接続して作業をしておりますが、このような長期間の在宅作業になるならいろいろ準備をしておきたかったですね。会社のvpn接続が混み過ぎて社内networkに繋がらない、切れやすい、遅いとか、色々問題が出ています。

自宅から職場のUbuntu PCに接続できても、Ubuntuの画面共有やvnc接続では反応が遅くてストレスが溜まります。自分の作業ではGUIなツールを使わず、ビルドなどCUI主体で作業をすれば、TeraTermのssh接続で間に合います(間に合わせます)。その他はなるべくローカルにファイルを持ってきてWindows上で作業をしておりますが、Remote PC上でしかできないビルド作業が途中で落ちたら困ります。突然networkが切断された時のためにscreenを使います。

screenを使えば、1つの端末(console)内に1つないしウィンドウ切替/分割を伴って複数の仮想端末を生成することができる。さらに生成した仮想端末を閉じない限り、Networkが切断されても、ユーザがログアウトしても、仮想端末で起動したプロセスは、それを実行するPCをが健在な限りは継続して実行し続ける。そして、再度ログイン時にその仮想端末に再接続して作業を継続することができる。

この記事では、自分のPC(UbuntuまたはWindows)から、他のUbuntu PC(例えば、自分が直接Desktopの操作ができない離れた場所にあるビルドマシンのような Ubuntu PC、以下Remote PCと称す)にログインし、そのPC上でscreenを実行するケースについて述べる。
★もちろん自分のUbuntu PCにscreenをインストールして使用することもできる。



[Remote PCにログイン]
まず、自分のPCからRemote PCにsshでログインする。
自分のPC(UbuntuまたはWindows)からRemote PC(Ubuntu PC)へsshでログインできる設定、およびRemote PC上でsudoが使える環境整備が済んでいることが必要。
これ以降、Remote PCのconsoleで作業する。



[インストール]
Remote PCのconsoleで以下のコマンドを実行し、screenがインストールされているか確認する。

$ screen --version

"Command 'screen' not found"とメッセージが出てscreenのバージョンが表示されないなら、screenは未インストール状態である。以下のコマンドを実行してRemote PCにscreenをインストールする。

$ sudo apt update
$ sudo apt install screen



[screenの使い方]
まず、Remote PCのconsoleで以下のコマンドを実行して、現在の仮想端末のセッションのリストを表示してみる。仮想端末のセッションが無ければ以下のように表示される。

$ screen -ls
No Sockets found in /run/screen/S-(user名)



[新しいセッション生成]
Remote PCのconsoleで以下のコマンドを実行し、仮想端末の新しいセッションを生成する。セッション生成と同時にアタッチされ、コマンドを実行したRemote PCのconsoleは、生成した仮想端末に切り替わる。

$ screen
★これ以後、仮想端末のconsoleに切り替わる。
$ screen -ls
There is a screen on:
 1164.pts-0.(server名) (2020年05月01日 14時23分38秒) (Attached)
1 Socket in /run/screen/S-(user名)

"screen"と打てばPIDとserver名を組み合わせたセッション名で作成される。
PIDを指定して再接続できるが、セッション名を指定して生成しておけば、後から何のセッションだったか判断できて便利。この方法の使用を推奨する。
例えば"TEST-BUILD"を生成する。Remote PCで以下のコマンドを実行する。

$ screen -S TEST-BUILD
★これ以後、仮想端末のconsoleに切り替わる。
$ screen -ls
There is a screen on:
 1183.TEST-BUILD (2020年05月01日 14時31分04秒) (Attached)
1 Socket in /run/screen/S-(user名)

このRemote PCのconsoleの仮想端末で、ビルド等の通常の作業を行う。



[セッション継続して一時的にデタッチ]
通常は、ビルド実行中にRemote PCからログアウトした場合、もしくは意図せずNetworkが切断されてしまった場合、(端末やTeraTermを閉じてしまった場合も含む)、実行中のプロセスは消滅してしまう。
しかし、仮想端末上で実行中だったプロセスはログアウトやNetwork切断後もRemote PC上で継続して実行される。デタッチ後もプロセスは継続する。デタッチにより仮想端末のセッションがバックグランド動作になるようなイメージである。
手動でデタッチするには、Remote PCのconsoleで以下のコマンドを実行する。

$ screen -d PID
もしくは
$ screen -d (セッション名)
もしくは
Ctrl + a d ([Ctrl]+[a]を押した後に、[Ctrl]+[d]もしくは[d]を押す)
★これ以後、仮想端末アタッチ前のconsoleに復帰する。

例えば、仮想端末セッション"TEST-BUILD"をデタッチする。
$ screen -d TEST-BUILD
[remote detached from 1183.TEST-BUILD-0501]
$ screen -ls
There is a screen on:
 1183.TEST-BUILD (2020年05月01日 14時31分04秒) (Detached)
1 Socket in /run/screen/S-(user名)

デタッチ後、Remote PCをログアウトしても仮想端末で実行中のプロセスは継続して実行される。Remote PCのconsoleでデタッチ実行後、仮想端末から抜けたconsoleで"ps -aux"を実行すると、仮想端末で実行していたプロセスが継続実行しているのが判る。
ビルド実行中など、console使用中の場合は、Ctrl + a dを使ってデタッチする。



[セッションを再接続]
デタッチしたセッションに再接続して作業を再開することができる。
ビルド実行中にRemote PCからログアウトした場合、もしくは意図せずNetworkが切断されてしまった場合もこれで救済できる。(この場合は所望のセクションは"Attached"のままかもしれない。接続には強制アタッチを試してみる)
Remote PCに再接続し、consoleから以下のコマンドを実行し、仮想端末にアタッチする。
まず、デタッチしたセッションを確認。
$ screen -ls
There is a screen on:
 1183.TEST-BUILD (2020年05月01日 14時31分04秒) (Detached)
1 Socket in /run/screen/S-(user名)

Remote PCのconsoleでデタッチしたセッションに再接続する。
$ screen -r PID
もしくは
$ screen -r (セッション名)

前記セッションの再接続には以下のコマンドを実行。
$ screen -r TEST-BUILD

デタッチしていないセッションや、既に他のconsoleでアタッチされていると、そのセッションにはアタッチできない。Remote PCに再ログインの時点でも所望のセッションが(Attached)になっていることが時々ある。共用のRemote PCの場合は他者がそのセッションを使用している可能性もあるので気をつけること。
$ screen -r TEST-BUILD
There is a screen on:
 2714.TEST-BUILD (2020年05月02日 13時15分33秒) (Attached)
There is no screen to be resumed matching TEST-BUILD.
→ 指定したセッションにアタッチできない。仮想端末のconsoleに切り替わらない。


既に他でアタッチされている仮想端末を強制的にアタッチすることも可能。
"screen -ls"を実行して(Attached)になっているセッションに対して実行できる。
$ screen -d -r TEST-BUILD
(強制アタッチ。他にアタッチしているconsoleでは強制的にデタッチされる)
もしくは
$ screen -rx TEST-BUILD
(重複アタッチ。他にアタッチしているconsoleと共有アクセスになる。同一セクションをアタッチしているconsoleに同じ表示がされて、お互いの操作がそれぞれのconsoleに反映される)

★これ以後、仮想端末のconsoleに切り替わる。直前までの仮想端末の画面が表示される。

このRemote PCのconsoleの仮想端末で、ビルド等の通常の作業を行う。



[セッションの終了]
Remote PCに生成した仮想端末を閉じるには、Remote PCのconsoleから以下のコマンドを実行する。デタッチと異なりセッションは終了・消滅する。以後、このセッションへのアタッチはできなくなる。

$ screen -ls
There is a screen on:
 1164.pts-0.(server名) (2020年05月01日 14時23分38秒) (Attached)
1 Socket in /run/screen/S-(user名)

$ exit
もしくは
$ screen -XS PID quit
もしくは
$ screen -XS (セッション名) quit
★これ以後、仮想端末アタッチ前のconsoleに復帰する。

$ screen -ls
No Sockets found in /run/screen/S-(user名)
★セッションは終了して無くなっている。



[アタッチ時のウィンドウ操作]
セッションにアタッチ後は仮想端末上で様々なウィンドウ操作が使える。多くは[CTRL]+[a]から始まるプリフィックスコマンドで操作する。

・ウィンドウ一覧表示([Ctrl]+[a] [w])
 consoleの左下に一覧表示が数秒間表示される。
 セッション生成時にウィンドウは1つは生成されてアクティブになっている。
 仮想端末ではウィンドウの作成を行うことで複数のウィンドウを切り替えて使用できる。
 ウィンドウ一覧表示で、番号に1つだけ"*"が付いているものがあり、そのconsoleでアクティブなウィンドウである。

・ウィンドウの作成([Ctrl]+[a] [c])
 console(一つのセッション)にウィンドウを複数生成できる。
 直前に生成したウィンドウがアクティブ状態になる。
  追加生成したウィンドウの番号はウィンドウ一覧表示で確認できる。

・ウィンドウの切り替え([Ctrl]+[a] (ウィンドウ番号))
 console内で番号で指定したウィンドウに切り替える。
 表示中のアクティブなウィンドウはウィンドウ一覧表示で、番号に"*"が付いている。
 ウィンドウの順次切り替え([Ctrl]+[a] [n] および [Ctrl]+[a] [p])および
 ウィンドウの一覧から選択([Ctrl]+[a] ["])なども使用できる。

・ウィンドウの終了([Ctrl]+[a] [k])
 consoleで現在アクティブのウィンドウを終了する。
 "Really kill this window [y/n]"と聞かれるのでyまたはnを入力

・ウィンドウの上下分割([Ctrl]+[a] [S])およびウィンドウの左右分割([Ctrl]+[a] [|])
 現在のウィンドウを従来ウィンドウと、新規の何もないウィンドウに分割される。
 分割ウィンドウの移動で何もないウィンドウに移動して、新規にウィンドウ生成を行うか、
 ウィンドウの一覧から選択([Ctrl]+[a] ["])などで既存ウィンドウを割り当てる。
 ウィンドウの上下分割と左右分割を組み合わせて細かく分割することも可能。

Screenshot from 2020-05-03 19-16-22

Screenshot from 2020-05-03 19-18-08

 なお、デタッチ後の再アタッチでは分割表示は再現されず、複数のウィンドウ定義になる。

・分割ウィンドウ間の移動([Ctrl]+[a] [TAB])
 アクティブな分割ウィンドウを移動する。

・分割ウィンドウの削除([Ctrl]+[a] [X])
 アクティブな分割ウィンドウを終了する。


その他、コピーモードなどconsole内で使える機能がある。いずれ追記したいと思います。








スポンサーサイト



テーマ : Linux
ジャンル : コンピュータ

Linux PC環境構築[52]:Wineでアンテナ解析ソフト"MMANA"を使う

私は数十年前、趣味としてアマチュア無線をやっておりました。今年はコールサインを復活させ、空への復帰を果たしたいと思います。無線機を準備すると共に、アンテナも設営しなければなりません。Vectorから入手したWindows用のアンテナ解析ソフト"MMANA"がWine環境で動作しました。

[MMANAをインストール]
ブラウザで​Vector​からMMANAのインストーラ"mmana176.exe"をダウンロードする。
https://www.vector.co.jp/soft/win95/home/se094485.html

端末を起動し、以下のコマンドを実行する。GUIの"プログラムの追加と削除"が起動する。
------------------------------------------------------------
$ WINEARCH=win32 wine uninstaller
------------------------------------------------------------

[インストール]をクリックしてファイル一覧を表示し、[ファイルの種類]で[プログラム(*.exe)]を選択し、~/Download/ 以下のexeファイルが表示させて"mmana176.exe"を選択して開く。後はインストーラーの指示に従ってインストールする。インストール先はデフォルトの[C:\MMANA]のまま実行した。端末には幾つかエラーが表示されるが、インストールは完了するはず。
Screenshot from 2020-02-08 18-58-17

[MMANAの起動script作成]
以下の内容で~/bin/mmana.sh を作成し実行権を与える。
------------------------------------------------------------
#!/bin/bash

WINEARCH=win32 wine ~/.wine/drive_c/MMANA/MMANA.exe &
------------------------------------------------------------

~/.bashrc に以下のaliasを追加し、端末を再起動する。
------------------------------------------------------------
alias mmana="~/bin/mmana.sh"
------------------------------------------------------------
端末で、"mmana"もしくは"mmana.sh"と打つとMMANAが起動する。


[MMANAの使い方]
MMANAを紹介している方がおられまして、​皆空の中で... ​http://take103.blog.fc2.com/​ の​MMANAで垂直アンテナのインピーダンスの算出と整合回路(1)​ http://take103.blog.fc2.com/blog-entry-193.html ​にて詳しく解説されています。参考にさせて頂きました。

とりあえずMMANAを起動し、付属のサンプルデータを読み込んで解析させてみる。
Screenshot from 2020-02-08 22-40-05

MMANAのメニューから[ファイル] → [開く]と辿り、[アンテナファイルを開く]でファイル一覧を表示する。
Screenshot from 2020-02-09 16-06-29

最初はファイル一覧とアンテナの種類の関係が良く解らないが、色々ファイルを開くうちに慣れてくる。ファイル名に"DP"と付けばダイポールアンテナ、"GP"はグランドプレーン、"12EL.."と付けば12エレメント八木アンテナという具合である。中にはファイル名から連想できないようなアンテナもある。まずはファイルを開いてみることだ。ここでは"GP40S.MAA"を選択した。40mバンド、すなわち7MHz用のグランドプレーンである。ラジアルは真横ではなく、下側に向けて角度をつけた構造をしている。


[アンテナ定義タブ]
この画面では書くエレメントの長さや太さが、x, y, z軸で入力されている。
サンプル"GP40S.MAA"では5本のエレメントが定義されている。
Screenshot from 2020-02-09 16-06-37


[アンテナ形状タブ]
この画面ではアンテナ定義に基づくアンテナ形状が表示される。
サンプル"GP40S.MAA"5本のエレメントの配置が確認できる。視点を変えて表示もできる。
Screenshot from 2020-02-09 16-06-42


[計算タブ]
中心周波数や、地上高などの定義を入力して、アンテナ定義に基づくインピーダンス、SWR、GAIN、放射パターンなどの計算ができる。
Screenshot from 2020-02-09 16-06-56


[計算]をクリック後、[周波数特性]をクリックする。
Screenshot from 2020-02-09 16-07-19


[推測]、[全点]、[詳細]をクリックしてから[Z]、[SWR]などをクリックして結果をみる。
Screenshot from 2020-02-09 16-08-15

Screenshot from 2020-02-09 16-08-18

Screenshot from 2020-02-09 16-08-31

Screenshot from 2020-02-09 16-08-37










また計算タブからワイヤーやエレメントの編集ができる。[周波数特性]のサブウインドウを開いて各エレメントの修正ができる。
このケースでは7MHzのフルサイズGPでグランド側は各ラジアルが天頂角135度で、結構下向き(アンテナ全体が上下に長い)形状をしている。この位の角度のラジアルにすると、特別なマッチング回路なしで50Ωにマッチングする。これを実際に建てられるかどうかは別にして、計算上はこうなるようである。SWRの最良点の周波数が7MHz以下になっているので、各エレメントを10.3mから10cm, 最終的には20cm短くして周波数を上げて再計算してみた。

Screenshot from 2020-02-09 16-16-24

編集するエレメント(ワイヤー)をクリックして赤線にして、右側のパラメータ表示のところをクリックすると以下のウィンドウが開く。長さを修正する。これを全エレメントについて実施する。

Screenshot from 2020-02-09 16-16-33

Screenshot from 2020-02-09 16-17-27

Screenshot from 2020-02-09 16-21-25

修正が終わったらもう一度[計算]を実行し、結果を確認する。

Screenshot from 2020-02-09 16-24-50

これで7MHz帯で主に音声通信で使用する帯域にSWR値の最良点を持ってこれた。フルサイズのアンテナだと帯域内で良好なSWR値を示しているが、この結果はあくまで計算上の話。実際にはそもそもこんな大きなアンテナを建てられる人はめったにいないだろうし、隣接する建造物などの影響を受けるので、このまま計算通りにはならないだろう。カット&トライが必要になる。しかしこれはアンテナ設計の指標になるし、これを出発点にして頑張ればいいのである。



[使用したWindowsツール]
[MMANA]
https://www.vector.co.jp/soft/win95/home/se094485.html

テーマ : Linux
ジャンル : コンピュータ

Linux PC環境構築[51]:Wine 5.0へアップデート

以前、​Linux PC環境構築[23]:Wine 4.0の導入​ の記事を書いた時、サクタエディタのタブ表示が使えるようになって喜んだのもつかの間、その後のWineのアップデート(Wine 4.0.2あたり)では一転してサクラエディタのタブの動作が不安定となって、再びタブ表示は使い物にならなくなった。タブ表示の動作以外はマクロが動かないなどの不満はあるが、落ちるなどの大きな問題はなく、仕方なくタブ表示なしでサクラエディタを使っていた。
★追記:再度試してみたら外部マクロのキー割り当てを行ってマクロは動きますね。私の設定がまずかったようです。[alt]+[PgUp]にフォント拡大、[alt]+[PgDn]にフォント縮小を設定して使っています。

さて、この度Ubuntu 18.04でもWine 5.0が配信され始めたが、aptのアップデートでは保留にされてしまう。
--------------------------------------------------
$ sudo apt update
$ sudo apt upgrade
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
アップグレードパッケージを検出しています... 完了
以下のパッケージは保留されます:
wine-stable winehq-stable
アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 2 個。
--------------------------------------------------

[FAudio packagesのインストール]
Wine 5.0を導入するには追加のパッケージが必要になる。何が必要なのか明確に表示してくれればいいのにと思うが ... Wine 4.5 wine-develからはFAudio packages が必要になるらしい。Ubuntu 18.04では標準では入らないので、何らかの方法で導入する必要がある。

​WineHQ​ のサイトに情報があり、手順に沿って必要なパッケージを導入してからWine 5.0へのアップデートを試してみる。
★既にUbuntu 18.04 にWine 4.x を使用している環境を前提に記事を書きます。これからWine 5.0 を導入する方は、下記手順の後で​WineHQ Wiki (https://wiki.winehq.org/Ubuntu)​を参考に導入して下さい。

WikiにあるLink ​https://forum.winehq.org/viewtopic.php?f=8&t=32192​ の以下の手順の部分に沿ってインストールを進める。まずブラウザでアクセスして以下の手順のところを探して辿り着く。
--------------------------------------------------
Ubuntu 18.04:
Download the Release.key. Navigate to the directory you downloaded it to and install it with
--------------------------------------------------

ブラウザで"​Release.key​."のところのlink からRelease.key を~/Downloads/ にダウンロードして保存する。次に端末から以下のコマンドを実行する。
--------------------------------------------------
$ sudo apt update
 :
 :
$ cd ~/Downloads/
$ sudo apt-key add Release.key
OK
$ sudo apt-add-repository 'deb https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/xUbuntu_18.04/ ./'
 :
 :
取得:10 https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/xUbuntu_18.04 ./ InRelease [1,559 B]
取得:11 https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/xUbuntu_18.04 ./ Packages [16.7 kB]
107 kB を 2秒 で取得しました (46.1 kB/s)
パッケージリストを読み込んでいます... 完了
--------------------------------------------------

端末から以下のコマンドを実行してWine 5.0 へのアップデートを試みる。
初めてWineをインストールする方は WineHQ Wiki (https://wiki.winehq.org/Ubuntu)​ か ​Linux PC環境構築[23]:Wine 4.0の導入​ の記事も参考に。
--------------------------------------------------
$ sudo apt update
$ sudo apt upgrade
 :
 :
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
アップグレードパッケージを検出しています... 完了
以下のパッケージが新たにインストールされます:
libfaudio0 libfaudio0:i386
以下のパッケージはアップグレードされます:
wine-stable wine-stable-amd64 wine-stable-i386:i386 winehq-stable
アップグレード: 4 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。
124 MB のアーカイブを取得する必要があります。
この操作後に追加で 441 MB のディスク容量が消費されます。
続行しますか? [Y/n]
--------------------------------------------------

[Y]を入力し、インストールを実行する。
途中で"Wine Mono"と"Wine Gecko"のインストールを促されたら指示に従いインストールする。

インストール後、Wineのバージョンを確認。
------------------------------------------------------------
$ wine --version
wine-5.0
------------------------------------------------------------


[サクラエディタのタブは動くか]
関心事のサクラエディタのタブ表示の件だが、結論から言うと"そこそこ動いた"が、Windowsでの動作にはまだ及ばない。なお、検証したサクラエディタはVer.2.2.0.1である。サクラエディタについて以下の設定を行った。

[設定]→[タブバー]→[タブバーを表示する]をチェック。
[設定]→[タブバー]→[ウインドウをまとめてグループ化する]をチェック。
[設定]→[タブバー]→[最後のファイルを閉じたとき(無題)文書を残す]をチェックを外す。
[設定]→[タブバー]→[外部から起動するときは新しいウインドウで開く]にチェック。

ファイルをOpen/Closeなど、タブバーに関わる操作でサクラエディタのウインドウが一瞬ピクつき(一度消えて再表示される)、サクラエディタのウインドウ表示位置が少し移動する。これはかなり気になる。改善して欲しいです。

まだサクラエディタが落ちるケースがあり、おおよそ特徴が判ったので以下にまとめる。
基本的に問題のあるタブ表示だけが落ちて、サクラエディタそのものが落ちるわけではないので、編集中のファイルを道連れで落ちることは無い模様だが、正直まだ安心はできない。

サクラエディタが落ちた後、サクラエディタを再起動すると、大抵の場合は最初からプログラムエラーで落ちた状態になる。もう一度(場合によっては数回)サクラエディタを起動し直すと今度か正常に起動する。

なお、サクラエディタ起動時のタブが[無題1]になっていない場合は、サクラエディタが落ちた際にプロセスが残留している。端末から以下のコマンドを実行してサクラエディタのプロセスIDを確認してkillすることで解消できる。以下に例を示す。
------------------------------------------------------------
$ ps aux | grep sakura
(sakuraを含むプロセスが表示される)
$ kill -9 (プロセスID)
------------------------------------------------------------


[確認できたサクラエディタがプログラムエラーで落ちるケース]
・タブが1つだけ表示されている時に、そのタブを閉じると落ちる。
[設定]→[タブバー]→[最後のファイルを閉じたとき(無題)文書を残す]にチェックが入っていると、最後のタブを閉じると落ちる。
→ 上記チェックを外し、最後のファイルを閉じた時にサクラエディタが終了するようにすれば回避できる。

・サクラエディタのタブバーの空いているところをクリックして空白の新規タブを追加しようとすると落ちる。
Windowsで動作するサクラエディタで実行可能なやり方で新規タブを追加すると、新規タブが落ちて追加できない。既存のタブ表示には影響はない模様。
→ 上記手順は"やらない"ようにするしかない。新規にサクラエディタを起動する。
★追記:[ファイル]→[新規作成]をクリックすることで[新規]タブ追加が成功するようである。

・サクラエディタからGrepを実行すると、Grep結果のタブ表示が落ちる。
同一のサクラエディタ上では新規にGrepを実行すると、その結果のタブ表示が落ちる。
[設定]→[タブバー]→[外部から起動するときは新しいウインドウで開く]にチェックを入れて、Grep結果ウインドウを新しいウインドウに分けて表示すれば落ちない。
なお、Grep結果タブを1つのサクラエディタにドラック&ドロップで統合することができる。その後、Grep結果タブを再利用してGrepを行う際はGrepの結果タブは落ちない。新規にGrep結果タブが生成されるのがNGの模様。


[サクラエディタのタブ機能でできること]
Wine 5.0環境でのサクラエディタはまだ安定しているとは言えないが、Wine 4.0.3 環境よりはるかにマシになったと感じる。とはいえWine 4.0 で出来ていた状態に戻っただけにも思える。サクラエディタでは以下のことが出来るのは確認できた。
・サクラエディタのGrep実行結果を(別ウインドウで)タブ表示。
・同じサクラエディタ上でファイルを新しいタブで開く。または閉じる。
・サクラエディタのタブをディスクトップにドラッグ&ドロップして、新しいサクラエディタを開く。
・テキストファイルのタブをドラック&ドロップして複数のサクラエディタ間で移動。
・ファイル(ファイルマネージャー)からファイルをサクラエディタにドラック&ドロップして開く。

今後、さらに安定動作することを願いたい。

2020/02/24追記:
... と書いているうちに2/20かそれより少し前のaptによるupdate後、またサクラエディタがタブ有効化で落ちるようになりました。Wineは5.0のままでUpdateは無いようですが、安定しませんね。


[WineHQ]
https://www.winehq.org/

テーマ : Linux
ジャンル : コンピュータ

Linux PC環境構築[50]:UbuntuにWindows10の共有フォルダをマウント

2020年1月、いよいよWindows7の終焉です。今まで長い間ありがとう!

この正月、ずっとこの記事を書き続けている古いノートPC(Epson NY2100S)を全初期化して環境を再構築しました。Windows7は何かに使うかもと思い、領域を狭めて再インストールしました。多分使わないと思いますが、無くすのも惜しいのです。Ubuntuも再インストールし、現状、HDDは以下のような構成になっています。数々のOSがboot可能になっています。
・Windows7  200GB
・Ubuntu18.04 710GB (メインで使用、データ込み)
・Ubuntu18.04 10GB (実験・人柱用)
・Ubuntu Studio19.10 20GB (音楽創作用。全然使いこなせていない)
・予備 20GB (新しいOS導入用)


自分の古いノートPCはWindows7からWindows10にアップデートできなかったが、Ubuntu 18.04のPCに進化しました。現在では、日々の作業は全てUbuntuで出来るようになりました。
一方でウチの家庭内共用PCはWindows10にアップデート済です。ここではUbuntu PCに、Windows10のフォルダ共有が使えるようにmountしてみます。
★Ubuntuの[ファイル]から[他の場所]を参照するとWindows10 PCの共有フォルダが見えてアクセスできることがあるが、今回はUbuntu起動時にUbuntu上にWindows10の共有フォルダをmountすることを念頭に記事を書いた。

[Windows10側のフォルダ共有の設定]
既に多くの記事があり、Windows同士でフォルダ共有を使用されている方も多いと思うので、ここでは詳しく言及しない。以下の点がポイントなる。
・公開するフォルダを決めてフォルダのプロパティで[共有]を実行。
・[詳細な共有]で、(外部に見せる)共有フォルダ名を設定する。
・[共有アクセス許可]に自分を追加して、自分の[アクセス許可]でフルコントロール、変更、読み取りをチェックする。


[Ubuntu側のmount設定]
まず、Windows10 PCのip address, 自分のユーザ名、パスワードなどを確認しておく。
端末から以下のコマンドを実行して"cifs-utils"がインストールされているか確認する。"cifs-utils"がインストールされていない場合はここでインストールする。
------------------------------------------------------------
dpkg -l | grep cifs
ii cifs-utils 2:6.8-1 amd64 Common Internet File System utilities
★cifs-utilsがインストールされていれば上記のようにバージョンなどが表示される。

$ sudo apt update
$ sudo apt install cifs-utils ★cifs-utilsが無い場合はインストールする。
------------------------------------------------------------

端末から以下のコマンドを実行して、Ubuntu PC上のmount pointを生成する。ここでは"/mnt/nas/windows"とする。
------------------------------------------------------------
$ sudo mkdir -p /mnt/nas/windows
$ sudo cd /mnt/nas
$ sudo chmod 777 windows
------------------------------------------------------------

端末から/etc/fstabの最後尾にWindows10 PCの共有フォルダのmount定義を追記する。
windows10 PCの drive ip address, Windows10 PCのusername, passwordなどを設定する。
------------------------------------------------------------
$ sudo vi /etc/fstab

//(Windows10 PC のip address)/(共有フォルダ名) /mnt/nas/windows cifs username=(Windows10 User名),password=(Windows10 User名のパスワード),uid=1000,gid=1000,file_mode=0775,dir_mode=0775,async,nofail,noexec,nouser,rw 0 0
------------------------------------------------------------

ぱっと見でも、上記設定はパスワードが見えるのでイヤだという方にはオススメできない方法である。すいません。
最初、Ubuntu側から読み込みはできるが書き込めないという現象に遭遇し、uidやfile modeなどの設定を追加して解決した。日本語のファイル/フォルダ名も文字化けせず見えている。
自分のUbuntu PCは自宅以外に持ち出すこともあるので、上記設定(nofail)はWindows10のフォルダがマウントできない場合にエラーになってUbuntuの起動が止まらないようにしている。Windows10の共有フォルダに繋がらない時は、それ以上は何もせず、接続の再試行もしない。
自宅でUbuntu PCを起動時に、Windows10 PCが先に起動していれば、ネットワークに有線LAN接続の場合は大抵は自動的に接続されるが、無線LAN接続の場合はネットワークドライブは自動接続に失敗する。タイミングとか関係している模様。
Windows10の共有フォルダへの接続が必要な時は以下のコマンドを実行すると無線LAN接続時でも共有フォルダに接続されるので、特に不自由は感じていません。
------------------------------------------------------------
$ sudo mount -a
------------------------------------------------------------

テーマ : Linux
ジャンル : コンピュータ

Linux PC環境構築[49]:Ubuntuが反応しないときの対処方法

Ubuntu PCでkernelなど規模の大きなソースコード環境をvscodeで解析していると、処理負荷が高くなって、たまにPCが何も操作を受け付けない状態になることがあった。(C/C++ Extentionは負荷が高くなりやすいですね)
また、wineで起動したNami2000などのアプリがフリーズしたこともあった。

どんな場合でも焦って電源ボタンを押して強制的に電源OFFすることはオススメできない。適切な手順を踏むことで正常状態に復帰させたり、被害を最小限に留めることができる。


操作を受け付けない範囲を分類すると以下のものが考えられる。
1). 特定のアプリが操作に反応しない。フリーズしている。
2). PCが全体的に操作に反応しない。フリーズしている。

また、操作を受け付けない原因として以下のものが考えられる。
1). 特定の異常プロセスやアプリが高負荷をかけたりフリーズしている。
2). そもそもX Window Systemがフリーズしている。

kernelが健在なら適切な対処により、この状態から脱出できる可能性がある。



[特定のアプリを強制終了する]
操作を受け付けない特定のアプリや端末で[Ctrl] + [c]を押して処理を抜ける場合もあるが、状況が変わらない場合はそのアプリを強制終了させる。なお、作業途中のセーブしていないデータは救えない。

端末から以下のコマンドを実行し、問題があるプロセスやアプリのPIDを探し出す。
------------------------------------------------------------
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 225444 9268 ? Ss 08:37 0:01 /sbin/init splash
root 2 0.0 0.0 0 0 ? S 08:37 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 08:37 0:00 [rcu_gp]
  :
  :
(user) 2672 1.4 0.9 2696072 37160 pts/1 Sl 09:17 0:45 /home/(user)/.wine/drive_c/Program Files/Nami1931beta/Nami2000.exe
(user) 2675 0.9 0.2 25904 8940 ? Ss 09:17 0:29 /opt/wine-stable/bin/wineserver
  :
  :
(user) 4121 2.5 0.1 33152 6984 pts/0 Ss 10:07 0:00 bash
(user) 4122 0.0 0.0 47792 3628 pts/0 R+ 10:07 0:00 ps aux
------------------------------------------------------------


問題があるプロセスやアプリの見当が付くようであれば、grep して絞り込んで表示させることもできる。問題のアプリがwineで起動したNami2000である場合は以下のようにコマンドを実行する。
--------------------------------------------------
$ ps aux | grep Nami2000
ps aux | grep Nami2000
(user) 2672 1.6 0.9 2696068 37140 pts/1 Sl 09:17 0:53 /home/(user)/.wine/drive_c/Program Files/Nami1931beta/Nami2000.exe
(user) 4274 0.0 0.0 22556 1148 pts/0 S+ 10:13 0:00 grep --color=auto Nami2000
--------------------------------------------------

その他にwineserverなどが起動しているが、まずはNami2000を強制終了させてみる。
Nami2000.exeのPID(この場合は2672)を確認し、端末から以下のコマンドを実行する。
--------------------------------------------------
$ sudo kill -9 2672
--------------------------------------------------

これは上のgrep結果のNami2000.exeのPID 2672のプロセスに対し、killコマンドでSIGKILL(9)を送信することで対象プロセスを強制終了させるものである。うまく行けばNami2000(かwine側なのか判らないが)はシグナルに反応して終了し、閉じられる。再度"ps aux"を実行するとPID 2672は一覧に見つからない。wineで起動したNami2000の強制終了は成功である。



[何も操作を受け付けない状態から脱出できない場合 その1]
私がたまに遭遇するのが、作業中にPCを放置しておいて、PCの画面がロック画面に遷移したままフリーズしている現象である。
プロセスが高負荷状態でフリーズしていたり、異常動作をしているプロセスをkillすることで、操作不能状態から脱出できることがある。とは言ってもロック画面で操作を受け付けない状態ではお手上げである。CUI画面に遷移してログインできれば操作が可能なことが多い。

まず、Ubuntu PCのキーボードで[Ctrl] + [Alt] + [F2] を押してCUI画面に遷移するか様子をみる。一分間程様子をみても何も反応が無ければファンクションキーを変えて、[Ctrl] + [Alt] + [F3] を試してみる。以降、反応が無ければ[Ctrl] + [Alt] + [F6] まで試してみる。

CUIのログイン画面へ遷移できたら、ユーザ名とパスワードを入力してログインする。その後通常の[端末]と同じ要領で操作する。

以下のコマンドを実行し、問題がありそうなプロセスのPIDを探し出す。
--------------------------------------------------
$ ps aux
--------------------------------------------------

問題があるプロセスやアプリの見当が付くようであれば、grep して絞り込んで表示させる。例えば問題のプロセスがvscode と思われる場合は以下のようにコマンドを実行する。
--------------------------------------------------
$ ps aux | grep vscode
--------------------------------------------------

問題があるプロセスの見当が付かないようであれば、topコマンドで処理負荷の高いプロセスを表示させてみる。
--------------------------------------------------
$ top
--------------------------------------------------

topコマンドではCPU使用率の高いプロセスの順に表示される。常に高負荷(100%近くとか)のプロセスは怪しいが、必ずしもCPU使用率の高いプロセスが原因とは限らない。例えば自分のPCではclamscan がスキャン実行中で重い時は、topコマンドでみるとclamscan のCPU使用率は30から100%と表示されるが、これは異常ではない。スキャンが終われば解消する。
なお、topコマンドは[Ctrl] + [c] で終了できる。


該当するプロセスが見つかれば前記Nami2000を同様に強制終了させてみる。
該当プロセスのPIDを確認し、端末から以下のコマンドを実行してSIGKILL(9)を送信してみる。
--------------------------------------------------
$ sudo kill -9 (該当PID)
--------------------------------------------------

指定したプロセスが終了したか確認する。
--------------------------------------------------
$ ps aux
--------------------------------------------------
その後、[Ctrl] + [Alt] + [F1] でCUIでの操作を抜けて、元のGUI画面に戻る。
操作を受け付ければ解決。駄目なら原因プロセスの捜索を続けるか、再起動のための次の操作を行う。
高負荷プロセスが存在しなかったり、負荷は正常で、原因プロセスが不明の場合はX Window Systemがフリーズしている可能性もある。









[何も操作を受け付けない状態から脱出できない場合 その2]
前記手順でもUbuntu PCのデスクトップが反応せず、原因が判明しない場合は諦めて再起動させた方が早い。なお、作業途中のセーブしていないデータは救えない。
再起動にも作法があり、一定の手順を踏めば被害を最小限に留めることができる。隠しコマンドのようなキー操作になるが、以下の手順に沿って操作することで再起動できる。

まず、前記のようにUbuntu PCのキーボードで[Ctrl] + [Alt] + [F2] を押してCUI画面に遷移する。

再起動前にプロセス終了やファイル書き込みを手動で実行する。
[Alt] + [PrintScreen] を押下したままで [r], [s], [e], [i], [u], [b]の順にキー操作すると再起動する。

操作の内容は以下の通り。CUI画面上にコマンド実行の度にログが表示されるので、各コマンドの実行完了を確認し、次のコマンド実行へ移ること。この手順で必要な操作は足りずはず。実行順番を間違えないこと。

[Alt] + [PrintScreen] + [r]
-> X Window Systemからキーボード制御権限を復帰

[Alt] + [PrintScreen] + [s]
ー> ファイルシステムのSync実行

[Alt] + [PrintScreen] + [e]
-> プロセスにSIGTERM(15)シグナルを通知してプロセス終了

[Alt] + [PrintScreen] + [i]
-> SIGKILL(9)シグナルで終了しないプロセスを強制終了

[Alt] + [PrintScreen] + [u]
-> ファイルシステムを読み込み専用モードでリマウント

[Alt] + [PrintScreen] + [b]
-> 再起動する

これでUbuntuが再起動する。
なお、kernelが死んでいてCUIでもキー入力を受け付けない場合は残念ながらこの方法も使えない。その場合はUbuntuが壊れないことを祈りつつ電源スイッチを切るしかない。

テーマ : Linux
ジャンル : コンピュータ

いらっしゃいませ
現在の閲覧者数:
プロフィール

クロカワ工房

Author:クロカワ工房
Linux, 組込みマイコン関連、SDRの話題を中心に取り上げて行きたいと思います。
連絡先:
kurokawa774jp-koubou@yahoo.co.jp

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
これまでの来場者数
おすすめのアイテム
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR