process
processモジュールは、JSHアプリケーションで使用するために設計されています。
addShutdownHook()
現在のプロセスの終了時に呼び出すコールバック関数を追加します。
現在の実装では、JSHランタイムが管理する終了処理に入ったときに、このフックを呼び出します。
たとえば、スクリプトが正常に終了した場合や、process.exit()を呼び出した場合に実行します。
以下の場合は、呼び出しが保証されません。
SIGKILLやkill -9などの強制終了- OSまたはGoランタイムレベルの致命的な異常終了
process.on(signal, handler)で捕捉していないシグナルの既定動作による終了
捕捉可能なシグナルでクリーンアップが必要な場合は、process.on(signal, handler)内でクリーンアップを実行してから終了処理に進むようにしてください。
複数の終了フックを登録すると、登録の逆順に実行します。現在の実装では、フックがpanicや例外を発生させても、残りのフックは実行を続けます。
構文
addShutdownHook(()=>{})使用例
| |
注意事項
addShutdownHook()は、すべての終了状況で呼び出されるわけではありません。強制終了も含めて重要な処理を保護するには、ファイルのフラッシュ、外部トランザクションの終了処理、ロックの解放などをフックだけに依存せず、可能な時点で明示的に実行してください。
arch
ホストマシンのOSアーキテクチャを識別する文字列です。
一般的な値はamd64、aarch64です。
使用例
| |
argv
現在のプロセスに渡されたコマンドライン引数の配列です。
argv[0]: JSH実行ファイルの絶対パスargv[1]: 実行中のスクリプト名(またはパス)argv[2:]: スクリプトに渡された残りの引数
使用例
| |
chdir()
現在の作業ディレクトリを変更します。
pathが空文字列の場合、JSHは$HOMEとして解釈します。
構文
chdir(path)使用例
| |
cpuUsage()
CPU使用量情報を返します。
現在の実装はプレースホルダーであり、両フィールドとも数値0を返します。
返されるフィールド
usersystem
使用例
| |
cwd()
現在の作業ディレクトリのパスを返します。
使用例
| |
exit()
現在のプロセスを終了します。codeを省略すると、既定値は0です。
構文
exit([code])使用例
| |
which()
PATHからJavaScriptコマンドを検索し、解決したファイルパスを返します。
コマンドに.js拡張子がない場合は、自動的に追加します。
構文
which(command)使用例
| |
expand()
文字列内の$HOME、${HOME}などの環境変数を展開します。
構文
expand(value)使用例
| |
env
JSHランタイムの環境オブジェクトです。
使用例
| |
exec()
JavaScriptコマンドファイルを実行し、終了コードを返します。
構文
exec(command, ...args)使用例
| |
execPath
ホストOS上の、現在のプロセスの実行ファイルの絶対パスです。
使用例
| |
execString()
文字列で渡したJavaScriptソースコードを実行し、終了コードを返します。
構文
execString(source, ...args)使用例
hrtime()
高分解能の時刻タプル[seconds, nanoseconds]を返します。
以前のタプルを渡すと、その時点からの経過時間を返します。
構文
hrtime([previous])使用例
| |
kill()
指定したプロセスIDに、実際のOSシグナルを送信します。
pidは正の整数である必要があります。signalを省略すると、既定値はSIGTERMです。- 成功すると
trueを返します。 - 失敗すると
Errorオブジェクトを返します。 signalには、文字列の名前または数値のシグナル番号を指定できます。
文字列の名前は大文字と小文字を区別せず、SIG接頭辞を省略できます。
この別名のサポートは、process.kill()に適用されます。
例:
SIGTERMtermsigint
数値シグナルは、現在以下の値に対応しています。
| 数値 | リテラル |
|---|---|
0 | なし |
1 | SIGHUP |
2 | SIGINT |
3 | SIGQUIT |
6 | SIGABRT |
9 | SIGKILL |
10 | SIGUSR1 |
11 | SIGSEGV |
12 | SIGUSR2 |
13 | SIGPIPE |
14 | SIGALRM |
15 | SIGTERM |
signalの値0は、実際のシグナルを送信せずに、対象プロセスの存在と権限を確認するために使用できます。
Windowsのprocess.kill(pid, 'SIGINT')は、Unixのkill(2)のように実際のシグナルを直接送信する動作ではありません。
代わりに、対象のプロセスグループがSIGINTに近い割り込みとして認識できるよう、コンソール制御イベントの送信を試みます。
これはWindowsでNode.jsの割り込み動作にできるだけ近づけたものですが、ベストエフォートです。
対象はコンソールに接続したプロセスグループである必要があり、Windowsが制御イベントをルーティングできない場合は失敗します。
WindowsのSIGTERM、SIGQUIT、SIGKILLは、Unixのように異なる実シグナルとしてではなく、終了要求として扱います。
構文
kill(pid[, signal])使用例
| |
Windowsの割り込みの例
const process = require('process');
console.println(process.kill(12345, 'SIGINT'));Windowsが制御イベントをルーティングできない場合、process.kill()はErrorオブジェクトを返します。
プロセスの存在確認の例
| |
memoryUsage()
メモリ使用量情報をオブジェクトで返します。
現在の実装はプレースホルダーであり、すべてのフィールドに数値0を返します。
返されるフィールド
rssheapTotalheapUsedexternalarrayBuffers
使用例
| |
nextTick()
次のイベントループで実行するコールバックを予約します。
第1引数が関数でなければ、何もせずundefinedを返します。
構文
nextTick(callback, ...args)使用例
| |
now()
現在時刻をJavaScriptの日時オブジェクトで返します。
使用例
| |
pid
現在のプロセスのIDです。 値は数値(Number)で、現在のプロセスIDを表します。
使用例
| |
platform
ホストマシンのOSプラットフォームを識別する文字列です。
一般的な値は、windows、linux、darwin(macOS)です。
使用例
| |
ppid
親プロセスのIDです。 値は数値(Number)で、親プロセスのIDを表します。
使用例
| |
シグナルイベント
processは、EventEmitterのようにシグナルイベントを受信できます。
このドキュメントの時点では、以下のシグナル名に対応しています。
SIGHUPSIGINTSIGQUITSIGABRTSIGKILLSIGUSR1SIGSEGVSIGUSR2SIGPIPESIGALRMSIGTERM
シグナルイベントリスナーは、大文字と小文字を区別しません。
イベント名は、SIG接頭辞を含む形式にのみ対応しています。
たとえば、以下の名前は同じ動作になります。
SIGTERMsigterm
termなどの接頭辞のない別名は、シグナルイベント名として扱いません。
この値は、通常のEventEmitterのイベント名として扱います。
リスナーを登録すると、JSHがそのOSシグナルをイベントとして渡します。 リスナーがなければ、OSの既定のシグナル動作に従います。
使用例
| |
対応するリスナー登録の例
process.on('sigterm', handler);
process.once('SIGTERM', handler);
process.addListener('sigquit', handler);stdin, stdout, stderr
stdin、stdout、stderrのストリームです。
使用例
| |
title
現在のプログラムを識別する文字列です。
使用例
| |
uptime()
プロセスの稼働時間(秒)を数値で返します。
使用例
| |
version
JSHランタイムのバージョンを識別する文字列です。
使用例
| |
versions
ランタイムの詳細なバージョン情報を提供するオブジェクトです。
versions.jsh: JSHランタイムのバージョン文字列versions.go: Goランタイムのバージョン文字列
使用例
| |
which()
PATHからJavaScriptコマンドを検索し、解決したファイルパスを返します。
コマンドに.js拡張子がない場合は、自動的に追加します。
構文
which(command)使用例
| |
dispatchEvent()
JSHイベントループから、イベントエミッターオブジェクトにイベントを配信します。
イベントのスケジュールに成功するとtrue、イベントループが終了済みの場合はfalseを返します。
構文
dispatchEvent(target, eventName, ...args)使用例
| |
dumpStack()
デバッグ用に、指定した深さまで現在のJavaScript呼び出しスタックを出力します。
構文
dumpStack(depth)使用例
| |
expand()
文字列内の$HOME、${HOME}などの環境変数を展開します。
構文
expand(value)使用例
| |