【Bash】Windows Subsystem for Linux【WSL】8

■ このスレッドは過去ログ倉庫に格納されています
2020/05/29(金) 17:58:21.78ID:N31NEDSz
ついにWSL2が登場したぜー。こりゃ完全にLinuxだ。ヒャッハー!WSL最高!開発にLinuxは使わねぇー。Windowsで開発してLinuxは動かすだけや!

WSL2アーキテクチャ
https://www.atmarkit.co.jp/ait/articles/1906/14/news019.html

WSL 2では、仮想マシン環境が起動し、bashがコマンドを受け付けるまで2秒程度という速度で起動できる。
このため、コマンドプロンプトなどからwsl.exeなどを使ってbashコマンドを処理する時間は、
現在のWSL 1とほとんど変わらない。また、本物のLinux実行環境であるため、
これまで正しく動作できなかったアプリケーション、例えばコンテナシステム(Dockerなど)や
ユーザーファイルシステム(FUSEなど)も動作させることができる。その上で、現在のWSL 1と同等の機能と使い勝手を実現するという。

WSL 2はWSL 1を置き換えずに併存する
 WSL 2が登場したからといって、WSL 1は廃止になるわけではなく、引き続き利用可能である。

ファイル共有プロトコル「9P」でWSL 1との互換性を確保
 このように、WSL 2とWin32環境の間のファイル共有は、どちらも9Pを使うことになる。
 また、WSLからWin32プログラムを起動する「Win32相互運用性」では、最初にWSL側で、
実行ファイルを判別する必要がある。具体的には、実行ファイル先頭のマジックナンバー
(Win32ではMZ)を見て、LinuxのELF64か、Win32の実行ファイルなのかを判断する。

【Bash】Windows Subsystem for Linux【WSL】7
https://mao.5ch.net/test/read.cgi/linux/1579395785/
2020/07/12(日) 00:03:51.97ID:8IVU8OYq
この板に来る奴の多くはシェルスクリプトしか(それも少しだけしか)できなくて他に選択の余地ない奴が多いだろ
2020/07/12(日) 00:05:51.50ID:7U4pPq4C
>>302
それはsedやawkじゃあかんのか?
2020/07/12(日) 00:05:55.44ID:X6+2ZbgQ
>>303
そういうやつがわざわざここに来るとは思えんけどなぁ...
2020/07/12(日) 00:17:51.66ID:s6Bmu8gK
>>304
基本的にはsedではperlで使う(といっても、もう一般的な)正規表現の記法が使えない
\w、\dあたりは使えたほうが便利
2020/07/12(日) 00:29:09.06ID:8IVU8OYq
>>305
この板に来る奴の多くは一般的なプログラムをつくらないだろ
(作るのは簡単なシェルスクリプト)
そんな奴は、Ruby、Python、Perlのような言語を学ぶなんてしない
2020/07/12(日) 00:34:27.31ID:s6Bmu8gK
簡単だからこそ、用途に応じて使い分けるということは理解できないかな?
309login:Penguin
垢版 |
2020/07/12(日) 00:34:34.83ID:5U5bHZ+6
fzf などのインクリメンタルサーチで選択した文字列をそのまま端末の出力バッファに送り込みたい場合、bash環境ではPerlが使われる。
以下に端末の出力バッファに文字列を送る例を示す。0x5412は、bash環境におけるTIOCSTIの実値。

$ perl -e 'ioctl STDOUT, 0x5412, $_ for split //, do{ "echo hello\necho world\necho foobar" };'
310309
垢版 |
2020/07/12(日) 00:41:10.00ID:5U5bHZ+6
訂正。
0x5412は、Linux環境におけるTIOCSTIの実値。
311login:Penguin
垢版 |
2020/07/12(日) 02:29:56.32ID:DN64b1Du
決まった処理させるのにコマンド羅列で済むから最初はbatにするんだけど
扱う対象が増えたりで少し便利にしたいと思ったら途端に面倒になるので
Perlに組み込むなんてことは普通によくある
312login:Penguin
垢版 |
2020/07/12(日) 12:08:18.23ID:b0mOmfy0
Ubuntuの初心者ですが
皆さんはデスクトップは何を使用しているのでしょうか
良かったらお勧めのデスクトップを教えてください
2020/07/12(日) 12:12:35.50ID:lPaBZYh6
Xfce4 というか Xubuntu
インストール後 Japanese team の追加パッケージをインストール
http://ubuntulinux.jp/japanese
2020/07/12(日) 12:14:03.59ID:lPaBZYh6
書き込んでから気づいたがWSLスレだった。すまん
2020/07/12(日) 12:14:32.11ID:I0Hzl5QJ
可読性の高い、Ruby が確実。
漏れは、パッケージの更新も、Ruby スクリプトでやってる

#!/usr/bin/env ruby

# sudo のパスワードを自動入力する
puts `echo パスワード | sudo -S apt-get update`

puts `sudo apt-get upgrade -yV`
316login:Penguin
垢版 |
2020/07/12(日) 13:13:20.26ID:5U5bHZ+6
パスワードをファイルにベタ書きしたらだめでしょ。
visudo でパスワードなし実行するユーザとコマンドを設定したほうがい。
2020/07/12(日) 13:45:35.95ID:IgrSJcin
パッケージの更新とかならMakefileがお手軽じゃない?
2020/07/12(日) 14:16:56.67ID:7I/a/XJM
>>304
AWKには"文字"の置換はない("文字列"の置換はある)。Sedは内部に tr コマンドがない代わりに y コマ
ンドで"文字"の置換を行え、原理的に速いが、trコマンドやPerlの tr 演算子のように、文字の範囲指定
([0-9]で数字を構成する文字全て、等)ができないので、使い勝手で劣る。
2020/07/12(日) 15:27:21.95ID:gM0oNR+O
>>315
パスワードをそのままスクリプトに書くのがまずやばいし
そういう簡単な実行頻度の高いやつは
Ctrl+R で履歴検索からでええのでは、、
2020/07/13(月) 03:50:31.62ID:z3yut/lS
>>301
それperlからシェル呼んでるだけだろ
2020/07/13(月) 05:28:24.03ID:Mfeh6D4T
コマンドを関数と同じように使える言語があってもいいと思うんですけどね
それがシェルなんだろうけど、言語なんでインタラクティブシェル機能ははなくていいw
なぜかみんなPOSIXシェルの代替を目指す。
そんなん無理だろうに
2020/07/13(月) 07:11:54.65ID:6r2RwdRo
シェルを介さずに外部コマンド呼ぶ方法なんてperlにもpythonにも普通にあるだろ
2020/07/13(月) 07:28:25.76ID:Mfeh6D4T
シェルを介さずに外部コマンド呼ぶことはできるが
パイプのように出力側と入力側でブロックせずに並列で処理を実行できる機能がない
2020/07/13(月) 07:31:30.16ID:6r2RwdRo
>>323
>>パイプのように出力側と入力側でブロックせずに並列で処理を実行できる機能がない
どういう意味?
2020/07/13(月) 07:50:17.85ID:Mfeh6D4T
>>324
これを実行してみればわかる

for i in $(seq 100); do sleep 1; echo $i; done | grep -E "3|5|8"
2020/07/13(月) 07:53:44.80ID:6r2RwdRo
>>325
子プロセス作ればいいだけじゃん
2020/07/13(月) 10:22:54.04ID:Mfeh6D4T
>>326
子プロセスを作るだけというのなら
実際に子プロセスを作るだけで動くコードを書いてみましょう。
子プロセスを作るのは難しいという話ではないですよね?w
2020/07/13(月) 11:32:58.52ID:6r2RwdRo
素直に分からないから教えてくださいってお願いできないものかね
プロセス間通信でググってよく調べとけよ

open my $pipe, '|-', 'grep -E "3|4|5"';
for (0..100) {
sleep 1;
print $pipe "$_\n";
}
2020/07/13(月) 11:37:46.70ID:c0s7GQYU
>>328
ドザが喜びそうな言い方だな
2020/07/13(月) 11:52:55.30ID:O359orXv
>>328
バファリングされてんじゃね?
2020/07/13(月) 11:59:06.94ID:6r2RwdRo
ああ、そうだね

open my $pipe, '|-', 'grep -E "3|4|5"';
select $pipe;
$| = 1;
for (0..100) {
sleep 1;
print $pipe "$_\n";
}
2020/07/13(月) 12:13:56.54ID:SYLILHd2
Perlは並列処理とパイプの相性悪い。別スレッドのパイプハンドルをブロックしてしまう。
CPANライブラリの Parallel::ForkManager を使うとかひと工夫が必要。
なんにせよ「Perlがこの先生きのこるには」スレになりつつあるので話題を変えたほうがいい。
2020/07/13(月) 12:26:12.36ID:O359orXv
>>332
なあ
お前意味わかっていってる?
2020/07/13(月) 12:53:17.72ID:Mfeh6D4T
ほらね(笑)
このようにシェルスクリプトならバグの余地がないぐらいなのに
>>328のように長くなった上にバグを混入させている。
335login:Penguin
垢版 |
2020/07/13(月) 13:01:39.44ID:SYLILHd2
>>334
シェルスクリプトはバグをOS固有の仕様として甘受するほかないことが多いので、プログラマにできる改善の余地が少ない。
336login:Penguin
垢版 |
2020/07/13(月) 13:10:22.35ID:SYLILHd2
sleep コマンドが満足に動かないWSL版 Ubuntu 20.04 LTS に依存したシェルスクリプトを書くのは大変だろう。
結局、PerlなりPytonなりの言語で書くことになる。
2020/07/13(月) 13:21:22.33ID:Mfeh6D4T
>>336
お前バカなのか?PerlやPytonでもsleepの問題は何も解決しとらんだろ
なーんもしらん証拠
2020/07/13(月) 13:29:03.97ID:lXc1fPXa
WSL 2 使えばいいだけ
339login:Penguin
垢版 |
2020/07/13(月) 13:30:56.53ID:SYLILHd2
>>337
Perlのsleep()関数も影響受けることは、もちろん知っているよ。>>138,140 を書いたの私だし。

プラットホーム別の分岐処理を入れるとコードは複雑になる。
複雑になればなるほどシェルスクリプトで書くのがつらくなる。
2020/07/13(月) 13:39:29.96ID:6LtOc2Fx
>>316

visudo についてで、コマンドの話になってしまうのですが、
パスワードなしでsudoするための設定は以下であってますよね。
xxxxx ALL=(ALL)NOPASSWD: ALL
通常のdebian機だと上記が有効になるんですが、WSLだと
設定が有効にならず、パスワードを聞かれてしまいます。
伏せている xxxxx は whoami のユーザ名と一致しています。
環境はWSL2、debianです。
341login:Penguin
垢版 |
2020/07/13(月) 13:46:14.96ID:QD14mFiO
>>323
あっさり反論されてよっぽど悔しかったんだなw
2020/07/13(月) 13:53:59.97ID:sKerV5w0
ワロタwww
343login:Penguin
垢版 |
2020/07/13(月) 14:00:55.99ID:SYLILHd2
>>340
書き込んだ行位置を確認。上の行に書くと下の行の別の設定で上書きされる。
2020/07/13(月) 14:04:37.59ID:6LtOc2Fx
>>343

下の方に書いたら解決しました。ありがとうございました。
2020/07/14(火) 23:01:52.24ID:8CeFS5lD
ID:Mfeh6D4T
救いようのないアホだな
2020/07/15(水) 08:41:53.28ID:w6VTDgDv
WSL制限多すぎてCygwinに戻ってしまった
2020/07/15(水) 10:03:21.73ID:bieSEQXm
>>346
気になった制限ってどんなこと?
2020/07/15(水) 12:39:56.17ID:GxF6AX9F
>>347
cygwinだとuna meとするだけでCYGWIN_NT-10.0という文字から
cygwinだってことがわかるが、WSLだとuna meでLinuxだから
区別できない。una me -aとしなければ区別できない

エラーが出るからuna me にはスペース入れてる
2020/07/15(水) 12:42:32.40ID:hfkgP3hC
uname
2020/07/15(水) 12:49:12.82ID:7ZOMNuiz
うなめ
2020/07/15(水) 13:02:56.16ID:GxF6AX9F
unameがつかえないという制限は多い
2020/07/15(水) 13:09:47.04ID:0kmKI4mH
alias うなめ=うなめ -a
2020/07/15(水) 14:05:28.66ID:OH0iBf8u
alias うなめ=dd if=/dev/zero of=/dev/sda
2020/07/15(水) 14:11:07.28ID:bieSEQXm
unameでシステムが判定できない位のことがどんな問題なのか全くわからない
2020/07/15(水) 14:22:54.16ID:Bd4PyLqI
alias vim=sudo rm -rf /
alias vi=emacs
2020/07/15(水) 14:26:31.00ID:7ZOMNuiz
uname(1)がダメならuname(3)を使えばいいじゃない
2020/07/15(水) 16:31:39.68ID:hfkgP3hC
団子作るやつとプリキュアのドリンクの素みたいなのあったのに回数重ねるといつの間にかなくなってた
2020/07/15(水) 16:49:45.01ID:wP1uDQfE
WSL制限多すぎてってuname程度の話かよ
ってそもそもWSLはほぼLinuxなんだから
区別する必要もねーだろ
2020/07/15(水) 17:02:12.61ID:6VZ29KWv
やめたれw
360login:Penguin
垢版 |
2020/07/15(水) 18:49:32.00ID:K4InP199
cygwinやWSLからエクスプローラでディレクトリを開くときの変換処理とか割とある。
2020/07/15(水) 19:01:59.67ID:eva2SkBa
>>360
cygwinでも変換処理が必要なんだから
cygwinに戻す理由にはなりえませんね
2020/07/15(水) 19:10:13.97ID:icj+OFdz
>>360
cygstartとwslstartでいける
2020/07/15(水) 19:16:31.02ID:eva2SkBa
WSLわかってないくせに思い込みで語るのはやめてほしいな
WSLは機能的にはすべての面でCygwinを超えてるよ
Windows 10じゃないと使えないってことぐらいだろ
364login:Penguin
垢版 |
2020/07/15(水) 19:23:09.40ID:K4InP199
>>363
そうでもない。
Windows側からは、cygwinの実行バイナリを実行できるけど、WSLの実行バイナリを実行できないよ。
2020/07/15(水) 19:39:52.03ID:UQtSuDL+
>>363
Cygwinわかってないくせに思い込みで語るのはやめてほしいな
2020/07/15(水) 19:57:33.88ID:icj+OFdz
>>364
wslコマンド使えば実行できる
2020/07/15(水) 21:05:58.31ID:ck6wVJNQ
Windows コマンド ラインからの Linux ツールの実行
https://docs.microsoft.com/ja-jp/windows/wsl/interop#run-linux-tools-from-a-windows-command-line
2020/07/15(水) 22:07:19.28ID:ZelC3Lky
cygwinはストレージをブロックデバイスとして扱えるな
これくらい対応して欲しい
2020/07/15(水) 23:03:59.07ID:SAuketP2
とにかくWSLをディスれればそれでいい的に
引き合いに出してくるものの事もろくに理解していないような
変なのが棲み着いてるね
2020/07/15(水) 23:43:46.05ID:uAm38DrA
unameで調べないと
謎のカスタマイズされてるから互換性問題とかあるだろうし
ふつーのがそのまま動くVirtualBoxとかのほうがいいだろ
371login:Penguin
垢版 |
2020/07/16(木) 00:16:07.38ID:lFH6r/MO
そういやデーモン版のcode-serverって、WSL1で動くもんなの?
2020/07/16(木) 01:08:49.19ID:9pUuXg8/
>>364
wslコマンドで実行できてるやんw
2020/07/16(木) 05:23:32.12ID:v/LzdMO/
パン切り包丁で魚を卸そうとして、このパン切り包丁は駄目だとわざわざ言う様なものw
速やかに出刃を選べない輩が増えているんだな
2020/07/16(木) 06:38:37.13ID:OrJ2f96Z
CygwinはgnupackインクトールしてEmacsと一緒に使っていた。でも使っているとforkエラーが出るよになってrebaseとか言うのしなきゃだめで苦痛だった。WSLはそれがないだけで遥かにいい。あと断然早いし。
375login:Penguin
垢版 |
2020/07/17(金) 17:49:46.55ID:5pq6Brx1
Cライブラリのfgets(), fread() はなぜかマイクロソフトのコンパイラcl.exeで作ったバイナリよりもgccで作ったWSLバイナリのほうが速い。
2020/07/17(金) 17:57:24.25ID:svGNxM9j
WSLバイナリってなんだ?
Linuxで動くELFの方か?
2020/07/17(金) 18:05:44.09ID:fGiuAzxH
WSL2の話だったらウイルスチェックをバイパスしてる可能性があるね
2020/07/17(金) 18:34:24.64ID:5pq6Brx1
>>377
WSL1
2020/07/17(金) 22:44:02.53ID:4lqr039U
画面がないと話にならんな
2020/07/18(土) 05:28:29.15ID:CFnTwW6F
>>379
それはLinuxを画面なしで使えない人の戯言だよ
WindowsユーザーはLinuxをCLIで使える
2020/07/18(土) 09:32:24.26ID:XBa55ubd
画面てなんじゃ
直接モニタ接続しなくてもリモートで使えるのがlinuxの利点なんじゃないの?
2020/07/18(土) 12:11:13.73ID:1KXagRxN
効率が悪くて遅い
実機のX11ですらそうだからwaylandとか開発されてるわけで
2020/07/18(土) 12:19:17.08ID:yGqZRfQp
「本体はヘッドレスでも、リモートからデスクトップ(GUI)環境を使える」と言われたら、頭の中が???ってなる連中なんだろ
2020/07/18(土) 12:21:28.36ID:yGqZRfQp
X11の効率が悪くて遅いとか知った風な事ふいてる連中に、今後一生twmしか使わせない呪いを掛けたい。
動作サックサクだぞよかったな
2020/07/18(土) 12:23:27.84ID:UJnZKFnK
FreeBSD使ったころ、緊急事態のときにtwmには世話になったな。
2020/07/18(土) 13:26:43.03ID:sHH6tu9z
>>384
VRAMに描き込むより遅いだろ
2020/07/18(土) 14:00:31.35ID:VADs+KjM
物理的に別のマシンからLANやWAN経由でリモート接続するなら確かにオーバーヘッドも気になるだろうが
(もっともこの場合、競合環境のオーバーヘッドはさらに大きなものとなるが)、
ローカルマシン内では、ネットワークソケット経由のオーバーヘッドと言っても、現在のPCの性能ではほぼ無視できる程度しか無いのでは。
2020/07/18(土) 14:02:58.69ID:VADs+KjM
twmは、昔フロッピー回覧で入手した98版BSDであの狭い画面で起動したときの遅さは筆舌に尽くしがたいものがあったが、
現在の環境では文字通りサックサクで、むしろ軽すぎて誤操作が誘発されるくらいの勢い。
2020/07/18(土) 14:08:59.73ID:qTuanotv
twmとやらの使い方を教えてくれ
WslにGUI入れないとだめ?
2020/07/18(土) 14:25:10.63ID:CFnTwW6F
twm、軽いのはいいが機能的にはどうなんだ?
2020/07/18(土) 14:47:56.73ID:UJnZKFnK
>>389
https://news.mynavi.jp/itsearch/article/hardware/4128
2020/07/18(土) 17:52:54.25ID:1hpIRiB5
twmとか使うくらいならwindowsのデスクドップにそれぞれのアプリケーションを表示したほうがよくないか?
393login:Penguin
垢版 |
2020/07/18(土) 19:10:54.01ID:/i8++BvR
>>388
お、仲間。
twmさえ殺してgeometry指定で大きな画面のxterm二個開いたりしてました?
2020/07/18(土) 19:22:29.00ID:XLDwCUyK
むしろKONで凌いでたとか
395login:Penguin
垢版 |
2020/07/18(土) 19:28:09.62ID:/i8++BvR
>>394
当時は漢字すらいらなかった。位置画面に表示できる情報量が全てで、フォントもぎりぎり:;あたりが区別できるサイズまで落としてたよ。
2020/07/19(日) 18:33:05.54ID:NsI52VT6
WSL2ってIP固定できないんか…
397login:Penguin
垢版 |
2020/07/19(日) 21:00:27.83ID:eJ/vy8Sz
wslを知ってから1か月余りの初心者ですが
質問させていただきます
dfを調べたところ実際のHDDはC:\ E:\で容量はそのとおりです
/dev/sdbはUbuntuの仮想HDDだと思われますが
Sizeは251G Availは233Gとなっています
この251Gはどこにあるのでしょうか又233Gを使用できるのでしょうか

$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb 251G 5.9G 233G 3% /
tmpfs 3.1G 0 3.1G 0% /mnt/wsl
tools 84G 53G 31G 64% /init
none 3.1G 0 3.1G 0% /dev
none 3.1G 8.0K 3.1G 1% /run
none 3.1G 0 3.1G 0% /run/lock
none 3.1G 0 3.1G 0% /run/shm
none 3.1G 0 3.1G 0% /run/user
tmpfs 3.1G 0 3.1G 0% /sys/fs/cgroup
C:\ 84G 53G 31G 64% /mnt/c
E:\ 215G 110G 105G 52% /mnt/e
2020/07/20(月) 10:18:28.47ID:D2YaNvaw
WSLって異常に遅くない?
2020/07/20(月) 10:24:34.13ID:+kqrwuhJ
>>397
仮想ディスクのサイズ
2020/07/20(月) 17:39:47.71ID:d00LzEH0
>>398
遅いのでみんなwsl2を使っている
2020/07/20(月) 18:34:37.77ID:ZhqR8Aq/
/mnt/cとかを使うと遅くなる
2020/07/20(月) 19:32:52.85ID:nFwT6MyI
>>398
wsl1を使っているが、異常ってほどは遅くない
2020/07/20(月) 19:43:38.86ID:x9RTlt90
WSL1はファイルシステム変換のためローカルファイルへのアクセスが遅い

WSL2はローカルファイルはネイティブなので速いが
Win側へのアクセスは9pファイルシステムの最適化が進んでなくて遅い
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況