$ ulimit -n
1024
$ ulimit -Hn
4096
groovy> ['bash', '-c', 'ulimit -n'].execute().text
Result: 4096
groovy> ['bash', '-c', 'ulimit -Hn'].execute().text
Result: 4096
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringWriter;
import java.io.Writer;
public class LinuxInteractor {
public static int executeCommand(String command, boolean waitForResponse, OutputHandler handler) {
int shellExitStatus = -1;
ProcessBuilder pb = new ProcessBuilder("bash", "-c", command);
pb.redirectErrorStream(true);
try {
Process shell = pb.start();
if (waitForResponse) {
// To capture output from the shell
InputStream shellIn = shell.getInputStream();
// Wait for the shell to finish and get the return code
shellExitStatus = shell.waitFor();
convertStreamToStr(shellIn, handler);
shellIn.close();
}
}
catch (IOException e) {
System.out
.println("Error occured while executing Linux command. Error Description: "
+ e.getMessage());
}
catch (InterruptedException e) {
System.out
.println("Error occured while executing Linux command. Error Description: "
+ e.getMessage());
}
return shellExitStatus;
}
public static String convertStreamToStr(InputStream is, OutputHandler handler) throws IOException {
if (is != null) {
Writer writer = new StringWriter();
char[] buffer = new char[1024];
try {
Reader reader = new BufferedReader(new InputStreamReader(is,
"UTF-8"));
int n;
while ((n = reader.read(buffer)) != -1) {
String output = new String(buffer, 0, n);
writer.write(buffer, 0, n);
if(handler != null)
handler.execute(output);
}
} finally {
is.close();
}
return writer.toString();
} else {
return "";
}
}
public abstract static class OutputHandler {
public abstract void execute(String str);
}
public static void main(String[] args) {
OutputHandler handler = new OutputHandler() {
@Override
public void execute(String str) {
System.out.println(str);
}
};
System.out.print("ulimit -n : ");
LinuxInteractor.executeCommand("ulimit -n", true, handler);
System.out.print("ulimit -Hn : ");
LinuxInteractor.executeCommand("ulimit -Hn", true, handler);
}
}
此程序的输出:
$ java LinuxInteractor
ulimit -n : 4096
ulimit -Hn : 4096
为什么在Java中的行为是相同的。是java设置ulimit。提前谢了。
Groovy在它的启动脚本中将这个限制设置为最大。
在StartGroovy:160
中:
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query businessSystem maximum file
descriptor limit: $MAX_FD_LIMIT"
fi
fi
结果是jvm自己设置了这个限制。我不知道为什么groovy也要改变它。尝试:
java -XX:-MaxFDLimit LinuxInteractor
问题内容: 目前显示。我想将其增加到。我已经编辑了“ /etc/sysctl.conf”并放入了。我还编辑和更新了硬值和软值。但是ulimit仍然显示。完成所有这些更改后,我重新启动了笔记本电脑。我可以访问root密码。 在-中添加了以下几行 我还添加了以下内容- 我已经尝试了其他论坛上给出的所有可能方式,但是我可以达到的最大限制,不能超过此上限。可能是什么问题? 我进行此更改是因为引发最大打开文
我有一个linux用户,软虚拟内存限制(ulimit-v)设置为aroud 5GB。 考虑到这一点,我试着做: 我的问题是:我关于ulimit-v>=VmSizes之和的假设正确吗?如果不是,软限制实际上是什么意思?是否有可能超过特定用户的软限制,并仍然可以接受它? 顺便说一句,ulimit-v-h被设置为unlimited,这有什么不同。
问题内容: 我的目的是从golang程序中设置ulimit -n,这样我就不必全局设置它,而将其限制在程序中。 找到相同的系统调用setrlimit和get rlimit。(http://linux.die.net/man/2/setrlimit) 但是,当我尝试使用相同的示例程序时,在设置值时出现错误,提示参数无效。 获得的输出为: 因此,我能够获得rlimit设置限制失败并返回错误。即使失败,
问题内容: 运行我的应用程序时,有时会出现关于的错误。 运行报告该限制为1024。如何将限制增加到1024以上? 编辑 导致权限错误。 问题答案: 您可以随时尝试执行。这只会重置当前shell的限制,并且您指定的数字不得超过硬限制 每个操作系统在配置文件中都有不同的硬限制设置。例如,可以在从/etc/system引导时设置Solaris上的硬打开文件限制。 在OS X上,必须在/etc/sysct
我搜索了一个关于这个的现有问题/答案,但没有找到任何东西。 ulimit在Linux上提供的信息是否可以在跨平台本机Java代码中使用?
问题内容: 我在linux ubuntu 17.10上运行代码 此代码返回“无限” 但是每当我从终端运行命令时,我都会得到1024。 为什么这些数字不同? 问题答案: 如果从命令行运行相同的命令,则会得到相同的结果: 这是因为仅查看紧随其后的参数。的不是此参数的一部分,并且被代替而不是分配作为位置参数()。 要运行,需要成为该参数的一部分: 换句话说,您应该使用: