以前にOpenVMSを使用した時には、「バッチキュー」というものがありました。一連の処理をスクリプト(コマンド・プロシージャ、通称コマプロ)としてファイルを作成しておき、それをバッチキューに登録しておくと、キューがFIFOとして処理をしてくれます。UNIXで言うところのバックグラウンド処理のようなものですが、それとバッチ処理は同じではありません。
UNIXでコマンドラインの末尾に「&」を付けてバックグラウンド処理にした場合、何の制御もなされないので、無茶をすればマシン負荷が急上昇してしまうでしょう。またUNIXには「batch」とか「at」というコマンドが用意されていますが、UNIXにはバッチキューの仕組みが用意されていないので、コマンドが「batch」だとしてもバッチ処理にはなりません。
MS-DOSや今日のWindowsでも、拡張子を「.bat」として「バッチファイル」というものを作成することがありますが、これもまたバッチ処理とは関係ありません。MS-DOSを開発していた当初は、当時の汎用機におけるバッチジョブのことが頭の片隅にあったのかもしれません。しかしMS-DOSのバッチファイルと汎用機のバッチ処理は、全く関係ありません。
FreeBSDやLinuxのようなUNIXの世界にも、OpenVMSや汎用機のようなバッチキューの仕組みがないのだろうかと、ずっと探していました。このような疑問を相談すると、日常的にUNIXを利用している人々は汎用機などの利用経験が浅いのか、なかなか問題意識が理解されません。Message Passing Interfaceを使えば良いなどと助言されたこともありますが、方向性が違う気がします。またPortable Batch Systemというものもあるようで、これが希望するものに近いかもしれませんが、ちょっと違うような気もします。
UNIXの設計思想と汎用機の世界観は、ずいぶん離れている気はするのですが、それでもUNIXの世界で汎用機的なバッチキューの仕組みを必要とする状況はあるのではないかと思います。きっと誰かが何か作っているはずだと思い、以前ならGoogleで検索し、最近ならGeminiに尋ねてみたりしましたが、紹介されるのはMPIだったりPBSだったりして、私が求める方向の回答がありません。
そんな中で、ふとpueueというものがあることを「Linuxメモ : あると便利かもしれないRust製コマンドラインツール」で知りました。こういうものを求めていたのです。RUSTで作成されているようです。どのようなものなのか検証するために、VirtualBOX上のUbuntu 24.02 LTSで確かめてみようと思いましたが、aptでインストールできるパッケージは存在しないようです。そこで、まずaptでRUSTの環境を入れ(apt install rustc)、その後にcargoでpueueを入れました(cargo install pueue)。インストール先が「~/.cargo/bin」になっているので、PATHを通しておく必要があります。
まだ簡単に動作を確認しただけですが、バッチキューのような仕組みが提供されており、気に入りました。
0 件のコメント:
コメントを投稿