X



トップページLinux
1002コメント328KB
【Bash】Windows Subsystem for Linux【WSL】6
■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin
垢版 |
2019/06/16(日) 15:12:05.12ID:8OeAFa65
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】5
https://mao.5ch.net/test/read.cgi/linux/1553100855/
0300login:Penguin
垢版 |
2019/09/06(金) 16:39:05.58ID:NXjK5ULW
BSD3〜4.2の時はBSDの方が高機能
だったけど、SYSVでほぼ取り込みされてるからね

当時最先端だった筈のマイクロカーネル
陣営で生き残っているにはWindowsぐらいか
0301login:Penguin
垢版 |
2019/09/06(金) 17:39:24.25ID:Tf5BlgFr
MacOSXは一応Machの末裔だから、マイクロカーネルじゃないんですかね
まあ商用マイクロカーネルOSで最も普及してるのは確かにNTだなここ20年くらい
0302login:Penguin
垢版 |
2019/09/06(金) 18:19:45.87ID:NXjK5ULW
それを言うならNextだね
OMRONのLunaも無くなって悲しいね

カモメ時代のLinuxをフルボッコした奴ら
今頃どんな顔して生きて居るのでしょう?
0303login:Penguin
垢版 |
2019/09/06(金) 18:29:30.25ID:ULgFH9d1
昔からWindows(9x,NTすべて)はマイクロカーネルじゃないだろ。
どこにそんな情報があるんだ?
0304login:Penguin
垢版 |
2019/09/06(金) 18:37:27.54ID:NXjK5ULW
NTはマイクロカーネル
95はキマイラ
ってのが定説だけど

NTのDDK本の最初の翻訳本を作ったWinProgDDKの中野一人です

なお、翻訳時に単位を間違えたのは別之一人あるね
0305login:Penguin
垢版 |
2019/09/06(金) 19:28:11.69ID:Tf5BlgFr
いやだからそのNeXT OSのカーネルがMachパクってたんだろ…
Machは元々BSDのマイクロカーネル実装実験
読みはマッハじゃなくてマーク
0306login:Penguin
垢版 |
2019/09/06(金) 19:29:54.75ID:Tf5BlgFr
戦うプログラマーとか胃がキリキリしながら読んだなあ
NTも技術的にはVAXの系譜で由緒はわりとしっかりしてる
MSアンチにデタラメ垂れ流されてるけどNTは純然たるマイクロカーネル実装
0307login:Penguin
垢版 |
2019/09/06(金) 19:35:10.12ID:NXjK5ULW
アビー・テバニアンが盗人とな?
大学で学んだ事を産業化すると泥棒なのかね?
0309login:Penguin
垢版 |
2019/09/07(土) 11:51:26.88ID:vi1vhyFl
18975にしたらWSL2にしたUbuntuがアプリのアイコンから起動出来なくなった…(wsl、bashコマンドからはOK)

WSLのフィードバックは提供する内容がちょっと違うのね
0310login:Penguin
垢版 |
2019/09/07(土) 14:24:43.30ID:CN80yNZ7
ストア経由で入れてないから、WSLのアイコンが一つもないわ
0311login:Penguin
垢版 |
2019/09/07(土) 19:32:17.03ID:N6O++J7t
何をもってマイクロカーネルと定義するかにもよるけど、
特権モードで実行される部分をできるだけ少なくするという観点からはNTもMacOSも
全くマイクロカーネルではない

特にNTは3.1の時点でLinuxより特権モードで実行される部分が多い

NTはプロセス管理もメモリ管理もファイルシステムも全部Linuxと同様に特権モードで
動く単一バイナリのNTカーネルntoskrnl.exeで実行されている上に、レジストリ関係も
ntoskrnl.exeで実行されるので他のOSより特権モードで実行される部分が多い

さらに4.0でWIN32APIのグラフィック関係のGDI32.dllやUSER32.dllがユーザ
モードで動くCSRSS.exeへのメッセージ通信から、特権モードで動くwin32k.sysへの
システムコールになり、グラフィック関係が特権モードで動くようになった
Vista以降DirectX関係はユーザーモードで動くDWM.exeが関わるようになったけど、
10でもGDI関係はwin32k.sysへのステムコールのまま

