.lua
ファイルからbashスクリプトを実行する必要があります。
os.execute ("/path/to/file.sh")
ファイル.sh:
#!/bin/bash
route add 149.36.98.78 reject
file.shの権限は次のとおりです。[-rwxr-x---] root www-data
「Arg list too long」エラーが発生し、bashコードをluaに直接挿入すると、同じエラーが発生します。
os.execute ("route add 149.36.98.78 reject")
だから、私は完全なbashコードが引用符内で実行されるからだと思います。参照:https://stackoverflow.com/q/11475221/10286151
私のLimit.hの定数は次のとおりです。
#ifndef _LINUX_LIMITS_H
#define _LINUX_LIMITS_H
#define NR_OPEN 1024
#define NGROUPS_MAX 65536 /* supplemental group IDs are available */
#define ARG_MAX 131072 /* # bytes of args + environ for exec() */
#define LINK_MAX 127 /* # links a file may have */
#define MAX_CANON 255 /* size of the canonical input queue */
#define MAX_INPUT 255 /* size of the type-ahead buffer */
#define NAME_MAX 255 /* # chars in a file name */
#define PATH_MAX 4096 /* # chars in a path name including nul */
#define PIPE_BUF 4096 /* # bytes in atomic write to a pipe */
#define XATTR_NAME_MAX 255 /* # chars in an extended attribute name */
#define XATTR_SIZE_MAX 65536 /* size of an extended attribute value (64k) */
#define XATTR_LIST_MAX 65536 /* size of extended attribute namelist (64k) */
#define RTSIG_MAX 32
#endif
どうすれば解決できますか?私はそれをARG_MAX
次のように変更しようとしました。
ARG_MAX 29107299
しかし、それは何も変えません。 Ubuntu 16を使用してください。
この問題を検索すると、問題が原因で発生したことに気づきました。ファイルはARG_MAX
定義されていますが、ファイル内にあるためわかりませんが、これを行うと、次の結果が表示されます。ARG_MAX
/usr/include/linux/limits.h
limits.h
ARG_MAX
131072
getconf ARG_MAX
2621440
答え1
これエラーリストあなたはすでに引用していますはい貼り付けボックスあなたを誤解しています。
表示されるエラーは数字7ですが、これはプログラム終了コードであり、システムエラーコードではないことはほぼ確実です。彼らはまったく関係がありません。
実際の問題は簡単だと思います。同じ拒否パスを2回追加しようとしています。
# route add 152.48.25.29 reject; echo SS=$?
SS=0
# route add 152.48.25.29 reject; echo SS=$?
SIOCADDRT: File exists
SS=7
route
存在しないパスを削除しようとすると、同じ終了コードも受け取ります。
# route delete 152.48.25.29 reject; echo SS=$?
SS=0
# route delete 152.48.25.29 reject; echo SS=$?
SIOCDELRT: No such process
SS=7
この問題を解決するには、ラッパーを管理する必要があります。拒否パスを追加する前に、これをテストしたり、単にエラーの返却を削除したりできます。この例は2番目の(簡単な)アプローチをサポートしていますが、他のオプションを選択することもできます。
#!/bin/bash
route add 152.48.25.29 reject 2>/dev/null
exit 0
"$1"
(あなたはIPアドレスをそのまま挿入するのではなく、スクリプトにパラメータを渡して引用する方法を知っていますか?)