コマンドラインの最大長を確認する

コマンドラインの最大長を確認する

コマンドプロンプトで実行するバッチ処理へ引数を指定する場合、コマンドラインが長くなってしまうことがある。
WindowsのCMD.exeはコマンドラインの長さの限界が短いため、気をつける必要がある。

WindowsXP以降の場合、8,191文字指定できる。
もう、動いているサーバはないと思うが、
Windows2000,NT4.0では2,047文字指定できる。

引数に環境変数を展開したりすると、コマンドラインがとても長くなってしまうことがある。
特に警告もなく、後ろが切れてしまうので注意が必要。

ちなみに、Linuxの場合はコマンドを実行して確認する。

1
2
$ getconf ARG_MAX
2621440

上記の結果は、Red Hat Enterprise Linux Server release 6.5 (Santiago)の場合。

macOS high Sierraでは

1
2
$ getconf ARG_MAX
262144

Red HatとmacOSとでは、コマンドラインの長さが一桁違った。どちらにしてもWindowsと比べたら圧倒的に長いことは確実だが。

同じタグの記事
同じカテゴリの記事

cronで特定の曜日のみ実行

cronで特定の曜日のみ実行

営業日のみ実行させたいバッチプログラムがある。
営業日と言っても、厳密にカレンダーを参照する必要はなく、土曜日・日曜日はスキップさせたい。

cronの登録例は下記の通り。
なお、フォーマットは「分 時 日 月 曜日 コマンド」。

1
0 20 1,5,10,15,20,25,30 * * /home/user01/command.sh

上記の例では、
曜日を問わず、毎月、1,5,10,15,20,25,30日、20時、0分に/home/user01/command.shが実行される。

カンマで複数の数字を区切れる。-で範囲を指定できる。

本題の曜日指定の実行。
土曜日、日曜日を除く、8時から20時までの間、/home/user01/command.shを実行する。

1
0 8-20 * * 1-5 /home/user01/command.sh

曜日は0-7で指定する。0と7が日曜日。

これで、月曜日~金曜日に処理が実行される。

同じタグの記事
同じカテゴリの記事