NTのマイクロカーネル的な要素はサブシステムと呼ばれるユーザランドの側だけだよ
0312login:Penguin
垢版 |
2019/09/07(土) 20:49:23.22ID:nr7VVovK
重箱の隅つついてケチつけるのが目的で、手段はどうでもいい類の。
アップル無罪。
0313login:Penguin
垢版 |
2019/09/07(土) 20:52:39.26ID:fnKrLK3E
>>311
特権モードで実行される部分を少なくするのと
マイクロカーネルは全く関係ないんだけど、

自分から何を持ってマイクロカーネルと定義するか?と言っておきながら
間違った定義で、マイクロカーネルではないとするのはなんで?w
0314login:Penguin
垢版 |
2019/09/07(土) 21:10:36.55ID:N6O++J7t
>>313
君こそ何いっているの?

OSの機能を独立性の高いモジュールに分割し、システムコールやサブルーチン
コールではなく、相互依存性の低いメッセージ通信で各モジュール間をつなぎ、
できるかぎり、何でもできるがゆえ問題が生じやすい特権モードではなく、ユーザ
モードで実行されるサーバープロセスでするようにするのがマイクロカーネルの思想

例えばMINIXだと、プロセス管理はpm,ファイルシステムがfs、仮想メモリ管理のmm、
サーバの起動やドライバの管理がrs等のユーザーモードで動作するサーバーによって
プロセス管理やメモリ管理、ファイルシステム等のOSの基本機能が実現している

GNU HURDやQNXなども同じ

これらのマイクロカーネルOSとLinuxやWindows NT、MacOSは全く構造が違う
0315login:Penguin
垢版 |
2019/09/07(土) 21:30:35.77ID:8gCxtuxM
嫌、少なくとも3.xの頃はマイクロカーネルを自称していたよ。
本来の NT4 の実装に失敗して以降グダグダで
マイクロカーネルじゃ無いじゃ無いって意見はありかもしれないが
0316login:Penguin
垢版 |
2019/09/07(土) 23:31:25.77ID:fnKrLK3E
>>314
要件としては細かいモジュールに分けていればいいので
特権モードとかいうのは関係ない

例えばドライバが特権モードを使っていても、
カーネルとドライバが分離されていれば
マイクロカーネルになる
0317login:Penguin
垢版 |
2019/09/07(土) 23:35:26.81ID:fnKrLK3E
>>315
当時を振り返ればわかると思うが、3.xからNT4で何を変えたかと言うと
GPUドライバをカーネル空間(特権モードとは関係ない)に持ってきただけだよ
当時の性能では真のマイクロカーネルではパフォーマンスが悪かったから
別に完全にマイクロカーネルを諦めたわけじゃない。一部妥協しただけ
0318login:Penguin
垢版 |
2019/09/07(土) 23:48:15.61ID:A1/nmWHf
当時のというか現在でも結局理念通りの実装ではコンテキストスイッチの実行コストがバカにならず性能がスポイルされまくって非現実的なので
実用性を求めるOSではメッセージや実装によってはネットコードやファイルシステムの一部もカーネルモジュールで実行させるようになっている

理念通りに分割したままの実装なんて、実証用や学習用くらいじゃねえの?
何十MBもキャッシュを積んだ数GHz動作のプロセッサと高速で大容量のメモリをジャブジャブ使える今現在でさえこうなんだし
数10MHzかそこらのCPUとメモリでやってた頃なんて、原理主義的なマイクロカーネル実装では到底使い物にならなかっただろう
0319login:Penguin
垢版 |
2019/09/08(日) 07:47:42.28ID:mQ6eBwym
>>316
> カーネルとドライバが分離されていれば
> マイクロカーネルになる

ならLinuxはマイクロカーネルだねw

NTもLinuxもドライバはモジュールだよ
0320login:Penguin
垢版 |
2019/09/08(日) 07:54:03.91ID:mQ6eBwym
NTでは*.sysがカーネルモードで動作するモジュールで
Linuxでは*.koがカーネルモードで動作するモジュール

どっちもカーネルは普通のcall&ret命令でモジュールを呼び出しているから
この辺の構造はLinuxもNTも全く同じ

これをマイクロカーネルと定義するならLinuxもNTもマイクロカーネルになりまつ
0321login:Penguin
垢版 |
2019/09/08(日) 08:18:56.89ID:goRdJSg1
だからLinuxもマイクロカーネル化してきてるんだよ。
もっともNTほど細かく別れてない。ドライバ以外は結合しちゃってるから
0322login:Penguin
垢版 |
2019/09/08(日) 08:44:34.61ID:EIy27Hxn
コード見せる必要がない話だと饒舌になる
0324login:Penguin
垢版 |
2019/09/08(日) 14:15:13.31ID:9WRfv6CH
>>323
64bit版はいつ出るんや
待ちくたびれたで
0325login:Penguin
垢版 |
2019/09/08(日) 14:20:29.47ID:Gig+9KAY
俺様が認証したものがマイクロカーネルである。エヘン!

そんな訳ねえだろうに
0327login:Penguin
垢版 |
2019/09/08(日) 17:40:32.90ID:mQ6eBwym
>>321
> もっともNTほど細かく別れてない。ドライバ以外は結合しちゃってるから
いいえ

CentOS 7のカーネルだと*.ko.xzが約2500個、Windows 10のC:の*.sysが
約2400個だから同じぐらいだね
0329login:Penguin
垢版 |
2019/09/08(日) 18:36:14.33ID:goRdJSg1
>>327
Linuxはドライバ以外が結合してるって言ってるのに、

Linuxのドライバは結合されてないという証拠持ってきて
何をしたいの?
0330login:Penguin
垢版 |
2019/09/08(日) 20:17:32.81ID:mQ6eBwym
>>328
分割度合いの違いに関する客観的な根拠が他にあるなら具体的に示してね

>>329
何が言いたいの?

あのLinuxのモジュールって、例えば、kernel/fs以下にはxfs.koとかfat.koとかvfat.koとか
普通にファイルシステム関係のコードが分割されて存在しているんだけど
0331login:Penguin
垢版 |
2019/09/09(月) 02:38:07.79ID:1u6ikWAj
何が言いたいの?
Linuxはモノリシックをすてマイクロカーネルになった
NTを真似たのです。ってことかなぁw
0332login:Penguin
垢版 |
2019/09/09(月) 02:56:07.24ID:gczD1/gM
利便性と速度で結局どっちもハイブリッドにないましたちゃんちゃん
これだけのことだろ?何長々と揉めてんの?
0333login:Penguin
垢版 |
2019/09/09(月) 03:23:18.63ID:1u6ikWAj
コンピュータの性能が十分に高ければ
マイクロカーネルの方が良いという話
0334login:Penguin
垢版 |
2019/09/09(月) 04:00:08.74ID:Tz6RwKtw
サブシステム毎の固有ハンドルが返って
くるマイクロカーネルの方が不便だよ
0335login:Penguin
垢版 |
2019/09/09(月) 09:34:30.15ID:seDrsibz
特権モードで動作するOSの機能を分割してモジュール化するなんて50年以上前の
メインフレームの時代からある機能だしMSDOSだってそうだよ

> カーネルとドライバが分離されていれば
> マイクロカーネルになる

この定義だとNTだけでなくMSDOSもWindows 9xもFreeBSDもSolarisも全部マイクロ
カーネルになる

特にWindows 9xなんて単一のバイナリのカーネルがあるんじゃなくてvmouse.vxdや
vkb.vxd、vwin32.vxd等特権モードで動作する複数のvxdでカーネルが構成されているから、
この定義だとWindows 9xの方がNTよりマイクロカーネル的なOSになる

バカじゃないの
0336login:Penguin
垢版 |
2019/09/09(月) 09:57:42.20ID:Tz6RwKtw
今となっては、ドライバー付与する度に
カーネルコンパイルするOS(ex.Solaris1)
とかの方がマイナーですね
0337login:Penguin
垢版 |
2019/09/09(月) 10:28:46.09ID:v2CNR0Gw
はいはいモノシリックカーネルモノシリックカーネル
0338login:Penguin
垢版 |
2019/09/09(月) 10:33:18.03ID:p8g0xDL6
自前でカーネルをビルドする前提の話だけど、組み込むのとモジュールにするのでパフォーマンスに差って出るのかな
0339login:Penguin
垢版 |
2019/09/09(月) 10:45:54.84ID:Tz6RwKtw
セグメント超えをする時にオーバーヘッド
はあるでしょうが、特権超えの方が大きいから
無視しても良いんじゃない?
0340login:Penguin
垢版 |
2019/09/09(月) 13:34:34.90ID:fUzUiIyk
windowsのコマンドとパイプでつなぐときに改行コード変換するオプションとかあります?
sed噛ましたりじゃなく
0341login:Penguin
垢版 |
2019/09/09(月) 13:36:37.55ID:1u6ikWAj
パイプというのはバイナリデータを含むデータを無変換で渡すものです。
そうじゃないと、curlで取ってきたtar.gzをローカルに保存せずに展開なんてできないでしょ
0342login:Penguin
垢版 |
2019/09/09(月) 14:01:48.36ID:fUzUiIyk
別に常に変換してほしいなんて言ってないんだけど
0343login:Penguin
垢版 |
2019/09/09(月) 14:15:33.53ID:1u6ikWAj
>>342
だからパイプやリダイレクトは基本的な設計思想として
「変換は一切しないものなんです」ってこと
これはUnixの頃からそういう思想だから

変換したいなら何らかのコマンドをフィルタとして間に入れるだけでしょ
0345login:Penguin
垢版 |
2019/09/09(月) 14:40:37.95ID:fUzUiIyk
>>343
間にwsl.exe入るじゃん
そいつに変換するオプションぐらいあったって罰は当たらないんじゃないの
0346login:Penguin
垢版 |
2019/09/09(月) 14:50:11.18ID:1u6ikWAj
入れる必要ないけど?
0347login:Penguin
垢版 |
2019/09/09(月) 14:57:06.44ID:rOov9as5
>>345
wsl.exeのオプションにしたら、常に変換する指定しかできないじゃん
0348login:Penguin
垢版 |
2019/09/09(月) 15:00:45.93ID:HHZb18rg
パイプでtrやsed噛ませて変換してからさらにパイプすればいいだけだよな
何を気にしてるのかよく分からん
0349login:Penguin
垢版 |
2019/09/09(月) 15:15:31.82ID:1u6ikWAj
UNIXの思想をわかってない。
単純なコマンドを組み合わせって大きな仕事をするものだ
0350login:Penguin
垢版 |
2019/09/09(月) 15:54:23.21ID:SszYAJmS
これに関連して色々試してみたら変な現象見つけた。
/mnt/c/Windows/System32/PING.EXE
/mnt/c/Windows/System32/PING.EXE|cat
この2つで出力結果が違う。出力は対象指定してないってヘルプが出るんだけど、cat通すと英語になる。
パイプじゃなくてファイルにリダイレクトしても同じ。
これ既出?ググったけど、WSL環境を日本語化するってページがノイズになって情報が出てこない。

ついでに他に試した結果。
英 語: /mnt/c/Windows/System32/PING.EXE>test.txt
日本語: (/mnt/c/Windows/System32/PING.EXE)
英 語: (/mnt/c/Windows/System32/PING.EXE)|cat
英 語: echo "$(/mnt/c/Windows/System32/PING.EXE)"
日本語: while true;do /mnt/c/Windows/System32/PING.EXE;break;done
英 語: echo|while read dummy;do /mnt/c/Windows/System32/PING.EXE;done
英 語: echo|/mnt/c/Windows/System32/PING.EXE
英 語: /mnt/c/Windows/System32/PING.EXE</dev/null
日本語: echo;/mnt/c/Windows/System32/PING.EXE
0351login:Penguin
垢版 |
2019/09/09(月) 17:00:12.23ID:1u6ikWAj
しらんけどコードページが変わってるとかじゃねーの?
0352login:Penguin
垢版 |
2019/09/09(月) 17:36:02.86ID:dKQ3IFsc
>>350
/mnt/c/Windows/System32/PING.EXE
そのままCP932で出力されるので、コンソールはchcp 932の状態になる→UI言語は日本語

/mnt/c/Windows/System32/PING.EXE|cat
パイプを挟むとUTF-8で出力されるので、コンソールはchcp 65001の状態になる→UI言語は英語

ということだと思う。
0353login:Penguin
垢版 |
2019/09/09(月) 17:56:53.04ID:dKQ3IFsc
ちと違うな

通常はコンソールに表示する段階でUTF-8(CP65001)に変換される
PING.EXEはCP932の状態で実行→UI言語は日本語

パイプやリダイレクトを通す場合は変換されてはまずいので
PING.EXEを最初からUTF-8(CP65001)の状態で実行→UI言語は英語

こんな感じか?
0354login:Penguin
垢版 |
2019/09/09(月) 18:47:10.06ID:Xs3BbWRh
>>346
まじか
どうやんの?

>>349
それ誰か言ってくるだろうと思ってた
でもWindowsやん
0355login:Penguin
垢版 |
2019/09/09(月) 23:50:59.10ID:yavo0W6n
>>337
モノリスって言ってから書くこと
0357login:Penguin
垢版 |
2019/09/09(月) 23:58:34.34ID:mJfPaOkM
その零度バルブ
行く津島神社
0358login:Penguin
垢版 |
2019/09/10(火) 00:02:17.94ID:LVg32OTI
桃尻っ娘喰う寝る
0359login:Penguin
垢版 |
2019/09/10(火) 08:30:41.19ID:bfEzxUzl
マウント乞食合戦不毛
0360login:Penguin
垢版 |
2019/09/10(火) 08:38:12.80ID:gCS8ucYN
WSLのbash上で「ping /?」と入力するとなぜか文字化けしない日本語ヘルプが表示されるんだが、
「ping /? | less」や「ping /? > aaa.txt」などのように|や>で出力をパイプでつなぐと英語表示になる。
0361login:Penguin
垢版 |
2019/09/10(火) 16:35:07.02ID:ux9dqJdd
>>359
「どうぞ、この哀れなわたくしにfuse_mountのおめぐみぉぉ…」
「なにを言う!おまえは職業乞食だろ!だんなぁ、fuse_mountは本当に憐れなこっちにめぐんでくだせぇ」
0362login:Penguin
垢版 |
2019/09/10(火) 17:30:17.26ID:tC1o/nxe
DOKANで我慢しろや
0363login:Penguin
垢版 |
2019/09/12(木) 01:24:11.99ID:YKBBigoY
    (⌒⌒)
     ii!i!i   ドッカーン!
    ノ~~~\
,,,,,,,/`・ω・´ \,,,,,,,,,,
0364login:Penguin
垢版 |
2019/09/12(木) 22:59:44.75ID:gBBCTk35
WSL1 と WSL2 はどちらがよ
0365login:Penguin
垢版 |
2019/09/13(金) 09:32:40.54ID:nNtGCokd
insider build 18980でOS起動不可になっちゃったわ
0366login:Penguin
垢版 |
2019/09/13(金) 14:57:32.86ID:ALlRem54
sudo codeした時に、codeコマンドがないって言われるのはどうしたらいいんだろ
そもそもWSL内でcodeコマンドとか打った時って、どういう仕組みでWindows側のVSCodeが起動するんだぜ?
0367login:Penguin
垢版 |
2019/09/13(金) 15:12:06.52ID:Vhvr3dxH
>>366
パスが通ってない
そもそもインストールできていない
wsl側からでもwindowsアプリは普通に実行できる
0369login:Penguin
垢版 |
2019/09/13(金) 15:15:05.44ID:BsaJRz3F
code.exeなんじゃない?

WSLからWinアプリが動くのはパスが通ってるのとbinfmtの会わせ技だったかと
0371login:Penguin
垢版 |
2019/09/13(金) 16:22:30.84ID:iotwLXEI
せめてLinuxの起動の仕組みぐらいは理解してほしいね
0373login:Penguin
垢版 |
2019/09/13(金) 23:42:25.30ID:ALlRem54
すまん、sudo "$PATH"とか無駄なことして、パスが通ってるつもりになってたわ
0374login:Penguin
垢版 |
2019/09/14(土) 10:43:05.15ID:gT/str77
>>209
× Windows では、fork が無い
○ Windows の Ruby では、fork が無い
0376login:Penguin
垢版 |
2019/09/14(土) 11:04:09.48ID:rvwPFEGC
どううまくいかないのか書かないのかな?
インストールできても初回の起動に失敗するとか
仮想NICが認識されないとか
0377login:Penguin
垢版 |
2019/09/14(土) 15:15:08.34ID:cEInVzqw
動かない、動かない、とにかく動かない!
俺様が間違ってるわけないんだからM$が糞に決まってる!
M$M$M$!!!!
0378login:Penguin
垢版 |
2019/09/14(土) 21:30:07.33ID:shiQ5u4b
妹と一緒で設定が甘いと不味いんじゃね?
0379login:Penguin
垢版 |
2019/09/15(日) 14:17:24.99ID:G8M/8eYo
脳内設定の妹かー、設定はちゃんと作り込まないとな
0380login:Penguin
垢版 |
2019/09/17(火) 21:17:24.23ID:2Wuln3eF
WSLって、forkとファイルアクセスが遅いだけで実行速度自体が遅いわけでもないんだな
遅かったシェルスクリプトをbash互換からzshビルトイン使ってfork減らすようにして、ディスクアクセスもキャッシュするようにしたらそこそこ速くなった
そこまでするなら適当なLL使った方が良い気がするけどw

>>378,379
Linuxと同じ程度には仮想化環境にも対応してるから、妹と違って設定適当でも美味しく頂けるw
0381login:Penguin
垢版 |
2019/09/17(火) 21:58:16.92ID:Iz3D1T+6
scoop使ってruby入れたら上手くいかなかったけどWSLでrbenv使ってruby入れたら上手くいった
WSLはいいものだと思う
0382login:Penguin
垢版 |
2019/09/17(火) 23:35:15.97ID:QjPEhLGg
>>380
具体的にどんな変更をしましたか?
zshで遅くて困っています。
0383380
垢版 |
2019/09/18(水) 04:36:09.12ID:hb4qCmCH
>>382
具体的にって言ってもやってる事が違うから、どれ位、参考になるか分からんぞ。長文
ビルトイン使う例として、
 dir=$(dirname $path);
 file=$(basename $path)
 ext=$(echo $path | sed -E 's/^.*\.([^\.]+)$/\1/g')
みたいにしてたのを
 dir=${path:h}
 file=${path:t}
 ext=${path:e}
にするとか

sedやtr使ってた所で正規表現なしでもいけるのは${%%}${:#}${//}とかで置き換えたり
大文字小文字変換とかも変数の展開フラグでできる
正規表現が必要な所は、1箇所にまとめた上で、パイプじゃなくて、;でつなぐとか
 ret=$(echo $base | sed -E 's/aaa/bbb/g;s/ccc/ddd/g;y/abc/ABC/')
パーツパーツでコピペで使いまわしにくくなるけど、forkは減らせる
文字列検索とかもgrepなしで変数展開フラグでいける

文字列のjoinでj:使うとか
 before=(a b c d)
 after="'"${(j:', ':)before}"'"
 echo $after # 'a', 'b', 'c', 'd'
他にも配列も検索とか、和差積とかも出来る

find使ってる所も結構ビルトインで行ける
 for zip in $(find . -name '*.zip');do 〜 ;done
  ↓
 for zip in **/*.zip;do 〜 ;done
GLOBSTARSHORTつけてたら**.zipでOK

続く
0384380
垢版 |
2019/09/18(水) 04:38:11.72ID:hb4qCmCH
続き
変数名の局所化の為にサブシェル使う所も、zshなら無名関数でいける(forkしない)
local ret;
(){
 local tmp=$1 tmp2=$2
 〜なんか変数使って処理
 ret=$tmp3
} $base1 $base2

ビルトインとか配列検索や文字列置換とかはmanの14,15章に載ってる。これ流し読みして、ビルトインで行ける所を洗い出す。日本語は多分ない。
ttp://zsh.sourceforge.net/Doc/Release/index.html
情報量はドキュメントに比べると少ないけど参考になった日本語サイト
変数とかフラグとか:ttps://gist.github.com/sho-t/d9cdf8271b3de7c4238739e523490542
findを使わないファイル検索:ttps://qiita.com/mollifier/items/1c4a4930a89aa75e5ced
配列操作:ttps://qiita.com/mollifier/items/f897b3fddd2d10369333

コンパイルが有効な場合もある。これをファイルの頭に入れとくと更新時だけ自動でコンパイルする(勿論手動でやっても良い)
(){
 local srcFile
 for srcFile in ${1:h}/*.sh; do
  local zwc="$srcFile"'.zwc'
  if [ ! -e $zwc -o "$srcFile" -nt "$srcFile"'.zwc' ]; then
   zcompile "$srcFile"
  fi
 done
} $0
この場合ファイルを分割してsourceしてるから、for文で回してるけど、スクリプトが1つのファイルなら、forはいらない。単純に$0に.zwcつけたのだけやれば良い

ファイルのキャッシュは特殊な処理だから参考にはならんと思うから省略。一般的に使えるのは、>>で何度も書き込むんじゃなくて、変数に入れて一気に書き込むとか(データ量と搭載メモリによっては逆効果)
ファイルアクセスを細かくやるとウイルスチェックが異常に重いから、実行時はリアルタイム保護切った方が良い

結論。面倒。過去の資産を使いまわすのでなければLLでやった方が良い
0385login:Penguin
垢版 |
2019/09/18(水) 09:30:26.97ID:8ey55UCF
結論の一行だけでよかった説
shell使わずにLLで書き直せばいい。それでもI/Oまわりで遅いんだけど。
0386login:Penguin
垢版 |
2019/09/18(水) 10:55:24.45ID:TxcKVUJc
そこまでやるともう別物だし
メンテも面倒になりそうだし
嬉しみが無い
0387login:Penguin
垢版 |
2019/09/18(水) 13:55:48.31ID:kqNGo6DB
100万プロセスとか起動するなら、Ruby でも使えば?

外部コマンドを呼ばなければ、1プロセスで済む
0388login:Penguin
垢版 |
2019/09/18(水) 15:44:52.63ID:vFx0TUD/
rubyで何が解決するのか
0389login:Penguin
垢版 |
2019/09/18(水) 17:41:21.56ID:kqNGo6DB
>>383
Ruby なら、こういう感じ

file_path = "tmp/a/b.tar.gz"

p File.dirname( file_path ) #=> "tmp/a"
p File.basename( file_path ) #=> "b.tar.gz"
p File.extname( file_path ) #=> ".gz"
0390login:Penguin
垢版 |
2019/09/18(水) 18:41:30.04ID:AfDZfpXw
単純な計算。
100万プロセスが本当なら、1プロセス256kbとして
1000000×256kb=256000000kb=250000MB
=244GBの主記憶が必要。
という事は、NUMA機がいるなぁw

設定を妹並には煮詰めないと
0392login:Penguin
垢版 |
2019/09/18(水) 19:53:59.09ID:g3JkWPuO
bashのサブプロセスもなかなか便利よ
0393login:Penguin
垢版 |
2019/09/18(水) 20:39:03.04ID:AfDZfpXw
>>391
ならruby使う必要無いな

布教活動止めれ
0394login:Penguin
垢版 |
2019/09/18(水) 20:44:19.13ID:qx33F50J
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < まーたはじまった
|   ,;‐=‐ヽ   .:::::|    \_______
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\
0396login:Penguin
垢版 |
2019/10/01(火) 10:20:52.41ID:k7q3ZPE9
WindowsPCを渡された・・・orz
WSLが入ってたのでXサバ入れてアプリだけでもと思った・・・
WSLから立ち上げたEclipseで日本語が入力できねぇ・・・
(-_-);
トイレで独り乾いた涙を流すおっさんが出来上がった。

ググる先生、トイレで大活躍w
0397login:Penguin
垢版 |
2019/10/01(火) 10:27:44.17ID:mUwF5icW
Windows版Eclipseを使えばいいだろ
GUIアプリに関してはほぼ全てWindows版があると思っていい
0398login:Penguin
垢版 |
2019/10/01(火) 11:10:49.38ID:3cJv3qDf
Linuxがないと死んじゃうおじさんなんでしょ
0399login:Penguin
垢版 |
2019/10/01(火) 11:13:22.28ID:LHN3gOCz
そんなおじんさん、いるの?
■ このスレッドは過去ログ倉庫に格納されています

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